Autor Tema: Clases y métodos abstractos en Java. Abstract class con herencia entre CU00695B  (Leído 2612 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
Hola a todos !! Paso a dejar el código del ejercicio CU00695B del tutorial de programación Java e pdf. Desde ya muchas gracias. Saludos

Luis

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 Test -main-

Código: [Seleccionar]
public class Test {
    public static void main (String [ ] Args) {
        Diputado d1 = new Diputado("José Pablo", "Hernández López", 45, "Provincia del Norte", 125.30f, "Partido Liberal");
        Diputado d2 = new Diputado("Andrés Hugo", "Moltó Parra", 67, "Provincia del Sur", 134.25f, "Partido Socialista");
        Diputado d3 = new Diputado ("José Luis", "Ríos Mesa", 56, "Provincia del Centro", 99.87f, "Partido Democrata");
        Senador s1 = new Senador ("Juan José", "Pérez", 40, "Provincia del Oeste", 102.42f, "Asuntos Constitucionales");
        Senador s2 = new Senador ("Alberto Raúl", "Centa", 49, "Provincia del Este",112.20f, "Presupuesto y Hacienda");
        Senador s3 = new Senador ("Roberto José", "Mota", 44, "Provincia del Centro", 111.20f, "Educacion");
        ListinLegisladores listinLegislador = new ListinLegisladores ();
        listinLegislador.addLegislador (d1);
        listinLegislador.addLegislador (d2);
        listinLegislador.addLegislador (d3);
        listinLegislador.addLegislador (s1);
        listinLegislador.addLegislador (s2);
        listinLegislador.addLegislador (s3);
        listinLegislador.imprimirListin();
        System.out.println ("El importe de las dietas del Congreso que consta en el listín es " +
        listinLegislador.importeTotalDietaLegislador()+ " pesos");
    }  }   //Cierre del main y cierre de la clase

Clase Persona

Código: [Seleccionar]
public class Persona { //Código de la clase Persona ejemplo aprenderaprogramar.com
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 "Nombres: ".concat(nombre).concat(" - Apellidos: ").concat(apellidos).concat(" - Edad: ").concat(datoEdad.toString() ); } 
} //Cierre de la clase

Clase abstracta Legislador

Código: [Seleccionar]
public abstract class Legislador extends Persona {
    String provinciaQueRepresenta;
    float dieta=0;
    public Legislador () { super();
        provinciaQueRepresenta = ""; }
    public Legislador (String nombre, String apellidos, int edad, String provinciaQueRepresenta, float dieta ) {
        super(nombre, apellidos, edad);
        this.dieta=dieta;
        this.provinciaQueRepresenta = provinciaQueRepresenta; }
    // Métodos
    public void setProvinciaQueRepresenta (String provinciaQueRepresenta) {
        this.provinciaQueRepresenta = provinciaQueRepresenta; }
    public String getProvinciaQueRepresenta () { return provinciaQueRepresenta; }
    public float getDieta () { return dieta; }
    public String toString () { return super.toString().concat(" - Provincia: ").concat(provinciaQueRepresenta).concat(" - Dieta(unid): ").concat(String.valueOf(dieta)); }
    abstract public String getCamaraEnQueTrabaja(); // Método abstracto
    abstract public float dietaLegislador ();  // Método abstracto
    abstract public String datosLegislador(); // Método abstracto
} //Cierre de la clase

Clase Diputado

Código: [Seleccionar]
public class Diputado extends Legislador {
       String bloquePolitico = "";
       String camaraLegislativa = "Cámara de Diputados";
        // Constructor ejemplo aprenderaprogramar.com
        public Diputado(String nombre, String apellidos, int edad, String provinciaQueRepresenta, float dieta, String bloquePolitico) {
         super(nombre, apellidos, edad, provinciaQueRepresenta, dieta);
         this.bloquePolitico = bloquePolitico;}
        public String getBloquePolitico(){ return bloquePolitico;}
        public String getCamaraEnQueTrabaja(){ return camaraLegislativa;}
        public float dietaLegislador () { return TipoDeLegislador.DIPUTADO.getDietaBasica() * dieta; }  //Método abstracto sobreescrito en esta clase
        public String datosLegislador() { return bloquePolitico;}
} //Cierre de la clase

Clase Senador

Código: [Seleccionar]
public class Senador extends Legislador {
    String comisionParlamentaria="";
    String camaraLegislativa = "Cámara de Senadores";
    // Constructores
    public Senador (String nombre, String apellidos, int edad, String provinciaQueRepresenta, float dieta, String comisionParlamentaria) {
        super(nombre, apellidos, edad, provinciaQueRepresenta, dieta);
        this.comisionParlamentaria=comisionParlamentaria;}
    public String getComisionParlamentaria(){ return comisionParlamentaria;}
    public String getCamaraEnQueTrabaja(){ return camaraLegislativa;}
    public float dietaLegislador () { return TipoDeLegislador.SENADOR.getDietaBasica() * dieta ; } //Método abstracto sobreescrito en esta clase
    public String datosLegislador() { return comisionParlamentaria;}
} //Cierre de la clase

Clase ListinLegisladores

Código: [Seleccionar]
import java.util.ArrayList; import java.util.Iterator;
public class ListinLegisladores {
    private ArrayList <Legislador> listinLegisladores; //Campo de la clase 
    public ListinLegisladores () {  listinLegisladores = new ArrayList <Legislador> ();  } //Constructor
    public void addLegislador (Legislador legislador) {  listinLegisladores.add(legislador);  } //Método
    public void imprimirListin() {  //Método
        String tmpStr1 = ""; //String temporal que usamos como auxiliar
        String tmpStr2 = ""; //String temporal que usamos como auxiliar
        System.out.println ("Se procede a mostrar los datos de los Legisladores existentes en el listín \n");
        for (Legislador tmp: listinLegisladores) { System.out.println (tmp.toString () );
        if (tmp instanceof Diputado) { tmpStr1 = "Diputado"; tmpStr2="Bloque Politico: ";} else { tmpStr1 = "Senador"; tmpStr2="Comision Parlamentaria: "; }
        System.out.println("Lugar de Trabajo :"+(tmp.getCamaraEnQueTrabaja())+" - "+tmpStr2+(tmp.datosLegislador())+" - Tipo de legislador: "+tmpStr1+" - Dieta del legislador: "+(tmp.dietaLegislador())+"\n");}
    } //Cierre método imprimirListin
    public float importeTotalDietaLegislador() {
        float importeTotal = 0f; //Variable temporal que usamos como auxiliar
        Iterator<Legislador> it = listinLegisladores.iterator();
        while (it.hasNext() ) { importeTotal = importeTotal + it.next().dietaLegislador(); }
        return importeTotal;         
    } //Cierre del método importeTotalNominaProfesorado
} //Cierre de la clase ejemplo aprenderaprogramar.com

y mi infaltable clase enum   ;D

Código: [Seleccionar]
/**
 * Enumeration class DietaBasica - write a description of the enum class here
 *
 * @author (your name here)
 * @version (version number or date here)
 */
public enum TipoDeLegislador
{
    DIPUTADO(30f), SENADOR(40f);
    private final float dietaBasica;
    TipoDeLegislador(float dietaBasica){
        this.dietaBasica=dietaBasica;
    }
    public float getDietaBasica(){
    return dietaBasica;
    }
}
« Última modificación: 06 de Diciembre 2017, 17:24 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola LuisM, el ejercicio cumple con lo que se pedía y aún contiene un código extra que no se requería para este ejercicio (como usar una clase enum)

Solo señalarte que tengas cuidado con los nombres de métodos y clases, por ejemplo en la clase ListinLegisladores aparece un método public float importeTotalDietaLegislador() cuyo nombre no parece muy acertado, ya que si te refieres a todos los legisladores del listín parece más apropiado algo como importeTotalDietaLegisladores() ó importeTotalDietasListin().

Puede verse un modelo de respuesta para este ejercicio en https://www.aprenderaprogramar.com/foros/index.php?topic=2961.0

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