La Programación Orientada a Objetos también es posible en el Lenguaje Perl, para su construcción se hace a través de la extensión ".pm", generalmente llamados módulos o clases, cada nueva clase se crea a través de un nombre con la palabra reservada "package", toda clase u objeto necesita de un método constructor, generalmente llamado new aunque puede ser otro nombre, el cual contiene la referencia al objeto creado así como las variables de instancias que podrán o no ser manipuladas a través de los métodos de la clase.
En el siguiente ejemplo, puedes ver una demostración de la creación de una clase llamada "Coche", esta clase tiene 4 variables de instancia, aunque sólo 3 de ellas pueden ser modificadas, ya que todos los coches tienes 4 ruedas, sin embargo el color, velocidad y puertas si pueden ser cambiados a través de sus métodos, si no se decide cambiarlos se mantendrán los valores por defecto, que contienen el método constructor.
Para ello primero creamos el objeto que guardarás con extensión ".pm" -> "Coche.pm" ...
Coche.pm
package Coche; #El modulo strict genera errores, es decir, asegura de que la escritura de codigo es llevada a cabo correctamente use strict; #Se inicializa el constructor de referencia del objeto, generalmente se hace con la palabra 'new' sub new{ my $this=shift; #Cogemos la clase que somos o una referencia a la clase (si soy un objeto) my $class = ref($this) || $this; #Averiguo la clase a la que pertenezco my $self={}; #Inicializamos la tabla hash que contendrá las variables de instancia $self->{COLOR} = "rojo"; #color predeterminado $self->{RUEDAS} = 4; #numero de ruedas, valor fijo $self->{VELOCIDAD_MAXIMA} = 240; #velocidad predeterminada $self->{PUERTAS} = 5; #numero de puertas predeterminado bless $self, $class; #Se crea la clase return ($self); #Devolvemos la clase recién construida } #METODOS DE LA CLASE #COLOR DEL COCHE sub color { #Recibe el parametro por default de la clase my $self=shift; #Si se indica el color como parametro mostrarlo de lo contrario mantener el default $self->{COLOR} = shift if (@_); return $self->{COLOR}; } #RUEDAS DEL COCHE, no acepta parametros ya que todos los coches tienes 4 ruedas sub ruedas { #Recibe el parametro por default de la clase my $self=shift; return $self->{RUEDAS}; } #VELOCIDAD MAXIMA sub velocidad_maxima { #Recibe el parametro por default de la clase my $self=shift; #Si se indica la velocidad como parametro mostrarlo de lo contrario mantener el default $self->{VELOCIDAD} = shift if (@_); return $self->{VELOCIDAD}; } #PUERTAS sub puertas { #Recibe el parametro por default de la clase my $self=shift; $self->{PUERTAS} = shift if (@_); return $self->{PUERTAS}; } #Esto es imprescindible para indicar la finalizacion de la clase #Fin 1;
A continuación creamos un archivo en la misma carpeta donde has guardado la clase, a este archivo lo puedes llamar "index.pl".
index.pl
#Importamos el modulo o clase use Coche; my $coche=Coche::new("Coche"); #para inicializar la clase tambien se puede hacer de la siguiente forma #my $coche=Coche->new(); $color = $coche->color("Verde"); $ruedas = $coche->ruedas; $velocidad_maxima = $coche->velocidad_maxima(280); $puertas = $coche->puertas(3); print "Caracteristicas del coche ... \n"; print "Color: $color \n"; print "Ruedas: $ruedas \n"; print "Velocidad maxima: $velocidad_maxima k/h \n"; print "Puertas: $puertas \n";
Si ejecutas el archivo index.pl podrás ver como hemos llamado a la clase e indicado nuevas características o propiedades, menos el número de ruedas como ya se comentó anteriormente ...
Como se puede ver, es cuestión de seguir unas pautas sencillas para la creación de nuevos módulos. Perl contiene muchos módulos integrados que simplemente con la palabra reservada "use" los podemos importar a los proyectos, hay módulos para cualquier tarea o acción que se deseé realizar, también existe la posibilidad de instalar nuevos módulos a través de "cpan", aunque esto lo veremos más adelante.
No hay comentarios:
Publicar un comentario