Klasės

Klasė
perl'e bet kuris modulis yra klasė
Klasės kintamųjų sukūrimas
bet koks objektas paverčiamas klasės kintamuoju, įvykdžius
bless nuoroda_į_objektą[,klasė]
priverčia objektą "elgtis" pagal klasės "taisykles"funkciją bless, kuriai jis yra pirmas argumentas
bless nuoroda_į_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
  1. metodas klasė parametrai
  2. metodas objektas parametrai
  3. klasė->metodas(parametrai)
  4. 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
	
Išsamesnis pavyzdys
Failas, aprašantis klasę "complex"
Failas su programa, naudojančia "complex" klasę
DESTROY
metodas yra kviečiamas prieš pat sunaikinant objektą