bet koks objektas paverčiamas klasės kintamuoju, įvykdžius
blessnuoroda_į_objektą[,klasė]
priverčia objektą "elgtis" pagal klasės
"taisykles"funkciją
bless, kuriai jis yra pirmas argumentas
blessnuoroda_į_objektą[,klasė]
priverčia objektą "elgtis" pagal klasės
"taisykles"
jei objektas jau buvo "pašventintas" kažkokios klasės atstovu, tai ankstesnis
"šventinimas" panaikinamas
jei klasė nenurodoma, tai objektas priskiriamas tai klasei, kurios kontekste
vykdomas "šventinimas"
"šventinama" ne nuoroda, bet pats objektas!
@ISA
nusako, kurios klasės yra šios klasės "tėvai"; Klasės kintamasis @ISA
gali būti keičiamas programos vykdymo metu - tuo pačiu keisis ir paveldėjimo ryšiai
jei metodas nesurandamas klasėje, kuriai priklauso objektas, šio metodo ieškoma
"į gylį" per visas klases, kurios yra išvardintos @ISA masyve.
Klasės egzemplioriaus duomenys
yra saugomi objekte, kuris "šventinamas"
objektas gali būti tiek skaliaras, tiek paprastas ar asociatyvusis masyvas
rekomenduojama naudoti asoc.masyvą, nes jis leidžia lengviau "pasidalinti", kur
saugoti duomenis paveldėjimo atveju
Metodai
visos pakete apraštos funkcijos gali būti naudojamos kaip metodai
funkcijai kaip pirmas parametras perduodamas objektas, kuriam buvo iškviestas
konkretus metodas, arba klasė, jei vietoje objekto buvo nurodytas klasės pavadinimas
Metodų pavyzdžiai
package Demo;
sub pirmas{
my ($obj, @param) = @_;
...
}
sub naujas{
my ($klase, $par1, $par2) = @_;
...
return bless {};
}
Metodų iškvietimas
metodasklasėparametrai
metodasobjektasparametrai
klasė->metodas(parametrai)
objektas->metodas(parametrai)
(1) ir (2) forma leidžia, kad vietoje objekto/klasės būtų blokas, kuris ir
nusakytų, kam reikia iškviesti metodą;
(1) ir (2) formoje galimi nesusipratimai, nes jei parametrai
prasideda (, tai į funkciją bus perduodamas tik sąrašas iki atitinkamo
uždarančio skliausto!
Iškvietimo pavyzdys
$x = naujas Demo(1, 2); # Demo::naujas parametrai: par1=1, par2=2
pirmas $x 3, 4;
$x->pirmas(3,4); # tas pats