Autor Tema: Ejemplo clases y Métodos abstractos en Java Ejercicio resuelto CU00695B  (Leído 5087 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola, os dejo mi resolución de este ejercicio.

Citar
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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();
    }
}

« Última modificación: 27 de Julio 2015, 23:02 por Alex Rodríguez »

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:Clases y Métodos abstractos en Java. CU00695B
« Respuesta #1 en: 26 de Julio 2015, 22:57 »
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!

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Clases y Métodos abstractos en Java. CU00695B
« Respuesta #2 en: 26 de Julio 2015, 23:01 »
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.

 

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".