Autor Tema: Ejemplo crear dos clases concretas que heredan de clase abstracta Java CU00695B  (Leído 4379 veces)

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
Clases y métodos abstractos en Java. Abstract class. Clases del api. Ejemplos código y ejercicios.

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
« Última modificación: 05 de Septiembre 2015, 13:35 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Entrega nº95 del curso "Aprender programación Java desde cero" CU00695B
« Respuesta #1 en: 03 de Septiembre 2015, 03:08 »
Hola Rubén:

Estuve revisando tu ejercicio y lo veo excelente! Utilizas muy bien los conceptos que se explican en esta entrega y los conceptos que se vienen acumulando de entregas anteriores.

Un único detalle que yo puntualizaría:
Tanto en la clase Senador como en la clase Diputado, no haría falta sobreescribir el método toString():

Código: [Seleccionar]
public String toString(){
return super.toString();
}

Este método ya es heredado por ambas clases de su clase padre Legislador.
Valdría la pena sobreescribir el método si es que la clase Diputrado o la clase Senador aportaran algo nuevo al método, pero si solamente invocan al método de la super clase, entonces no habría falta sobreescribirlo, ya lo heredan.

Analízalo y cualquier duda lo volvemos a revisar.

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
Re:Entrega nº95 del curso "Aprender programación Java desde cero" CU00695B
« Respuesta #2 en: 03 de Septiembre 2015, 10:05 »
Muchas gracias, y tienes toda la razón. Siempre me ocurre algo parecido.

 

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