Ver Mensaje Individual
  #44 (permalink)  
Antiguo 17/05/2005, 18:43
Avatar de caerolus
caerolus
 
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 20 años, 4 meses
Puntos: 1
Hola. Yo sí estoy muy versado en OOP, y una solución para tu problema sería la herencia múltiple que comenta JPinedo muy bien, pero esto no está soportado en ningún lenguaje de última generación, como java, php o c#.
Una solución la ofrece el patrón de diseño Adapter. Esencialmente, el Adaptar se usa para adaptar la interface de una clase a otra interface, pero sin cambiar esta.
Por ejemplo, si queremos usar los métodos A() y B() de la interface I1, pero la clase C1 de que disponemos tiene los métodos C() y D(), hacemos esto:
Código:
class C2 extends/implements I1{
  C1 _interno;
  A(){ _interno.C(); }
  B(){ _interno.D(); }
}
De esta forma, podemos ahorrar la problemática del handler de sism8 de tener q andar cargando clases, cambiando entre unas y otras a la hora de usar lo q sea, y que realmente no tendremos un objeto especializado en algo, sino un objeto que permitirá "hacer de todo", y esto no es buena práctica en OOP.
Por ello, te aconsejo que hagas lo siguiente:
Suponiendo que tienes las clases Sub1 y Sub2 que extienden del PDF este que tienes, y quieres crear una clase Especial con métodos de Sub1 y Sub2, puedes hacer un Adapter múltiple:
Código:
 
class Especial{
  Sub1 _sub1;
  Sub2 _sub2;

  metodo1(){ _sub1.metodo1() };
  metodo2(){ _sub2.metodo2() };
  metodo3(){ _sub2.metodo3() };
  ...
  metodoN(){ _subN.metodoN() };
}
Simplemente repetir para cada método y clase que quieras utilizar/extender. Por supuesto, puedes hacer que esta clase Especial extienda de alguna de las SubX que tenemos para ahorrarte un poco de escribir, ya que las interfaces de los métodos son iguales.
Espero ser de ayuda aun. Saludo
__________________
Mi página personal: Julián Urbano