Perl/Class::Base
De Astillas.net
< Perl
Módulo | Class::Base |
---|---|
Versión | 0.03 |
Uso | Programación orientada a objetos |
Propósito | Herramienta de la que derivar clases nuevas |
Referencia rápida
package MyPackage;
use base qw(Class::Base);
sub init {
my $self = shift;
my $config_values = shift;
$self->params( $config_values, qw( talla nombre color ) );
return $self;
}
package main;
use MyPackage;
my $objeto = MyPackage->new( nombre => 'coco', talla => '14' );
$objeto->talla( 15 ); # talla corregida
if ($objeto->color() eq 'azulado') {
...
}
Recetario
Inicialización de objetos
Una vez creado el objeto éste llama a la función init() de la clase pasándole la configuración recibida como una referencia a un hash. Si se sobrecarga este método se puede personalizar la inicialización ya que recibe la misma referencia a hash con los valores de creación del objeto.
Dentro de init() se puede emplear params(), ya que es un método que copia los valores indicados en los atributos del objeto y que puede usarse de varias formas:
my %defaults = (
name => 'Juan Nadie',
street => undef,
sex => q(male),
);
sub init {
my ($self, $config) = @_;
# Inicializamos sólo nombre y calle o
$self->params( $config, qw(name street) );
# Inicializamos todas las que aparezcan en el hash
# que le enviamos tomando sus valores como
# predeterminados para el objeto
$self->params( $config, \%defaults );
# Devolvemos el objeto para facilitar el encadenado
return $self;
}