Perl, Objektově orientované programování (50.díl)

Napsal O webu (») 20. 8. 2008 v kategorii Programování, přečteno: 1392×
obrazky/logo_perl.jpg

Tvorba objektů

Pro tvorbu objektu je nutné vědět, co objekt vlastně je. Je to odkazovaná libovolná datová struktura, která náleží k nějaké třídě a to proto, abychom mohli volat metody objektu. K označení příslušnosti objektu ke třídě slouží vestavěná funkce „bless“. Ta jako první argument přijímá odkaz a tomuto odkazu řekne, že to, na co odkazuje, patří ke třídě, jejíž jméno je zadáno jako druhý argument.



$objekt = {};

$trida = 'Trida';

bless $objekt, $trida;

// obsah navážeme na třídu

// nebo

bless $objekt, 'Trida'

// nebo

bless {}, 'Trida'




Objekty je také možné vytvářet pomocí metod, které se nazývají konstruktory. Objekty jsou pak získány jako návratové hodnoty těchto funkcí. Tyto metody obvykle pracují tak, že alokují nový prostor pro ukládání atributů, označí jeho příslušnost ke třídě a vrátí odkaz na takto alokovaný prostor. Bude-li konstruktor volán jako metoda třídy, pak jeho implementace může vypadat následovně:



sub new {

my $trida = shift;

my $objekt = {};

bless $objekt, $trida;

return $objekt;

}
// jiný způsob

sub new { bless {}, shift }




Pro volání objektu jako metody objektu pak bude zápis vypadat následovně.



sub new {

my $trida = ref shift;

my $objekt = {};

bless $objekt, $trida;

return $objekt;

}




Nastavení atributů


Při tvorbě konstruktoru je možné nastavit počáteční hodnoty atributů. Zatím jsme vždy vytvářeli objekt s prázdným seznamem atributů — vraceli jsme odkaz na prázdný hash. Provedeme-li inicializaci hodnot tohoto hashe, nastavíme tak hodnoty atributů v okamžiku vytvoření objektu.



sub new {

my $objek = shift;

my $trida = ref $objekt | | $objekt;

return bless {atribut => 1), $trida; }




Neznáme-li v okamžiku definice konstruktoru seznam atributů a jejich hodnot, můžeme je přidat jako seznam jeho argumentů.



// seznam atributů a jejich hodnot je v poli @_

sub new {

my $objek = shift;

my $trida = ref $objekt | | $objekt;

return bless {atribut => 1, @_ ), $trida;

}

// použití




A to by bylo pro dnešek všechno. V dalším díle se podíváme na metody. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.


Autor: Robert Habrman
Štítky: Perl
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel deset a třináct