next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Métodos Abstractos Sup: Herencia Ant: La notación SUPER Err: Si hallas una errata ...

Ejercicio: SUPER

Recuerde que SUPER indica que la búsqueda del método debe realizarse desde el vector @ISA de la clase en la que el método está siendo llamado y no de la clase del objeto que se ha usado en la llamada. Dado el programa en la tabla 7.2 cuyo esquema aparece en la figura 7.4, explique como se producirán las llamadas y cual será la salida.


Tabla 7.2: Ejemplo de uso de SUPER
#!/usr/bin/perl -w
use strict;

package E;

sub new {
  my ($class, %args) = @_;
  my $self = 
    bless {}, ref($class) 
              || $class;
  return $self;
}

sub titi {
  print "E\n";
}

package D;
sub titi {
  print "D\n";
}
package B;
@B::ISA = qw(E);

sub titi {
  print "B\n";
}

package C;
@C::ISA = qw(D);

sub toto {
my $self = shift;
  print "C::toto\n";
  print "Clase del Objeto: ",
         ref $self,"\n";
  $self->SUPER::titi();
}

package A;
@A::ISA = qw(B C);


package main;

my $a = A->new();
   $a->toto();


Figura 7.4: Esquema del programa
\begin{figure}\centerline{\epsfig{file=super.eps, height=6cm}}\end{figure}


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Métodos Abstractos Sup: Herencia Ant: La notación SUPER Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21