Moduł Class::Struct

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Moduł Class::Struct.

Co to jest?

Moduł Class::struct służy do tworzenia strukturo-podobnych klas. Tak utworzona klasa (w przeciwieństwie do zwykłej klasy) posiada pola określonego typu oraz automatycznie utworzone metody dostępu do tychże pól.

Jak to działa?

Moduł Class::struct eksportuje tylko jedną funkcję: struct. Funkcja ta przyjmuje jako parametr listę pól jakie klasa powinna zawierać wraz z typami tych pól, oraz ewentualnie nazwę klasy. Nowa klasa ma utworzony konstruktor new do tworzenia nowych obiektów oraz metody dostępu do poszczególnych pól. Pola mogą być typu:

scalar
$ - dany element jest wartością skalarną, a jego początkową wartością jest undef. Jeśli chcemy aby element zwracał referencję do skalara pole powinno być typu '*$'.
array
@ - pole jest tablicą z domyślną wartością (). Jeśli wywołamy metodę dostępową bez argumentów otrzymamy referencję do tablicy. Metodę można również wywołać z jednym lub dwoma argumentami, wówczas pierwszy argument oznacza numer elementu tablicy, a drugi (jeśli jest) wartość którą należy przypisać elementowi tablicy. Jeśli pole ma zwracać referencje do obiektów zamiast samych obiektów należy użyć typu '*@'.
hash
% - element jest hashem z domyślną wartością (). Metoda dostępowa działa w sposób analogiczny do metody dostępowej tablicy. Jeśli pole jest typu '*%' zwraca referencje do hasha.
class
nazwa_klasy - pole jest klasą.

Poniższy kod tworzy klasę Promotor zawierającą imie, nazwisko oraz stopień naukowy, oraz klasę Student zawierającą oprócz imienia i nazwiska, oceny studenta oraz promotora:

use Class::Struct; struct Promotor => { imie => '$', nazwisko => '$', stopien => '$' } struct Student => { imie => '$', nazwisko => '$', oceny => '@', promotor => 'Promotor' };

Ponieważ funkcja struct utworzyła za nas konstruktor oraz metody dostępowe, możemy od razu zacząć korzystać z utworzonych klas:

$ja = Student->new(); $ja->imie('Jan'); $ja->nazwisko('Kowalski'); $ja->oceny(0,5); $ja->oceny(1,5); $ja->promotor(Promotor->new(imie=>'Adam',nazwisko=>'Iksiński',stopien=>'prof. dr hab.'));

Dokumentacja

  1. Więcej na ten temat: http://cpan.uwinnipeg.ca/htdocs/perl/Class/Struct.html

Kontakt i informacje o autorze opracowania

Autor: P.S.

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.