Título: Herencia Publicado por: alzehimer_cerebral en 20 Abril 2010, 23:37 pm 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 Clase DriverPlugin: Código 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 1. -Podria pasarle un DriverPlugin tambien no??? 2. -Si tengo un vector con ambos tipos de Plugins... Podria hacer: Código
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 Título: Re: Herencia Publicado por: sapito169 en 21 Abril 2010, 00:59 am 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 Título: Re: Herencia Publicado por: alzehimer_cerebral en 21 Abril 2010, 01:45 am 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 Título: Re: Herencia Publicado por: sapito169 en 21 Abril 2010, 02:19 am 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 Título: Re: Herencia Publicado por: sapito169 en 21 Abril 2010, 02:26 am 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 |