Perl/Class::Base

De Astillas.net
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;
}