Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 29 de Abril 2015, 16:41
-
Declara una clase abstracta Legislador que herede de la clase Persona, con un atributo provinciaQueRepresenta (tipo String) y otros atributos. Declara un método abstracto getCamaraEnQueTrabaja. Crea dos clases concretas que hereden de Legislador: la clase Diputado y la clase Senador que sobreescriban los métodos abstractos necesarios. Crea una lista de legisladores y muestra por pantalla la cámara en que trabajan haciendo uso del polimorfismo.
Buenas tardes, dejo aquí la solución a mi ejercicio (para descargar pulsar en el icono del archivo estando logado en el foro), comentar que distingo entre años de senador y años de congresista, porque así en una ampliación del programa se podria distinguir si esa persona concreta a llevado X como senador y X como congresista.
Descarté al final usar enums para la camara que representan pues al seleccionar 1 o 2 ya sabía si era senador o congresista en el modelo que planteo de menu.
-
Hola Lorenzo, me parece un buen código
Buenas prácticas a destacar: uso de protected, sobreescritura de método toString, herencia con invocación de super al constructor de superclase, uso de diferentes clases, main corto y bien pensado...
Elige una opción entre 18 y 70 ¿es la edad no?
Recomendaciones: no usar la eñe en código como en añosDeSenador usar annosDeSenador
Hay una cosa un poco resbaladiza que es implementar el método abstracto como
public String getCamaraEnQueTrabaja(){ return camaraEnQueTrabaja; }
Está implementado por igual en ambas clases. Esto es válido para el ejercicio, pero hay que tener en cuenta que normalmente un método abstracto tendrá distintas implementaciones en las subclases, si no se definiría directamente como método no abstracto.
La clase EntradaDatos no parece que represente una entrada de datos, por eso pienso que sería mejor otro nombre como GestorEntradasYDatos o GestorDatosYOpciones.
Salu2!
-
Buenas Ogramar, gracias por tu tiempo como siempre.
Sobre la edad, si debia indicarlo para que se sepa en la salida del print.
Las eñes gracias por decirmelo he de mentalizarme, porque cobra mucho sentido, es un caracter que solo tienen los teclados hispanos.
La implementación, del metodo getCamaraEnQueTrabaja, sé (o creo te refieres a eso) debería ser abstracto el método, pero quise probar a definir un método dentro de una clase abstracta, para ver si con instancias de subclase podia llamarlo. Fue más una prueba, comprendo lo que quieres decirme, con cualquier cambio en subclases daria error.
Entrada datos, es cierto la he fusionado con las funciones de cada campo solicitado, por lo tanto ya es más un GestorDeDatos, tomo nota.
Gracias como siempre, tengo muy en cuenta todo lo que se me dice.