Elg (Perl)

Moose er en udvidelse af det objektorienterede undersystem til Perl 5. Tilføjer moderne OOP-faciliteter til Perl, Moose blev inspireret af CLOS , Perl 6 og mange andre sprog [1] såsom Smalltalk , Java , BETA , OCaml , Ruby og andre [2] .

Funktioner

Objektorienteret programmering i Moose er ligesom Perl 6 baseret, udover klasser og objekter, på mekanismen for roller , et af alternativerne til multipel nedarvning (som dog også understøttes).

Attributter ( klasseegenskaber ) af klasser understøtter delegering og doven initialisering .

Roller er egenskabsbaserede og udfører den samme rolle som mixin- klasser . De ligner grænseflader , men i modsætning til dem inkluderer de standardmetodeimplementeringer.

Moose-objektsystemet opretholder en resident metamodel: den kan ændres og udvides ved at skrive klasser og roller i Moose selv. Moose bruges af mange CPAN- udvidelser, og der er en række Moose-udvidelsesmoduler [1] . Fra version 5.8 er Model-View-Controller -webframework Catalyst baseret på Moose-objektsystemet [3]

Eksempel

Klassen Point(punktet) og dens underklasse Point3D(3-dimensionelt punkt) er defineret nedenfor:

pakke Point ; brug Moose ; brug Karper ; har 'x' => ( isa => 'Num' , er => 'rw' ); har 'y' => ( isa => 'Num' , er => 'rw' ); sub clear { my $self = shift ; $selv -> x ( 0 ); $selv -> y ( 0 ); } sub set_to { @_ == 3 eller kvække "Dårligt antal argumenter" ; mit $selv = skift ; min ( $x , $y ) = @_ ; $selv -> x ( $x ); $selv -> y ( $y ); } packagePoint3D ; _ brug Moose ; brug Karper ; udvider 'Punkt' ; har 'z' => ( isa => 'Num' , er => 'rw' ); after 'clear' => sub { my $self = shift ; $selv -> z ( 0 ); }; sub set_to { @_ == 4 eller kvække "Dårligt antal argumenter" ; mit $selv = skift ; min ( $x , $y , $z ) = @_ ; $selv -> x ( $x ); $selv -> y ( $y ); $selv -> z ( $z ); }

Metoderne og Point3Der tilsidesat i klassen , den første af dem kalder ikke den overordnede klassemetode, den anden gør det. set_to()clear()

Se også

  • Moo (Perl)

Noter

  1. 12 Dave Rolsky . Perl 5.16 og senere , LWN.net  (21. marts 2012). Arkiveret fra originalen den 16. september 2013. Hentet 21. august 2013.
  2. moose.iinteractive.com - officiel Moose hjemmeside
  3. Diment and Trout, 2009 , Introduktion -> Catalyst and Perl, s. xxvi.

Litteratur

  • Tom Christiansen, Larry Wall, Brian Foy og Jon Orwant. Ch. 12. Genstande. -> Elgen i rummet // Programmering Perl: Uovertruffen kraft til tekstbehandling og scripting. - O'Reilly Media , 2012. - S. 453-455. — 1130 s. - ISBN 0596004923 , 9780596004927.
  • kromatisk. Objekter -> Elge // Moderne Perl . - Onyx Neon Press, 2011, 7. december. - 290 s. - ISBN 0977920178 , 978-0977920174.
  • Kieren Diment og Matt S Trout med Eden Cardim, Jay Kuri og Jess Robinson. Kap.2 Katalysatoropsætning og baggrundsviden -> Katalysatorbaggrundsviden -> Objektorienteret programmering med Moose // The Definitive Guide to Catalyst. Skrivning af udvidelige, skalerbare og vedligeholdelige Perl-baserede webapplikationer. - Apress, 2009. - S. 28-44. — 362 s. - ISBN 978-1-4302-2365-8 .
  • kromatisk. Begyndere introduktion til objektorienteret programmering med Perl . O'Reily (13. november 2008). Hentet 21. august 2013. Arkiveret fra originalen 28. maj 2013.
  • Henry Van Styn. Elg . Linux Journal (23. januar 2012). Hentet 21. august 2013. Arkiveret fra originalen 22. september 2013.
  • Randal Schwartz. Elgen flyver (del 1) . Linux Magazine (19. september 2007). Hentet 21. august 2013. Arkiveret fra originalen 29. maj 2014. , Randal Schwartz. Elgen flyver (del 2) . Linux Magazine (23. september 2007). Hentet 21. august 2013. Arkiveret fra originalen 4. juli 2013.
  • brian d foy. Kom godt i gang med Moose  // The Perl Review. - Juli 2010. - Udgave. 5.3 . Arkiveret fra originalen den 5. december 2013.

Links