Autor Tema: Ejercicio CU00697B Herencia múltiple java con interfaces  (Leído 4717 veces)

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Ejercicio CU00697B Herencia múltiple java con interfaces
« en: 08 de Septiembre 2014, 21:55 »
Hola
Presento ejercicio para revisión
Los archivos están comprimidos en el archivo adjunto CU00697B0.rar

Las clases enviadas son:
Interfaces
    Construccion
    Instalacion
    Edificio
Clases concretas
    Polideportivo
    EdificioOficinas
    Almacen
    TestInterfaceMultiple ( con main )
Clases accesorias con métodos estáticos
    Convierte
    UtilConsola
-------------------
En el enunciado del ejercicio se pregunta:
¿Entre qué clases existe una relación que se asemeja a la herencia múltiple?

Respuesta;
La clase 'Polideportivo' que implementa a las dos interfaces 'Instalacion' y 'Edificio' hereda de las dos al mismo tiempo.

Asi pues, estas tres clases 'Polideportivo', 'Instalacion' y 'Edificio' tienen una relación parecida a la herencia múltiple (que en java no está contemplada entre clases. Una clase solo puede heredar de varias 'interfaces' y una sola clase al mismo tiempo).
« Última modificación: 09 de Septiembre 2014, 09:34 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ejercicio CU00697B Herencia múltiple java con interfaces
« Respuesta #1 en: 09 de Septiembre 2014, 09:34 »
Hola toni, poco que comentar respecto a posibles mejoras del código. Como ya se ha hecho en otras ocasiones, felicitarte porque además de resolver el ejercicio estás ampliándolo con posibilidades creadas por tí. Además el diseño del código se ve cada vez más eficiente y usando los conceptos y diseño propios de la programación orientada a objetos.

Hay una cosa que me ha llamado la atención, la interface Construcción vacía y que después escribas public interface Instalacion extends Construccion, supongo que sería alguna idea que tenías en la cabeza o alguna prueba sobre cómo relacionar interfaces entre sí.

Creo que estás alcanzando, o ya has alcanzado, el final del curso de programación Java desde cero, que puedes considerar que has seguido brillantemente. No sé qué trayectoria tienes pensado seguir, pero comentarte que nos gustaría que siguieras colaborando con nosotros en los foros ahora como "profesor" ayudando y respondiendo a aquellas personas que, igual que tú y todos en su día incluido yo, están comenzando en el mundo de la programación. También existen otras posibilidades de colaboración y participación con la web, pero todo depende de la voluntad y posibilidades de las personas, ya que detrás de esto no hay ninguna gran empresa, sino simplemente eso, personas, y tanto los foros como el resto de la web funcionan gracias a eso.

A seguir adelante, un abrazo. 
Responsable de departamento de producción aprenderaprogramar.com

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio CU00697B Herencia múltiple java con interfaces
« Respuesta #2 en: 09 de Septiembre 2014, 22:18 »
Hola César
Si te llama la atención la interface 'Construccion' vacía, quiere decir para mí que este problema se podía solucionar al menos de otra manera.

La estructura de clases de este ejercicio me ha salido al tercer intento.
Me ha parecido más sencillo añadir objetos pertenecientes a un interface (aunque esté vacío) en un ArrayList, que añadir los objetos en dos listas distintas (un ArrayList para los objetos de tipo Polideportivo y otro para los otros objetos) y luego estos dos ArrayList añadirlos a otra lista.

Esta definición:
Citar
public interface Instalacion extends Construccion
No la he creado conscientemente. La ha creado el IDE Bluej al usar el botón 'Insertar una relacion de herencia' y hacer clic en las dos interfaces Instalacion y Construccion.
Vi que en la definición aparecía la palabra 'extends' en lugar de 'implements'.
Es la primera vez que hacía esto, y si Bluej lo solucionaba así, para mi estaba bien.

Tengo curiosidad por conocer otra solución.

Respecto al último párrafo de tu mensaje, he de decirte que para mi vuestra web ha sido un oasis en medio del mar de arena de 'la internet'.
Ya le he echado el ojo al otro curso
Curso Lenguaje de programación Java nivel avanzado I
Que aunque no tiene ejercicios y no está completo, para mi tiene toda la garantía que le da el curso que estoy terminando.

En este punto César, quiero hacer un aparte y pedir tu consejo a fin de obtener una publicación (escrita o digital) que incluya el índice -muy prometedor- del curso Java nivel avanzado I

En cuanto a tu invitación a seguir colaborando en el foro, para mi sera un placer, solo espero estar a la altura.
Dime solo si me habeis de dar indicaciones para mi colaboración o ya me pongo a comentar/responder los mensajes que estén dentro de mi nivel.

Gracias por todo.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ejercicio CU00697B Herencia múltiple java con interfaces
« Respuesta #3 en: 09 de Septiembre 2014, 23:39 »
Hola toni, ya veo la lógica que has aplicado y no parece mala idea. Sin embargo, pienso que podrías haber creado el array usando cualquiera de las interfaces disponibles sin necesidad de crear una adicional.

Algo del tipo: private static List <Edificio> listaConstrucciones;

De forma que en vez de trabajar con el tipo Construccion trabajaras con el tipo Edificio, y de este modo evitar tener una interface vacía.

Respecto al curso "Lenguaje de programación Java nivel avanzado I" lo tienes (índice incluido) en https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&Itemid=180

Sin embargo este curso no está completo ni pulido como el de programación Java desde cero. Nuestra intención es acometer una revisión y ampliación en profundidad del mismo en cuanto nos sea posible, pero no podemos concretar cuándo estará disponible en su nueva versión. Quizás desde fuera no se percibe, pero son cursos que no se crean en un par de días :), eso sin hablar del mantenimiento  :-\

En el foro puedes comenzar a comentar y responder a mensajes que estén dentro de tu nivel desde ya. Si continuas colaborando con nosotros ya nos pondremos en contacto por privado contigo para ir comentando cosas, incluso en el futuro para cambiar tu status a moderador de foro o para otras cosas que puedan surgir. El tiempo dirá... Seguimos en contacto...
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".