Älg (Perl)

Moose är en förlängning av det objektorienterade delsystemet för Perl 5. Lägger till moderna OOP-faciliteter till Perl, Moose inspirerades av CLOS , Perl 6 och många andra språk [1] som Smalltalk , Java , BETA , OCaml , Ruby och andra [2] .

Funktioner

Objektorienterad programmering i Moose, som Perl 6 , bygger, förutom klasser och objekt, på mekanismen roller , ett av alternativen till multipelt arv (som dock också stöds).

Attribut ( klassegenskaper ) för klasser stöder delegering och lat initialisering .

Roller är egenskapsbaserade och utför samma roll som mixin- klasser . De liknar gränssnitt , men till skillnad från dem inkluderar de implementeringar av standardmetoder.

Moose-objektsystemet har en inbyggd metamodell: den kan modifieras och utökas genom att skriva klasser och roller inom Moose själv. Moose används av många CPAN- tillägg, och det finns ett antal Moose-tilläggsmoduler [1] . Från och med version 5.8 är Model-View-Controller webbramverket Catalyst baserat på Moose-objektsystemet [3]

Exempel

Klassen Point(punkten) och dess underklass Point3D(3-dimensionell punkt) definieras nedan:

paket Point ; använd Älg ; använd karp ; har 'x' => ( isa => 'Num' , är => 'rw' ); har 'y' => ( isa => 'Num' , är => 'rw' ); sub clear { my $self = shift ; $self -> x ( 0 ); $self -> y ( 0 ); } sub set_to { @_ == 3 eller croak "Dåligt antal argument" ; mitt $jag = skift ; min ( $x , $y ) = @_ ; $self -> x ( $x ); $self -> y ( $y ); } packagePoint3D ; _ använd Älg ; använd karp ; utökar 'Point' ; har 'z' => ( isa => 'Num' , är => 'rw' ); after 'clear' => sub { my $self = shift ; $self -> z ( 0 ); }; sub set_to { @_ == 4 eller croak "Dåligt antal argument" ; mitt $jag = skift ; min ( $x , $y , $z ) = @_ ; $self -> x ( $x ); $self -> y ( $y ); $self -> z ( $z ); }

Metoderna och Point3Dåsidosätts i klassen , den första av dem anropar inte den överordnade klassmetoden, den andra gör det. set_to()clear()

Se även

  • Moo (Perl)

Anteckningar

  1. 12 Dave Rolsky . Perl 5.16 och senare , LWN.net  (21 mars 2012). Arkiverad från originalet den 16 september 2013. Hämtad 21 augusti 2013.
  2. moose.iinteractive.com - officiell älgwebbplats
  3. Diment and Trout, 2009 , Introduktion -> Catalyst and Perl, sid. xxvi.

Litteratur

  • Tom Christiansen, Larry Wall, Brian Foy och Jon Orwant. Ch. 12.Föremål. -> Älgen i rummet // Programmering Perl: Oöverträffad kraft för textbearbetning och skript. - O'Reilly Media , 2012. - S. 453-455. — 1130 sid. - ISBN 0596004923 , 9780596004927.
  • kromatisk. Objekt -> Älg // Modern Perl . - Onyx Neon Press, 2011, 7 december. - 290 sid. - ISBN 0977920178 , 978-0977920174.
  • Kieren Diment och Matt S Trout med Eden Cardim, Jay Kuri och Jess Robinson. Kapitel 2 Katalysatorinstallation och bakgrundskunskap -> Katalysatorbakgrundskunskap -> Objektorienterad programmering med älg // The Definitive Guide to Catalyst. Skriva utökningsbara, skalbara och underhållbara Perl-baserade webbapplikationer. - Apress, 2009. - S. 28-44. — 362 sid. - ISBN 978-1-4302-2365-8 .
  • kromatisk. Nybörjare Introduktion till objektorienterad programmering med Perl . O'Reily (13 november 2008). Hämtad 21 augusti 2013. Arkiverad från originalet 28 maj 2013.
  • Henry Van Styn. Älg . Linux Journal (23 januari 2012). Hämtad 21 augusti 2013. Arkiverad från originalet 22 september 2013.
  • Randal Schwartz. Älgen flyger (del 1) . Linux Magazine (19 september 2007). Hämtad 21 augusti 2013. Arkiverad från originalet 29 maj 2014. , Randal Schwartz. Älgen flyger (del 2) . Linux Magazine (23 september 2007). Hämtad 21 augusti 2013. Arkiverad från originalet 4 juli 2013.
  • brian d foy. Komma igång med Moose  // The Perl Review. - Juli 2010. - Utgåva. 5.3 . Arkiverad från originalet den 5 december 2013.

Länkar