Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 22 de Noviembre 2018, 10:04
-
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
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
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
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
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
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
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 ;)
-
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