Práctica: Instalación Automática de Métodos

En la dirección http://nereida/˜lhp/perlexamples/Algorithm-Knap01DP-0.20.tar.gz encontrará una versión orientada a objetos del módulo que desarrollamos en la sección 5.21.

La estructura del hash puede verse consultando el constructor new:

sub new {
    my $class = shift;
    my $self = {
        capacity    => 0,       # total capacity of this knapsack
        numobjects  => 0,       # number of objects
        weights     => [],      # weights to be packed into the knapsack
        profits     => [],      # profits to be packed into the knapsack
        tableval    => [],      # f[k][c] DP table of values
        tablesol    => [],      # x[k][c] DP table of sols 
                                # (0 = out, 1 = in, 2 = in and out)
        solutions   => [],      # list of lists of object indexes 
        filename    => "",      # name of the file the problem was read from
        @_,
    };
    
    croak "Profits and Weights don't have the same size" 
           unless scalar(@{$self->{weights}}) == scalar(@{$self->{profits}});

    bless $self, $class;
}
Escriba el conjunto de métodos de acceso, haciendo que cada vez que se busca una función y no se encuentra, AUTOLOAD dinámicamente instale una entrada con la función en la tabla de símbolos, de manera que la siguiente llamada encuentre el método. Introduzca una prueba de regresión que verifique el funcionamiento. Modifique la documentación.

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19