Alce (Perl)

Moose es una extensión del subsistema orientado a objetos para Perl 5. Agrega funciones OOP modernas a Perl, Moose se inspiró en CLOS , Perl 6 y muchos otros lenguajes [1] como Smalltalk , Java , BETA , OCaml , Ruby y otros [2] .

Características

La programación orientada a objetos en Moose, como Perl 6 , se basa, además de en clases y objetos, en el mecanismo de roles , una de las alternativas a la herencia múltiple (que, sin embargo, también es compatible).

Los atributos ( propiedades de clase ) de las clases admiten la delegación y la inicialización diferida .

Los roles se basan en rasgos y desempeñan el mismo rol que las clases mixtas . Se parecen a las interfaces , pero a diferencia de ellas, incluyen implementaciones de métodos predeterminados.

El sistema de objetos de Moose mantiene un metamodelo residente: se puede modificar y ampliar escribiendo clases y roles dentro de Moose. Muchas extensiones de CPAN utilizan Moose , y hay varios módulos de extensión de Moose [1] . A partir de la versión 5.8, el marco web Model-View-Controller Catalyst se basa en el sistema de objetos Moose [3]

Ejemplo

La clase Point(punto) y su subclase Point3D(punto tridimensional) se definen a continuación:

punto del paquete ; usar alce ; usar carpa ; tiene 'x' => ( isa => 'Num' , is => 'rw' ); tiene 'y' => ( isa => 'Num' , is => 'rw' ); sub clear { mi $self = shift ; $auto -> x ( 0 ); $auto -> y ( 0 ); } sub set_to { @_ == 3 o croar "Número incorrecto de argumentos" ; mi $yo = cambio ; mi ( $x , $y ) = @_ ; $propio -> x ( $x ); $self -> y ( $y ); } paquetePunto3D ; _ usar alce ; usar carpa ; extiende 'Punto' ; tiene 'z' => ( isa => 'Num' , is => 'rw' ); después de 'borrar' => sub { my $self = shift ; $auto -> z ( 0 ); }; sub set_to { @_ == 4 o croar "Número incorrecto de argumentos" ; mi $yo = cambio ; mi ( $x , $y , $z ) = @_ ; $propio -> x ( $x ); $self -> y ( $y ); $auto -> z ( $z ); }

Point3DLos métodos set_to()y se anulan en la clase clear(), el primero de ellos no llama al método de la clase principal, el segundo sí lo hace.

Véase también

  • Mú (Perl)

Notas

  1. 12 Dave Rolsky . Perl 5.16 y posteriores , LWN.net  (21 de marzo de 2012). Archivado desde el original el 16 de septiembre de 2013. Consultado el 21 de agosto de 2013.
  2. moose.iinteractive.com - sitio web oficial de Moose
  3. Diment y Trout, 2009 , Introducción -> Catalyst y Perl, p. xxvi.

Literatura

  • Tom Christiansen, Larry Wall, Brian Foy y Jon Orwant. cap. 12.Objetos. -> The Moose in the Room // Programación Perl: potencia inigualable para el procesamiento de texto y secuencias de comandos. - O'Reilly Media , 2012. - Pág. 453-455. — 1130 pág. - ISBN 0596004923 , 9780596004927.
  • cromático. Objetos -> Moose // Perl moderno . - Onyx Neon Press, 7 de diciembre de 2011. - 290 p. - ISBN 0977920178 , 978-0977920174.
  • Kieren Diment y Matt S Trout con Eden Cardim, Jay Kuri y Jess Robinson. Capítulo 2 Configuración de Catalyst y conocimientos previos -> Conocimiento previo de Catalyst -> Programación orientada a objetos con Moose // La guía definitiva de Catalyst. Escribir aplicaciones web basadas en Perl extensibles, escalables y mantenibles. - Apress, 2009. - Págs. 28-44. — 362 págs. - ISBN 978-1-4302-2365-8 .
  • cromático. Principiantes Introducción a la Programación Orientada a Objetos con Perl . O'Reily (13 de noviembre de 2008). Consultado el 21 de agosto de 2013. Archivado desde el original el 28 de mayo de 2013.
  • Henry Van Styn. alce _ Linux Journal (23 de enero de 2012). Consultado el 21 de agosto de 2013. Archivado desde el original el 22 de septiembre de 2013.
  • Randal Schwartz. El alce vuela (parte 1) . Revista Linux (19 de septiembre de 2007). Consultado el 21 de agosto de 2013. Archivado desde el original el 29 de mayo de 2014. , Randal Schwartz. El alce vuela (parte 2) . Revista Linux (23 de septiembre de 2007). Consultado el 21 de agosto de 2013. Archivado desde el original el 4 de julio de 2013.
  • brian d foy Primeros pasos con Moose  // La revisión de Perl. - Julio 2010. - Edición. 5.3 . Archivado desde el original el 5 de diciembre de 2013.

Enlaces