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

  • Moo (Perl)

Jegyzetek

  1. 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.
  2. moose.iinteractive.com - Moose hivatalos weboldala
  3. Diment and Trout, 2009 , Bevezetés -> Catalyst and Perl, p. xxvi.

Irodalom

Linkek