1
Aprender a programar desde cero / Ejemplo crear dos clases concretas que heredan de clase abstracta Java CU00695B
« en: 01 de Septiembre 2015, 12:50 »
Clases y métodos abstractos en Java. Abstract class. Clases del api. Ejemplos código y ejercicios.
Clase Persona
Clase Legislador
Clase Diputado
Clase Senador
Clase ListaLegisladores
No sabía exactamente a que se refería con cámara en que trabaja, así que lo he asociado con el tipo de Legislador que es, es decir, diputado o senador.
Clase Test Abstract
Ejecución del programa:
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]
package aprender;
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 "\n-Nombre: ".concat(nombre).concat("\n-Apellidos: ").concat(apellidos).concat("\n-Edad: ").concat(datoEdad.toString() ); }
}
Clase Legislador
Código: [Seleccionar]
package aprender;
public abstract class Legislador extends Persona {
private String provinciaQueRepresenta;
public Legislador(){
super();
provinciaQueRepresenta = "";
}
public Legislador (String nombre, String apellidos, int edad, String provinciaQueRepresenta){
super(nombre,apellidos,edad);
this.provinciaQueRepresenta = provinciaQueRepresenta;
}
public String toString(){
return super.toString().concat("\n-Provincia que repepresenta: ").concat(provinciaQueRepresenta);
}
abstract public String getCamaraEnQueTrabaja();
}
Clase Diputado
Código: [Seleccionar]
package aprender;
public class Diputado extends Legislador {
public Diputado(){
super();
}
public Diputado(String nombre, String apellidos, int edad, String provinciaQueRepresenta){
super(nombre, apellidos, edad, provinciaQueRepresenta);
}
public String toString(){
return super.toString();
}
public String getCamaraEnQueTrabaja(){
return "Diputado";
}
}
Clase Senador
Código: [Seleccionar]
package aprender;
public class Senador extends Legislador {
public Senador(){
super();
}
public Senador(String nombre, String apellidos, int edad, String provinciaQueRepresenta){
super(nombre, apellidos, edad, provinciaQueRepresenta);
}
public String toString(){
return super.toString();
}
public String getCamaraEnQueTrabaja(){
return "Senador";
}
}
Clase ListaLegisladores
Código: [Seleccionar]
package aprender;
import java.util.ArrayList;
public class ListaLegisladores {
private ArrayList <Legislador> listaLeg;
public ListaLegisladores(){
listaLeg = new ArrayList<Legislador>();
}
public void addLegislador(Legislador legislador){
listaLeg.add(legislador);
}
public void mostrarLista(){
String temp = "";
System.out.println("Mostrando lista de legisladores:\n ");
for (Legislador tmp:listaLeg){
System.out.println(tmp.toString());
if (tmp instanceof Senador){
temp = new Senador().getCamaraEnQueTrabaja();
}else{
temp = new Diputado().getCamaraEnQueTrabaja();
}
System.out.println("Camara en que trabaja este legislador: "+temp+"\n");
}
}
}
No sabía exactamente a que se refería con cámara en que trabaja, así que lo he asociado con el tipo de Legislador que es, es decir, diputado o senador.
Clase Test Abstract
Código: [Seleccionar]
package aprender;
public class TestAbstract {
public static void main (String [] args){
Legislador leg1 = new Diputado("Rubén","Perea Artalejo",18,"Toledo");
Legislador leg2 = new Diputado("Pepe","Perez Ruíz",34,"Albacete");
Legislador leg3 = new Diputado("Carlos","García",36,"Toledo");
Legislador leg4 = new Senador ("Ramón", "Ramirez", 23, "Madrid");
Legislador leg5 = new Senador ("Pedro", "Pedraza", 37, "Navarra");
Legislador leg6 = new Senador ("Adrian", "Esteban", 19, "Sevilla");
ListaLegisladores lista1 = new ListaLegisladores();
lista1.addLegislador(leg1); lista1.addLegislador(leg2); lista1.addLegislador(leg3); lista1.addLegislador(leg4); lista1.addLegislador(leg5); lista1.addLegislador(leg6);
lista1.mostrarLista();
}
}
Ejecución del programa:
Citar
Mostrando lista de legisladores:
-Nombre: Rubén
-Apellidos: Perea Artalejo
-Edad: 18
-Provincia que repepresenta: Toledo
Camara en que trabaja este legislador: Diputado
-Nombre: Pepe
-Apellidos: Perez Ruíz
-Edad: 34
-Provincia que repepresenta: Albacete
Camara en que trabaja este legislador: Diputado
-Nombre: Carlos
-Apellidos: García
-Edad: 36
-Provincia que repepresenta: Toledo
Camara en que trabaja este legislador: Diputado
-Nombre: Ramón
-Apellidos: Ramirez
-Edad: 23
-Provincia que repepresenta: Madrid
Camara en que trabaja este legislador: Senador
-Nombre: Pedro
-Apellidos: Pedraza
-Edad: 37
-Provincia que repepresenta: Navarra
Camara en que trabaja este legislador: Senador
-Nombre: Adrian
-Apellidos: Esteban
-Edad: 19
-Provincia que repepresenta: Sevilla
Camara en que trabaja este legislador: Senador