Autor Tema: Java ArrayList de elementos de clase abstracta con herencia en BlueJ CU00695B  (Leído 5384 veces)

Luis Fdo Carvajal

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
He aquí una solución al ejercicio CU00695B del tutorial de programador Java desde cero para su revisión. Gracias

Declara una clase abstracta Legislador que herede de la clase Persona2, 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
Código: [Seleccionar]
package persona2;

/**
 *
 * @author ITCO1724
 */
public class Persona2 { //Código de la clase Persona1
private String nombre;
private String apellidos;
private int edad;

public Persona2() {
    nombre = "";
    apellidos = "";
    edad = 0;
}

public Persona2 (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; // transformamos edad en un Integer para poder aplicarle el método toString()
    return "-Nombre: ".concat(nombre).concat(" -Apellidos: ").concat(apellidos).concat(" -Edad: ").concat(datoEdad.toString() ); }

} //Cierre de la clase

Código: [Seleccionar]
package persona2;

/**
 *
 * @author ITCO1724
 */
public abstract class Legislador extends Persona2 {

    private String IdLegislador;
    private String provinciaQueRepresenta;
    String CamaraEnQueTrabaja;
   
   
// Constructores

    public Legislador () {
        super();         
        IdLegislador = "Unknown";   }
   
    public Legislador (String nombre, String apellidos, int edad, String id) {
        super(nombre, apellidos, edad);   
        IdLegislador = id;
    }                       //Cierre del constructor
   
    // Métodos
    public void setIdLegislador (String IdLegislador) { this.IdLegislador = IdLegislador;   }
    public String getIdLegislador () { return IdLegislador;   }
    public void setprovinciaQueRepresenta (String provinciaQueRepresenta) { this.provinciaQueRepresenta = provinciaQueRepresenta;   }
    public String getprovinciaQueRepresenta () { return provinciaQueRepresenta;   }
   
    //public void setCamaraEnQueTrabaja (String CamaraEnQueTrabaja) { this.CamaraEnQueTrabaja = CamaraEnQueTrabaja;   }
    public abstract String getCamaraEnQueTrabaja (); //Método abstracto de la clase padre obligatorio especializar en las clases hijas Senador y Diputado
   
   
public void mostrarDatos() {

        System.out.println ("Legislador de nombre: " + getNombre() + " " +

        getApellidos() + " con No. de identificación: " + getIdLegislador() );   }

    public String toString () { return super.toString().concat(" -IdLegislador: ").concat(IdLegislador);
       
   
    }

    abstract public float importeNomina ();  // Método abstracto
} //Cierre de la clase


Código: [Seleccionar]
package persona2;

/**
 *
 * @author ITCO1724
 */
import java.util.Calendar;

public class Diputado extends Legislador {

    // Campo de la clase ejemplo aprenderaprogramar.com

    private Calendar fechaNombramiento;

// Constructores

    public Diputado (Calendar fechaInicio) {

        super();      fechaNombramiento = fechaInicio; }

    public Diputado (String nombre, String apellidos, int edad, String id, Calendar fechaInicio) {

                super(nombre, apellidos, edad, id);

        fechaNombramiento = fechaInicio; }

    public Calendar getFechaNombramiento () { return fechaNombramiento; } //Método

    public String toString () { // Sobreescritura del método

        return super.toString().concat (" Fecha nombramiento: ").concat (fechaNombramiento.getTime().toString()); }

    public float importeNomina () { return 120f * 10.5f ; } //Método abstracto sobreescrito en esta clase
   
    public String getCamaraEnQueTrabaja (){ return CamaraEnQueTrabaja;} //Método abstracto especializado de la clase hija senador
} //Cierre de la clase

Código: [Seleccionar]
package persona2;
import java.util.Calendar;
/**
 *
 * @author ITCO1724
 */
public class Senador extends Legislador {
   
    private Calendar fechaNombramiento;
    private Calendar fechaInicio;

    public Senador (Calendar fechaInicio) {

        super();      fechaNombramiento = fechaInicio; }
   
    public Senador(String nombre, String apellidos, int edad, String id, Calendar fechaInicio) {

     super(nombre, apellidos, edad, id);
     fechaNombramiento = fechaInicio;
    }

    public float importeNomina () { return 150f * 12.2f; }  //Método abstracto sobreescrito en esta clase
   
   
     public String getCamaraEnQueTrabaja (){ return CamaraEnQueTrabaja;} //Método abstracto especializado de la clase hija senador
   
   
} //Cierre de la clase


Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;

public class ListaLegisladores {

    private ArrayList <Legislador> listaLegisladores; //Campo de la clase 

    public ListaLegisladores () {  listaLegisladores = new ArrayList <Legislador> ();  } //Constructor
    public void addLegislador (Legislador legislador) {  listaLegisladores.add(legislador);  } //Método
    public void imprimirLista() {  //Método

        String tmpStr1 = ""; //String temporal que usamos como auxiliar
        String tmpStr2 = "";
        String tmpStr3 = "";

        System.out.println ("PROCEDEMOS A MOSTRAR LA LISTA DE CONGRESISTAS ADSCRITOS\n");

        for (Legislador tmp: listaLegisladores) {         
            System.out.println (tmp.toString () );

            if (tmp instanceof Diputado) { tmpStr1 = "Diputado";tmpStr2 = "Camara de Representantes";tmpStr3 = "ANTIOQUIA";} else { tmpStr1 = "Diputado"; tmpStr2 = "Senado de la Republica";tmpStr3 = "VALLE"; }

                System.out.println("-CARGO DESEMPEÑADO:"+tmpStr1+" -SALARIO DEVENGADO : "+(tmp.importeNomina())+"-SEDE DE TRABAJO :"+tmpStr2 +"    Representante de :"+tmpStr3+ "\n");}

    } //Cierre método imprimirLista

    public float importeTotalNominaLegislador() {

        float importeTotal = 0f; //Variable temporal que usamos como auxiliar

        Iterator<Legislador> it = listaLegisladores.iterator();

        while (it.hasNext() ) { importeTotal = importeTotal + it.next().importeNomina(); }

        return importeTotal;         

    } //Cierre del método importeTotal
} //Cierre de la clase

Código: [Seleccionar]
package persona2;

import java.util.Calendar;

/**
 *
 * @author ITCO1724
 */
public class TestAbstract {

    public static void main (String [ ] Args) {

        Calendar fecha1 = Calendar.getInstance();
        fecha1.set(2017,12,20); //Los meses van de 0 a 11, luego 10 representa noviembre
       
        //Lista de Legisladores
        Diputado pi1 = new Diputado("Julio", "Medina Florez", 45, "70080403", fecha1);
        Diputado pi2 = new Diputado("Manuel", "Murillo Toro", 87, "72332634", fecha1);
        Diputado pi3 = new Diputado("Abigail", "Ríos Mesa", 76, "63897521", fecha1);
        Senador pt1 = new Senador ("Andres", "Rios Gutierrez", 23, "45897236",fecha1 );
        Senador pt2 = new Senador ("Carepapa", "Centeno Cifuentes", 49, "36578924",fecha1);
        Senador pt3 = new Senador ("Roy", "Molino Viejo", 49, "1478952",fecha1);

        ListaLegisladores listaLegisladores = new ListaLegisladores ();
        listaLegisladores.addLegislador (pi1);
        listaLegisladores.addLegislador(pi2);
        listaLegisladores.addLegislador (pi3);
        listaLegisladores.addLegislador (pt1);
        listaLegisladores.addLegislador(pt2);
        listaLegisladores.addLegislador (pt3);
        listaLegisladores.imprimirLista();
       
        System.out.println ("EL TOTAL DE LA NÓMINA DE LOS CONGRESISTAS ES  " +
        listaLegisladores.importeTotalNominaLegislador()+ " Dolares");
    }  }   //Cierre del main y cierre de la clase

« Última modificación: 18 de Junio 2017, 18:16 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Luis Fdo Carvajal tu código cumple con lo que se pedía y además añade otras cosas que no se indicaban en el enunciado del ejercicio

Una cosa a cambiar sería el hecho de que al ejecutar el programa todos los legisladores indica que son diputados, cuando lo correcto sería que en algunos casos indicara que son diputados y en otros casos indicara que son senadores.

Esto se debe a esta línea:

if (tmp instanceof Diputado) { tmpStr1 = "Diputado";tmpStr2 = "Camara de Representantes";tmpStr3 = "ANTIOQUIA";} else { tmpStr1 = "Diputado"; tmpStr2 = "Senado de la Republica";tmpStr3 = "VALLE"; }

en el else deberíamos tener tmpStr1 = "Senador"

Saludos

 

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