EJERCICIO
Se plantea desarrollar un programa Java que permita representar la siguiente situación. Una
instalación deportiva es un recinto delimitado donde se practican deportes, en Java interesa
disponer de un método int getTipoDeInstalacion(). Un edificio es una construcción cubierta y en
Java interesa disponer de un método double getSuperficieEdificio(). Un polideportivo es al mismo
tiempo una instalación deportiva y un edificio; en Java interesa conocer la superficie que tiene y el
nombre que tiene. Un edificio de oficinas es un edificio; en Java interesa conocer el número de
oficinas que tiene. Definir dos interfaces y una clase que implemente ambas interfaces para
representar la situación anterior. En una clase test con el método main, crear un ArrayList que
contenga tres polideportivos y dos edificios de oficinas y utilizando un iterator, recorrer la
colección y mostrar los atributos de cada elemento. ¿Entre qué clases existe una relación que se
asemeja a la herencia múltiple?
Puedes comprobar si tu respuesta es correcta consultando en los foros aprenderaprogramar.com.
public interface InstalacionDeportiva
int getTipoDeInstalacion();
public interface Edificio
double getSuperficieEdificio();
String mostrarAtributos();
public class Polideportivo implements InstalacionDeportiva, Edificio
private int tipoDeInstalacion;
private double superficieEdificio;
private String nombre;
public Polideportivo(){
tipoDeInstalacion = 0;
superficieEdificio = 0;
nombre = "Unknown";
}
public Polideportivo(int tipoDeInstalacion, double superficieEdificio, String nombre){
this.tipoDeInstalacion = tipoDeInstalacion;
this.superficieEdificio = superficieEdificio;
this.nombre = nombre;
public void setTipoDeInstalacion(int tipoDeInstalacion){
this.tipoDeInstalacion = tipoDeInstalacion;}
public void setSuperficieEdificio(double superficieEdificio){
this.superficieEdificio = superficieEdificio;}
public void setNombre(String nombre){this.nombre = nombre;}
public int getTipoDeInstalacion(){return tipoDeInstalacion;}
public double getSuperficieEdificio(){return superficieEdificio;}
public String getNombre(){return nombre;}
public String mostrarAtributos(){
return "El polideportivo es de tipo: " + getTipoDeInstalacion() + " con una superficie de: "
+ getSuperficieEdificio()+" m2. Y su nombre es: "+getNombre();
public class Oficinas implements Edificio
private int numeroOficinas;
private double superficieEdificio;
public Oficinas(){
numeroOficinas = 0;
superficieEdificio = 0;
public Oficinas(int numeroOficinas, double superficieEdificio){
this.numeroOficinas = numeroOficinas;
this.superficieEdificio = superficieEdificio;
public void setSuperficieEdificio(double superficieEdificio){
this.superficieEdificio = superficieEdificio;}
public void setNumeroOficinas(int numeroOficinas){
this.numeroOficinas = numeroOficinas;}
public double getSuperficieEdificio(){return superficieEdificio;}
public int getNumeroOficinas(){return numeroOficinas;}
public String mostrarAtributos(){
return "La oficina tiene: " + getNumeroOficinas() + " oficinas y consta de
"+getSuperficieEdificio()+" m2.";
public class Test
public static void main(String[] args){
ArrayList<Edificio> lista = new ArrayList<Edificio>();
Oficinas of1 = new Oficinas(4,500);
Oficinas of2 = new Oficinas(2,300);
Oficinas of3 = new Oficinas(6,1000);
Polideportivo pd1 = new Polideportivo(1,1000,"Polideportivo BCN");
Polideportivo pd2 = new Polideportivo(1,2000,"Polideportivo MAD");
lista.add(of1);
lista.add(of2);
lista.add(of3);
lista.add(pd1);
lista.add(pd2);
Iterator<Edificio> it = lista.iterator();
while(it.hasNext()){
System.out.println(it.next().mostrarAtributos());