Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: pedro,, en 26 de Julio 2015, 17:17
-
Hola, os dejo mi resolución de este ejercicio.
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.
Clase Persona
public class Persona {
private String nombre; private String apellidos; private int edad;
public Persona() {
nombre = "";
apellidos = "";
edad = 0;
}
public Persona (String nombre, String apellidos, int edad) {
this.nombre = nombre;
this.apellidos = apellidos;
this.edad = edad;
}
public String getNombre() { return nombre; }
public String getApellidos() { return apellidos; }
public int getEdad() { return edad; }
public String toString() {
Integer datoEdad = edad;
return "---------\nNombre: ".concat(nombre).concat("\nApellidos: ").concat(apellidos).concat("\nEdad: ").concat(datoEdad.toString() );
}
}
Clase abstracta Legislador
public abstract class Legislador extends Persona{
private String provinciaQueRepresenta;
private String dni;
public Legislador(){
super();
provinciaQueRepresenta = "";
dni = "";
}
public Legislador(String nombre, String apellidos, int edad, String provinciaQueRepresenta, String dni){
super(nombre, apellidos, edad);
this.provinciaQueRepresenta = provinciaQueRepresenta;
this.dni = dni;
}
public void setProvinciaQueRepresenta(String provinciaQueRepresenta){ this.provinciaQueRepresenta = provinciaQueRepresenta; }
public void setDni(String dni){ this.dni = dni; }
public String getProvinciaQueRepresenta(){ return provinciaQueRepresenta; }
public String getDni(){ return dni; }
public String toString(){
return super.toString().concat("\nProvincia que representa: ").concat(provinciaQueRepresenta).concat("\nDni: ".concat(dni));
}
abstract public String getCamaraEnQueTrabaja();
}
Clase Diputado
public class Diputado extends Legislador{
private int numDiputado;
public Diputado(){
super();
numDiputado = 0;
}
public Diputado(String nombre, String apellidos, int edad, String provinciaQueRepresenta, String dni, int numDiputado){
super(nombre, apellidos, edad, provinciaQueRepresenta, dni);
this.numDiputado = numDiputado;
}
public void setNumeroDiputado (int numCongresista){ this.numDiputado = numDiputado; }
public int getNumDiputado(){ return numDiputado; }
public String getCamaraEnQueTrabaja(){
return ("Congreso");
}
public String toString(){
Integer datoNumDiputado = numDiputado;
return super.toString().concat("\nNumero de Diputado: ").concat(datoNumDiputado.toString());
}
}
Clase Senador
public class Senador extends Legislador{
private int numCongresista;
public Senador(){
super();
numCongresista = 0;
}
public Senador(String nombre, String apellidos, int edad, String provinciaQueRepresenta, String dni, int numCongresista){
super(nombre, apellidos, edad, provinciaQueRepresenta, dni);
this.numCongresista = numCongresista;
}
public void setNumCongresista(int numCongresista){ this.numCongresista = numCongresista; }
public int getNumCongresista(){ return numCongresista; }
public String getCamaraEnQueTrabaja(){
return ("Senado");
}
public String toString(){
Integer datoNumCongresista = numCongresista;
return super.toString().concat("\nNumero de congresista: ").concat(datoNumCongresista.toString());
}
}
Clase ListaLegisladores
import java.util.ArrayList;
public class ListaLegisladores{
private ArrayList <Legislador> listaLegisladores;
public ListaLegisladores(){
listaLegisladores = new ArrayList <Legislador>();
}
public void addLegislador (Legislador legislador){
listaLegisladores.add(legislador);
}
public void muestraListaLegisladores(){
String tmpStr1 = "";
System.out.println ("Legisladores que hay en la lista.\n");
for (Legislador tmp: listaLegisladores){
System.out.println (tmp.toString());
if (tmp instanceof Diputado){
tmpStr1 = "Diputado";
} else {
tmpStr1 = "Congresista";
}
System.out.println("El legislador es: " + tmpStr1 + "\nPertenece a la cámara del " + tmp.getCamaraEnQueTrabaja());
}
}
}
Clase TestAbstract2
public class TestAbstract2{
public static void main(String [] Args){
Diputado dipu1 = new Diputado("José", "Hernández López", 45, "Madrid", "7894561-S", 78954);
Diputado dipu2 = new Diputado("Andrés", "Moltó Parra", 46, "Valencia", "2547889-S", 48564);
Diputado dipu3 = new Diputado("José", "Ríos Mesa", 76, "Sevilla", "98783-S", 78995);
Senador sen1 = new Senador("Juan", "Pérez Pérez", 23, "Ourense", "4568795-S", 125657);
Senador sen2 = new Senador("Alberto", "Centa Mota", 49, "Malaga", "4567894-S", 35487);
Senador sen3 = new Senador("Alberto", "Centa Mota", 49, "Murcia", "4578561-S", 78945);
ListaLegisladores listaLegisladores = new ListaLegisladores();
listaLegisladores.addLegislador(dipu1);
listaLegisladores.addLegislador(dipu2);
listaLegisladores.addLegislador(dipu3);
listaLegisladores.addLegislador(sen1);
listaLegisladores.addLegislador(sen2);
listaLegisladores.addLegislador(sen3);
listaLegisladores.muestraListaLegisladores();
}
}
-
Hola! Después de ver el código yo lo veo todo perfecto
Los tipos estáticos los podrías declarar como Legislador así,
Legislador dipu1 = new Diputado("José", "Hernández López", 45, "Madrid", "7894561-S", 78954);
pero como lo has hecho también está bien
Nos vemos!
-
Tienes razón, en ejercicios anteriores lo hice como dices, no se en que estaría pensando cuando hice este ejercicio.
saludos y gracias por los comentarios.