Autor Tema: Java para qué sirven métodos y clases abstractas cuándo deben usarse CU00695B  (Leído 1910 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola dejo el Ejercicio del tutorial de programación java desde cero CU00695B .Clases y métodos abstractos en Java. Abstract class. Clases del api. 

Clase Presona

Código: [Seleccionar]
public class Persona { //Código de la clase Persona ejemplo aprenderaprogramar.com
    private String nombre;
    private String apellidos;
    private int edad;
    //Constructores
    public Persona() {
        nombre = "";
        apellidos = "";
        edad = 0; }
    //Constructor sobrecargado
    public Persona (String nombre, String apellidos, int edad) {
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.edad = edad;
    }
    //Metodos get
    public String getNombre() { return nombre; }

    public String getApellidos() { return apellidos; }

    public int getEdad() { return edad; }
    //toString sobrecargado
    public String toString() {
        Integer datoEdad = edad;
        return "Nombre: ".concat(nombre).concat("\nApellidos: ").concat(apellidos).concat("\nEdad: ").concat(datoEdad.toString() )+"\n";
    }
} //Cierre de la clase


Clase Legislador

Código: [Seleccionar]
public abstract class  Legislador extends Persona

{
    String provinciaQueRepresenta;
    String cargoQueOcupa;
     double salario;
    public Legislador()
    {
        super();
        provinciaQueRepresenta="Desconicida";
        cargoQueOcupa="Desconicido";
        salario=0;
    }

    public Legislador(String nombre, String apellidos, int edad,String provinciaQueRepresenta,String cargoQueOcupa,double salario){
        super(nombre,apellidos,edad);
        this.provinciaQueRepresenta=provinciaQueRepresenta;
        this.cargoQueOcupa=cargoQueOcupa;
        this.salario=salario;
    }

    public String getProvinciaQueRepresenta(){
        return provinciaQueRepresenta;
    }

    public String getCargoQueOcupa(){
        return  cargoQueOcupa;
    }
    public double getSalario(){
        return  salario;
    }

    //Metodo abstracto
    abstract public String getCamaraEnQueTrabaja();

    public void setProvinciaQueRepresenta(String provinciaQueRepresenta ){
        this.provinciaQueRepresenta=provinciaQueRepresenta;
    }

    public void setCargoQueOcupa(String cargoQueOcupa){
        this.cargoQueOcupa=cargoQueOcupa;
    }
public void getSalario(double salario){
        this.salario=salario;
    }
    public String toString() {
        return super.toString()+"Provincia que representa: "+getProvinciaQueRepresenta()+
                                "\nCargo que Ocupa: "+getCargoQueOcupa()+
                                "\nSalario mensual: "+getSalario()+"\n";
    }
}


Clase Diputado

Código: [Seleccionar]
public class Diputado extends Legislador
{
    String camaraEnQueTrabaja;
    String partidoQueRepresenta;
   
    /**
     * Constructor for objects of class Diputado
     */
    public Diputado()
    {
        super();
        camaraEnQueTrabaja="Desconocida";
        partidoQueRepresenta="Desconocido";
        double salario;
    }

    public Diputado(String nombre, String apellidos, int edad,String provinciaQueRepresenta,String cargoQueOcupa,double salario,
                    String camaraEnQueTrabaja,String partidoQueRepresenta)
    {
        super(nombre,apellidos,edad,provinciaQueRepresenta,cargoQueOcupa,salario);
        this.camaraEnQueTrabaja=camaraEnQueTrabaja;
        this.partidoQueRepresenta=partidoQueRepresenta;
         
    }

    public String getCamaraEnQueTrabaja(){ return camaraEnQueTrabaja;}
    public String getPartidoQueRepresenta(){ return partidoQueRepresenta;}
     
   
    public void setCamaraEnQueTrabaja(){ this.camaraEnQueTrabaja=camaraEnQueTrabaja;}
    public void setPartidoQueRepresenta(){ this.partidoQueRepresenta=partidoQueRepresenta;}
   
   
    public String toString() {
        return super.toString()+"Camara en la que trabaja: "+getCamaraEnQueTrabaja()+
                                "\n Partido que Representa: "+getPartidoQueRepresenta() ;
    }
}


Clase Senador

Código: [Seleccionar]
public class Senador  extends Legislador
{
    // instance variables - replace the example below with your own
    String camaraEnQueTrabaja;
    double dietasDesplazamientos;
    int diasDesplazado;
    double salarioSenador;

    /**
     * Constructor for objects of class Senador
     */
    public Senador()
    {
        super();
        camaraEnQueTrabaja="Desconocida";
        dietasDesplazamientos=0;
        diasDesplazado=0;
        salarioSenador=0;

    }

    public Senador(String nombre, String apellidos, int edad,String provinciaQueRepresenta,String cargoQueOcupa,
    double salario,String camaraEnQueTrabaja,String partidoQueRepresenta,
    double dietasDesplazamientos, int diasDesplazado){
        super(nombre,apellidos,edad,provinciaQueRepresenta,cargoQueOcupa,salario);
        this.camaraEnQueTrabaja=camaraEnQueTrabaja;
        this.dietasDesplazamientos=dietasDesplazamientos;
        this.diasDesplazado=diasDesplazado;

    }
    public String getCamaraEnQueTrabaja(){ return camaraEnQueTrabaja;}
    public double getDietasDesplazamientos(){ return dietasDesplazamientos;}
    public int  getDiasDesplazado(){ return diasDesplazado;}

    public void setCamaraEnQueTrabaja(){ this.camaraEnQueTrabaja=camaraEnQueTrabaja;}

    public void setDietasDesplazamientos(){ this.dietasDesplazamientos=dietasDesplazamientos;}

    public void setDiasDesplazado(){ this.diasDesplazado=diasDesplazado;}

    public String toString() {
        return super.toString()+"Camara en la que trabaja: "+getCamaraEnQueTrabaja()+
        " \nDietas desplazamientos: "+getDietasDesplazamientos()+
        " \nDias desplazado :"+getDiasDesplazado()+
        "\nLas dietas ascienden a "+salarioTotal();
    }
public String salarioTotal(){
    double totalDietas,totalSalario;
    totalDietas=getDietasDesplazamientos()*getDiasDesplazado();
    totalSalario=totalDietas+salario;
   
  return totalDietas+"\ny el salario total es de: "+totalSalario+" euros";
}
}


Clase ListaLegisladores

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 separador = new String(new char[125]).replace("\0", "*");
        System.out.println ("Se procede a mostrar los datos de los legisladores en la lista \n");
        for (Legislador tmp: listaLegisladores) {
            System.out.println (tmp.toString () );
            if (tmp instanceof Diputado) {
                tmpStr1 = "Diputado";
            } else {
                tmpStr1 = "Senador";
            }
            System.out.println("Tipo de Legislador:"+tmpStr1+"\n"+separador+"\n");
        }
    }//Cierre método imprimirListin
}


Clase TestAbstract Ejecutable

Código: [Seleccionar]
public class TestAbstract
 {
    public static void main (String [ ] Args) {
          ListaLegisladores listaLegislador = new  ListaLegisladores();
                                           
       Diputado dipu1 = new Diputado("José", "López Sanchez", 45, "Valencia","Ministro de Agricultura, Pesca y Alimentación",2500.65,"Congreso", "Partido Sinigual");
       Diputado dipu2 = new Diputado("Figueruelas", "Mascaez Ruiperez", 38, "Santander","Ministro de Asuntos Exteriores, Unión Europea y Cooperación",2500.65,"Congreso", "Partido Populismo");
       Diputado dipu3 = new Diputado("Antonio", "Del Tajo Hernandez", 42, "La Rioja","Ministro de Defensa",2500.65,"Congreso", "Partido Los Vordes");
       Diputado dipu4 = new Diputado("Francisco Paco", "Quico y Otros", 59, "Murcia","Ministro de Fomento",2500.65,"Congreso", "Partido FPQO");
       Diputado dipu5 = new Diputado("Pepe Jose", "Fernandez De Izquierdo", 63, "Barcelona","Ministro de Educacion",2500.65,"Congreso", "Partido Soccatala");
           
       Senador sena1 = new Senador ("Jose Paniza ", "Cervera Sanchez", 46, "Cuenca","Legislativo ",2300.56, "Senado","Partido Tragapanes ",55.66,112);     
       Senador sena2 = new Senador ("Miguel ", "Exposito Ploron", 54, "Teruel","Presupuestario ",2300.5, "Senado","Partido Sacamantecas",55.66,15);     
       Senador sena3 = new Senador ("Antonio", "del Rio Secanillo", 72, "Jerez","Autorizacion de tratados internacinales ",2300.25, "Senado","Partido Chupacharcos ",55.66,22);     
       Senador sena4 = new Senador ("Fernando", "Timoteo del Corral", 56, "Sevilla","Control e impulso politico",2300.356, "Senado","Partido Nodejonigota",55.66,2);     
       Senador sena5 = new Senador ("Roberto ", "Peligarto de Primi", 39, "Albacete","Integracion territorial ",2300.57, "Senado","Partido Caigquiencaiga",55.66,27);     
       
       
        listaLegislador.addLegislador (dipu1);listaLegislador.addLegislador (sena1);listaLegislador.addLegislador (sena2);
        listaLegislador.addLegislador (sena3);listaLegislador.addLegislador (dipu2);listaLegislador.addLegislador (dipu3);
        listaLegislador.addLegislador (dipu4); listaLegislador.addLegislador (sena4);listaLegislador.addLegislador (sena5);
        listaLegislador.addLegislador (dipu5);
        listaLegislador.imprimirLista();
       
    }  }   //Cierre del main y cierre de la clase

Gracias ;)
« Última modificación: 14 de Agosto 2019, 19:31 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Buenas, para quien revise este ejercicio dejo planteada una cuestión y un comentario.

Si nos fijamos en el código, hay atributos que podrían considerarse "repetidos" en las clases Diputado y Senador, por ejemplo camaraEnQueTrabaja. ¿Cómo podría modificarse el diseño para que este atributo y sus métodos sean comunes a ambas clases? ¿Incumpliría esto el enunciado del ejercicio? ¿Estaría esto más o menos de acuerdo con los principios de la programación orientada a objetos?

Otro detalle ya comentado en algunos ejercicios: en general sería preferible en lugar de
Diputado dipu1 = new Diputado("José", "López Sanchez", 45, "Valencia","Ministro de Agricultura, Pesca y Alimentación",2500.65,"Congreso", "Partido Sinigual");

Usar

Legislador dipu1 = new Diputado("José", "López Sanchez", 45, "Valencia","Ministro de Agricultura, Pesca y Alimentación",2500.65,"Congreso", "Partido Sinigual");

Salu2

 

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