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 ; 'x' => ( isa => 'Num' , je => 'rw' ); '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' ; '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é

  • Moo (Perl)

Poznámky

  1. 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.
  2. moose.iinteractive.com - oficiální stránky Moose
  3. 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.
  • Henry Van Styn. Los . Linux Journal (23. ledna 2012). Získáno 21. srpna 2013. Archivováno z originálu dne 22. září 2013.
  • 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. , 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.
  • 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