Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/05/2012, 14:42
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 8 meses
Puntos: 2135
Respuesta: Herencia de Clase Abstracta, duda

La idea de una clase abstracta es como una "interfaz mejorada" es decir, una interfaz, obliga a las clases que la implementen a difinir ciertos métodos que tiene la interfaz para que cumpla con el contrato de uso.

Una clase abstracta va más allá de ello, ya que aparte te permite definir métodos comunes que pueden usar las clases más especializadas, y así ahorrar código.

Un ejemplo muy rápido que se me viene a la mente, es un generador de códigos de referencias bancarias.

Supongamos que tienes 10 bancos, y cada banco tiene un algoritmo propio para crear una referencia, pero en tu sistema tienes por ejemplo los datos base para el pago (el usuario, el monto, la fecha límite, y el concepto).

Puedes hacer una clase abstracta, base que tenga los métodos comunes (getUsuario(), getFechaLimite(), getConcepto()) y un método abstracto (getReferencia()) en cada clase que la extienda por cada banco, haces la implementación correcta de getReferencia() y así solamente debes de cambiar la clase que usa el banco para obtener los datos correctos.

Inclusive puedes usar un Factory para obtener la clase armada, dependiendo del adapter y así consumir sus métodos (que son los mismos ya que están "obligados" por la interfaz) y así consumir tu clase sin problemas.