Moduł Spiffy

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

O czym to jest

Moduł Spiffy to moduł ułatwiający programowanie obiektowe w Perlu w jasny - choć jeszcze nie ustandardyzowany - sposób. Moduł napisany został w taki sposób by wykluczyć konieczność korzystania z jakichkolwiek innych dodatkowych modułów oferujących wspomaganie programowania obiektowego, obiecując że użycie use Spiffy qw( -Base ); rozwiąże wszystkie nasze obiektowe problemy.

Opis

Spiffy pozwala nam zapomnieć o każdorazowym uwzględnianiu w pisanych przez nas metodach: my $self = shift; Kolejna możliwość skrócenia kodu pojawia się przy wywoływaniu funkcji z klasy nadrzędnej za pomocą metody SUPER. Na przykład kod: sub init{ my $self = shift; $self->metoda; $self->SUPER::init(@_); } możemy sprowadzić do postaci sub init{ $self->metoda; super; }

Dodatkowo Spiffy uzupełnia nasz kod o takie istotne linie kodu jak aktywowanie pragm use strict; oraz use warnings; oraz dodaje czasem nam umykającą 1; na końcu tworzonej przez nas klasy, dziedziczącej po Spiffy. Ułatwione jest również tworzenie metod prywatnych. Metoda zapisana poprzez my sub nazwa_metody staje się metodą prywatną i może zostać wywołana jedynie przez inne metody danego obiektu. Jest to jedna z najfajniejszych cech tego modułu!

Przykład bez $self

Korzystanie z modułu Spiffy pozwala na pominięcie jawnego odbierania instancji klasy w każdej metodzie obsługi. Dlatego np. kod poniżej: my $secret_door = sub { my $self = shift; ... }; sub knock { my $self = shift; if ($self->{counter}++ > 7){ $self->$secret_door(); } } w którym w każdej funkcji musi być my $self = shift; może zostać z modułem zapisany prościej: my sub secret_door{ ... } sub knock { if ($self->{counter}++ > 7){ $self->$secret_door(); } } A co najważniejsze Spiffy udostępnia nam idealnie napisany konstruktor postaci: sub new { my $class = shift; $class = ref($class) || $class; my $self = bless {}, $class; while (@_) { my $method = shift; $self->$method(shift); } return $self; }

Można oczywiście dziedziczyć go naturalnie w klasach potomnych lub zastąpić własnym.

Dodatkowe informacje

Informacje o autorze opracowania

Autor: M.M.

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