La Herencia es en cierto modo una subclase que hereda las cualidades de una clase, por ejemplo, anteriormente creamos una clase llamada Coche, a partir de esta clase, podemos crear una subclase que herede las propiedades de la clase Coche y de paso añadirle nuevas propiedades y métodos.
Para el ejemplo que se va a hacer en este post es conveniente ver Perl Orientado a Objetos para crear la clase "Coche".
Supongamos que queremos crear una clase para indicar el precio de un coche y que para ello necesitemos saber el color, velocidad y número de puertas del vehículo, en lugar de construir una nueva clase desde cero con todas estas propiedades, como ya tenemos una clase llamada Coche, únicamente la importamos a una nueva subclase.
Para realizar la herencia se utiliza un Array llamado "@ISA", que puede contener tantas herencias como se necesiten, si sólo hereda una clase se le llama herencia simple y si hay más de una herencia es llamado herencia múltiple.
En el siguiente ejemplo crearemos una nueva subclase llamada "PrecioCoche" que heredará la clase "Coche", el valor del coche será determinado según la velocidad máxima que pueda alcanzar ...
PrecioCoche.pm
package PrecioCoche; #Agregamos la herencia a la nueva subclase PrecioCoche use Coche; @ISA = qw(Coche); use strict; #Creamos el constructor 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=$class->Coche::new("Coche"); #Inicializamos las propiedades con las usadas en Coche $self->{PRECIO} = undef; #No se indica ningun precio bless $self, $class; #Se crea la clase return ($self); #Devolvemos la clase recién construida } sub precio { my $self=shift; #El primer parámetro de un metodo es la clase #Determinamos el precio segun la velocidad del coche if ($self->{VELOCIDAD_MAXIMA} <= 160) { $self->{PRECIO} = 6000; } elsif ($self->{VELOCIDAD_MAXIMA} > 160 && $self->{VELOCIDAD_MAXIMA} <= 220) { $self->{PRECIO} = 12000; } elsif ($self->{VELOCIDAD_MAXIMA} > 220) { $self->{PRECIO} = 18000; } else { $self->{PRECIO} = "Ha ocurrido un error \n"; } #Devolvemos el precio return $self->{PRECIO}; } #Muy importante #Fin del modulo 1;
Ahora hacemos uso de la nueva subclase, crea un archivo llamado "precio.pl" ...
precio.pl
use PrecioCoche; my $coche=PrecioCoche::new("PrecioCoche"); #para inicializar la clase tambien se puede hacer de la siguiente forma #my $coche=PrecioCoche->new(); $color = $coche->color("Verde"); $ruedas = $coche->ruedas; $velocidad_maxima = $coche->velocidad_maxima(280); $puertas = $coche->puertas(3); $precio = $coche->precio; 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"; print "Precio: $precio \n";
Creo que los ejemplos son sencillos de comprender y pueden servir de base para crear clases y subclases más avanzadas.
No hay comentarios:
Publicar un comentario