Herencia

Iniciado por alzehimer_cerebral, 20 Abril 2010, 23:37 PM

0 Miembros y 1 Visitante están viendo este tema.

alzehimer_cerebral

Hola a todos,

estoy trabajando en un programa y me surgen unas dudas sobre la herencia, os cuento:

tengo una clase Plugin con los atributos comunes a todos los plugins y otra clase DriverPlugin que extiende dicha clase, la clase DriverPlugin contempla atributos que solo los tienesn ciertos plugins en concreto...

Clase Plugin:

Código (java) [Seleccionar]

protected String pluginType=null;
    protected String pluginName=null;
    protected String pluginBaseClass=null;
    protected String pluginVersion=null;
    protected String pluginShortDescription=null;
    protected String pluginImage=null;
    protected String pluginPath=null;
   


Clase DriverPlugin:

Código (java) [Seleccionar]

  private String[] avaibleExtensions;


Luego tengo otra clase que es Repository en la cual quiero tener un metodo que comprueba si existe un cierto Plugin en el repositorio...

Mi duda es si dicho metodo lo declaro de la siguiente manera:

Código (java) [Seleccionar]

public Boolean existsPlugin(Plugin plug)


1. -Podria pasarle un DriverPlugin tambien no???
2. -Si tengo un vector con ambos tipos de Plugins... Podria hacer:

Código (java) [Seleccionar]

Plugin aux = (Plugin) this.pluginVector.get(i);


Donde i puede ser un DriverPlugin..

3. Nunca podria guardar en una variable DriverPlugin un tipo Plugin con cast a DriverPlugin verdad??

Lo que asumo es por las pruebas que he hecho hasta el momento, pero me gustaria confirmacion para fijar los conocimientos.

Espero vuestros comentarios.

Un saludo.

alzehimer_cerebral
Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com

sapito169

1. -Podria pasarle un DriverPlugin tambien no???
si le puedes pasar una variable driver plugin es  logico por que un driver plugin es un plugin
2.- si
3 no necesitas cast

alzehimer_cerebral

Y a un metodo que se le pasa un DriverPlugin no le puedo pasar un Plugin no?? Pero con un cast a DriverPlugin si podria verdad??

Gracias por la aclaracion.

Saludos.

alzehimer_cerebral
Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com

sapito169

y por que tu no lo pruevas que no es facil porvarlo tu mismo

usa el sentido comun si a un metodo que pide driver plugin le pasas plugin lo mas probable es que cuando el metodo use el plugin le falte metodos del driver plugin esa es la razon por la que no se puede talves salga casteando pero esta ves pruevalo tu mismo

una recomendacion para que no te agas volas as que tus metodos reciban solo interfases y las que son mas viejas las papas del papa del papa de esta forma puedes elegir la implementacion que te guste mas esta es una de las uan excelente practica ase que tu programa sea super desacoplada y ase posible cambiar la implementacion que mas te guste ademas ase asta posible la injecion de dependencias

recuerda as clases que de preferencias reciban interfaces y las que no son hijas de nadie ademas as clases abstractas que implementen de las interfases y que hagan todas las operaciones que se puedan hacer sobre esa interfases y finalmente hereda la de las clases abstractas la implementacion poniendote en los casos mas particulares

si trabajas de esta forma todas tus clases van a tener un monton de metodos muy utiles y no vas a tener que hacer los mismos metodos para cada implementacion en particular

lee el api de java y entiende como travaja lee la documentacion oficial

sapito169

un ejemplo de esto seri asi

tableModel interfase para representar el modelo de una tabla

abstractablemodel implementa table model y ademas maneja los eventos si yo hubiera echo el api le pondria un monton de metodos para por ejemplo voltear la tabla cambiar de posicion las columnas y todoas las cosas que se me ocurran cosa que lla no lo aria por cada implementacion de esta

el defaultablemodel representa la tabla hereda de abstractablemodel y presenta un modelo para trabajar con tablas en forma general