Jávorszarvas (Perl)
A Moose a Perl 5 objektumorientált alrendszerének kiterjesztése. Modern OOP lehetőségeket ad a Perlhez, a Moose-t a CLOS , a Perl 6 és sok más nyelv ihlette [1] , mint például a Smalltalk , Java , BETA , OCaml , Ruby és mások [2] .
Jellemzők
Az objektum-orientált programozás a Moose-ban, akárcsak a Perl 6 , az osztályok és objektumok mellett a szerepek mechanizmusán alapul , amely a többszörös öröklődés egyik alternatívája (ami azonban szintén támogatott).
Az osztályok attribútumai ( osztálytulajdonságai ) támogatják a delegálást és a lusta inicializálást .
A szerepek tulajdonságon alapulnak, és ugyanazt a szerepet töltik be, mint a mixin osztályok . Az interfészekhez hasonlítanak , de velük ellentétben alapértelmezett metódusmegvalósításokat tartalmaznak.
A Moose objektumrendszer rezidens metamodellt tart fenn: ez módosítható és bővíthető úgy, hogy magában a Moose-on belül osztályokat és szerepeket írunk. A Moose-t számos CPAN -bővítmény használja, és számos Moose-bővítési modul is létezik [1] . Az 5.8-as verziótól kezdődően a Model-View-Controller webes keretrendszer Catalyst a Moose objektumrendszeren alapul [3]
Példa
Az osztály Point(pont) és alosztálya Point3D(3-dimenziós pont) az alábbiakban definiált:
csomag Pont ;
használja Moose ;
használja Ponty ;
has 'x' => ( isa => 'Num' , is => 'rw' );
has 'y' => ( isa => 'Num' , is => 'rw' );
sub clear {
my $self = shift ;
$self -> x ( 0 );
$self -> y ( 0 );
}
sub set_to {
@_ == 3 vagy croak "Rossz számú argumentum" ;
én $én = műszak ;
my ( $x , $y ) = @_ ;
$self -> x ( $x );
$self -> y ( $y );
}
packagePoint3D ; _ használja Moose ; használja Ponty ;
kiterjeszti a 'Pont'-ot ;
has 'z' => ( isa => 'Num' , is => 'rw' );
after 'clear' => sub {
my $self = shift ;
$self -> z ( 0 );
};
sub set_to {
@_ == 4 vagy croak "Rossz számú argumentum" ;
én $én = műszak ;
my ( $x , $y , $z ) = @_ ;
$self -> x ( $x );
$self -> y ( $y );
$self -> z ( $z );
}
A és Point3Dmetódusok felül vannak írva az osztályban , közülük az első nem hívja meg a szülő osztály metódusát, a második igen.
set_to()clear()
Lásd még
Jegyzetek
- ↑ 12 Dave Rolsky . Perl 5.16 és újabb , LWN.net (2012. március 21.). Az eredetiből archiválva : 2013. szeptember 16. Letöltve: 2013. augusztus 21.
- ↑ moose.iinteractive.com - Moose hivatalos weboldala
- ↑ Diment and Trout, 2009 , Bevezetés -> Catalyst and Perl, p. xxvi.
Irodalom
- Tom Christiansen, Larry Wall, Brian Foy és Jon Orwant. Ch. 12.Tárgyak. -> A jávorszarvas a szobában // Perl programozása: Páratlan teljesítmény a szövegfeldolgozásban és a parancsfájlokban. - O'Reilly Media , 2012. - P. 453-455. — 1130 p. - ISBN 0596004923 , 9780596004927.
- kromatikus. Objektumok -> Moose // Modern Perl . - Onyx Neon Press, 2011, december 7. - 290 p. - ISBN 0977920178 , 978-0977920174.
- Kieren Diment és Matt S Trout Eden Cardimmal, Jay Kurival és Jess Robinsonnal. 2. fejezet Katalizátor beállítása és háttérismeretek -> Katalizátor háttérismeretek -> Objektum-orientált programozás Moose segítségével // A Catalyst végleges útmutatója. Bővíthető, méretezhető és karbantartható Perl-alapú webalkalmazások írása. - Apress, 2009. - P. 28-44. — 362 p. - ISBN 978-1-4302-2365-8 .
- kromatikus. Kezdőknek Bevezetés az objektum-orientált programozásba Perl-lel . O'Reily (2008. november 13.). Letöltve: 2013. augusztus 21. Az eredetiből archiválva : 2013. május 28.. (határozatlan)
- Henry Van Styn. Moose . Linux Journal (2012. január 23.). Letöltve: 2013. augusztus 21. Az eredetiből archiválva : 2013. szeptember 22.. (határozatlan)
- Randal Schwartz. A jávorszarvas repül (1. rész) . Linux Magazine (2007. szeptember 19.). Letöltve: 2013. augusztus 21. Az eredetiből archiválva : 2014. május 29. (határozatlan) , Randal Schwartz. A jávorszarvas repül (2. rész) . Linux Magazine (2007. szeptember 23.). Letöltve: 2013. augusztus 21. Az eredetiből archiválva : 2013. július 4.. (határozatlan)
- brian d foy. A Moose használatának megkezdése // The Perl Review. - 2010. július. - Kiadás. 5.3 . Az eredetiből archiválva: 2013. december 5.
Linkek
Perl |
---|
Emberek |
- Larry Wall
- Randel Schwartz
- Damian Conway
- Allison Randel
- Audrey Tang
- Simon Cozens
- kromatikus
- Adam Kennedy
- brian d foy
- Mark Jason Dominus
|
---|
Dolgok |
|
---|
Keretrendszerek |
|
---|
|