Moose (Perl)
Moose je rozšíření objektově orientovaného subsystému pro Perl 5. Přidává moderní OOP zařízení do Perlu, Moose se inspiroval CLOS , Perl 6 a mnoha dalšími jazyky [1] jako Smalltalk , Java , BETA , OCaml , Ruby a ostatní [2] .
Funkce
Objektově orientované programování v Moose, stejně jako Perl 6 , je založeno kromě tříd a objektů na mechanismu rolí , jedné z alternativ vícenásobné dědičnosti (která je však také podporována).
Atributy ( vlastnosti třídy ) tříd podporují delegování a línou inicializaci .
Role jsou založené na vlastnostech a plní stejnou roli jako smíšené třídy . Podobají se rozhraním , ale na rozdíl od nich obsahují implementace výchozích metod.
Objektový systém Moose udržuje rezidentní metamodel: lze jej upravovat a rozšiřovat psaním tříd a rolí v rámci samotného Moose. Moose používá mnoho rozšíření CPAN a existuje řada rozšiřujících modulů Moose [1] . Počínaje verzí 5.8 je webový framework Catalyst Model-View-Controller založen na objektovém systému Moose [3]
Příklad
Třída Point(bod) a její podtřída Point3D(3-rozměrný bod) jsou definovány níže:
balíček Point ;
použít Moose ;
použít kapra ;
má 'x' => ( isa => 'Num' , je => 'rw' );
má 'y' => ( isa => 'Num' , je => 'rw' );
sub clear {
my $self = shift ;
$self -> x ( 0 );
$self -> y ( 0 );
}
sub set_to {
@_ == 3 or croak "Špatný počet argumentů" ;
moje $já = posun ;
moje ( $ x , $ y ) = @_ ;
$self -> x ( $x );
$self -> y ( $y );
}
packagePoint3D ; _ použít Moose ; použít kapra ;
rozšiřuje 'Bod' ;
má 'z' => ( isa => 'Num' , is => 'rw' );
after 'clear' => sub {
my $self = shift ;
$self -> z ( 0 );
};
sub set_to {
@_ == 4 or croak "Špatný počet argumentů" ;
moje $já = posun ;
moje ( $x , $y , $z ) = @_ ;
$self -> x ( $x );
$self -> y ( $y );
$self -> z ( $z );
}
Metody a jsou ve třídě Point3Dpřepsány , první z nich nevolá metodu rodičovské třídy, druhá ano.
set_to()clear()
Viz také
Poznámky
- ↑ 12 Dave Rolsky . Perl 5.16 a novější , LWN.net (21. března 2012). Archivováno z originálu 16. září 2013. Staženo 21. srpna 2013.
- ↑ moose.iinteractive.com - oficiální stránky Moose
- ↑ Diment and Trout, 2009 , Úvod -> Catalyst and Perl, str. xxvi.
Literatura
- Tom Christiansen, Larry Wall, Brian Foy a Jon Orwant. Ch. 12.Předměty. -> The Moose in the Room // Programování Perl: Bezkonkurenční výkon pro zpracování textu a skriptování. - O'Reilly Media , 2012. - S. 453-455. — 1130 s. - ISBN 0596004923 , 9780596004927.
- chromatický. Objekty -> Moose // Moderní Perl . - Onyx Neon Press, 2011, 7. prosince - 290 s. - ISBN 0977920178 , 978-0977920174.
- Kieren Diment a Matt S Trout s Eden Cardim, Jay Kuri a Jess Robinson. Kapitola 2 Nastavení katalyzátoru a základní znalosti -> Základní znalosti katalyzátoru -> Objektově orientované programování s Moose // The Definitive Guide to Catalyst. Psaní rozšiřitelných, škálovatelných a udržovatelných webových aplikací založených na Perlu. - Apress, 2009. - S. 28-44. — 362 s. - ISBN 978-1-4302-2365-8 .
- chromatický. Úvod do objektově orientovaného programování v Perlu pro začátečníky . O'Reily (13. listopadu 2008). Získáno 21. 8. 2013. Archivováno z originálu 28. 5. 2013. (neurčitý)
- Henry Van Styn. Los . Linux Journal (23. ledna 2012). Získáno 21. srpna 2013. Archivováno z originálu dne 22. září 2013. (neurčitý)
- Randal Schwartz. Los letí (část 1) . Linux Magazine (19. září 2007). Získáno 21. srpna 2013. Archivováno z originálu 29. května 2014. (neurčitý) , Randal Schwartz. Los letí (část 2) . Linux Magazine (23. září 2007). Získáno 21. srpna 2013. Archivováno z originálu dne 4. července 2013. (neurčitý)
- brian d foy. Začínáme s Moose // Recenze Perlu. - Červenec 2010. - Vydání. 5.3 . Archivováno z originálu 5. prosince 2013.
Odkazy
Perl |
---|
Lidé |
- Larry Wall
- Randel Schwartz
- Damian Conway
- Allison Randel
- Audrey Tang
- Simon Cozens
- chromatický
- Adam Kennedy
- brian d foy
- Mark Jason Dominus
|
---|
Věci |
|
---|
Rámce |
|
---|
|