Hola Dejo el Ejercicio CU00697B del programa formativo en programación orientada a objetos. Para qué sirven las interfaces Java. Implementar una interfaz del API.
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?
Solamente se da la situación de herencia múltiple en la Clase Polideportivo entre esta y las interfaces InstalacionDeportiva y EdificioCodigo interface InstalacionDeportivapublic interface InstalacionDeportiva {
int getTipoDeInstalacion();
}
Codigo interface Edificiopublic interface Edificio
{
double getSuperficieEdificio();
}
Codigo Clase Oficinaspublic class Oficinas implements Edificio
{
double superficie;
int numeroOficinas;
String separador = new String(new char[95]).replace("\0", "*")+"\n";
//Constructores
public Oficinas()
{
superficie=0;
numeroOficinas=0;
}
public Oficinas(double superficie, int numeroOficinas)
{
this.superficie=superficie;
this.numeroOficinas=numeroOficinas;
}
public double getSuperficieEdificio(){
return superficie;
}
public int getNumeroOficinas(){
return numeroOficinas;
}
public void setSuperficieEdificio(double superficie){
this.superficie=superficie;
}
public void setNumeroOficinas(int numeroOficinas){
this.numeroOficinas=numeroOficinas;
}
public String toString(){
return "El edificio de oficinas tiene "+superficie+" m2."+
" y un total de "+numeroOficinas+" oficinas\n"+separador ;
}
}
Clase Polideportivopublic class Polideportivo implements InstalacionDeportiva,Edificio
{
//Instancia de variables
double superficie ;
int tipoInstalacion;
String nombreInstalacion;
String separador = new String(new char[95]).replace("\0", "*")+"\n";
//Constructores
public Polideportivo()
{
superficie =0 ;
tipoInstalacion=0;
nombreInstalacion=" ";
}
public Polideportivo(double superficie,int tipoInstalacion,String nombreInstalacion)
{
this.superficie=superficie;
this.tipoInstalacion=tipoInstalacion;
this.nombreInstalacion=nombreInstalacion;
}
public double getSuperficieEdificio(){
return superficie;
}
public int getTipoDeInstalacion(){
return tipoInstalacion;
}
public String getNombreIstalacion(){
return nombreInstalacion;
}
public void setSuperficieEdificio(double superficie){
this.superficie=superficie;
}
public void setTipoDeInstalacion(int tipoInstalacion){
this.tipoInstalacion=tipoInstalacion;
}
public void setNombreIstalacion(String nombreInstalacion){
this.nombreInstalacion=nombreInstalacion;
}
public String toString(){
return "Polideportivo tipo: "+tipoInstalacion+
"\nNombre: "+nombreInstalacion+
"\nTiene una superficie de : "+superficie+"m2\n"+separador ;
}
}
Codigo Clase TestHerenciaMultipleInterfaceimport java.util.Iterator;
import java.util.ArrayList;
public class TestHerenciaMultipleInterface
{
public static void main(String[] args)
{
ArrayList<Edificio> listaEdificios = new ArrayList<Edificio>();
Edificio poli1= new Polideportivo(1100,1,"Akasvayu Girona- Palau Girona-Fontajau (5.040 espectadores) ");
Edificio poli2= new Polideportivo(14900,2,"Pamesa Valencia-Pabellon Municipal Fuente San Luis (9.000 espectadores)");
Edificio poli3= new Polideportivo(22000,3,"Unicaja Malaga-Pal. De Deportes Jose Ma Martin Carpena (10.233 espectadores) ");
Edificio ofi1=new Oficinas(9.476,500);
Edificio ofi2=new Oficinas(3200,200);
listaEdificios.add(poli1);
listaEdificios.add(poli2);
listaEdificios.add(poli3);
listaEdificios.add(ofi1);
listaEdificios.add(ofi2);
Iterator<Edificio> edif = listaEdificios.iterator();
Edificio temp ;
while(edif.hasNext()){
temp=edif.next();
System.out.println(temp.toString());
}
}
}
Gracias