next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Práctica: Herencia Sup: Herencia Ant: Ejercicio: SUPER Err: Si hallas una errata ...


Métodos Abstractos

Un método abstracto es uno que, mas que proveer un servicio representa un servicio o categoría. La idea es que al definir una clase base abstracta se indica un conjunto de métodos que deberían estar definidos en todas las clases que heredan de la clase base abstracta. Es como una declaración de interfase que indica la necesidad de definir su funcionalidad en las clases descendientes, pero que no se define en la clase base.

Para conseguir este efecto, lo normal en Perl es que nos aseguremos que nuestro método abstracto produce una excepción con el mensaje de error adecuado. Cuando el número de métodos abstractos es grande puede suponer un ahorro utilizar un método genérico como este:

package Abstract;

sub ABSTRACT {
  my $self = shift;
  my ($file, $line, $method) = (caller(1))[1..3];
  
  die("call to abstract method ${method} at $file, line $line\n");
}

1;
Obsérve el uso de la función caller introducida en la sección 1.9.11 para determinar la localización exacta de la llamada.


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Práctica: Herencia Sup: Herencia Ant: Ejercicio: SUPER Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21