Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: camoay en 07 de Diciembre 2016, 00:33

Título: Aprender Java desde cero,Para que sirven las interfaces, CU00697B
Publicado por: camoay en 07 de Diciembre 2016, 00:33
Buenas noches, aquí les dejo mi ejercicio:

Interface InstalacionDeportiva:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase97;

public interface InstalacionDeportiva {
public int getTipoInstalacion();
}// fin interface

Interface Edificio:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase97;

public interface Edificio {
double getSuperficieEdificio();
}// fin interface

Clase Polideportivo:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase97;

public class Polideportivo implements InstalacionDeportiva,Edificio {
private String nombre;
private int tipoDeInstalacion;
private double superficieEdificio;

// constructores
public Polideportivo() { nombre =""; tipoDeInstalacion = 0; superficieEdificio = 0;}
public Polideportivo(String nombre,int tipoDeInstalacion,double superficieEdificio) {
this.nombre = nombre;
this.tipoDeInstalacion = tipoDeInstalacion;
this.superficieEdificio = superficieEdificio;
}

// métodos
// getters and setters
public String getNombre() { return nombre; }
public void setNombre(String nombre) { this.nombre = nombre; }
public int getTipoInstalacion(){ return tipoDeInstalacion; }// método implementado del interface InstalacionDeportiva
public void setTipoDeInstalacion(int tipoDeInstalacion) { this.tipoDeInstalacion = tipoDeInstalacion; }
public double getSuperficieEdificio(){ return superficieEdificio;  }// método implementado del interface Edificio
public void setSuperficieEdificio(double superficieEdificio) { this.superficieEdificio = superficieEdificio; }
// otros métodos
public String toString(){
return "Nombre: "+nombre+" , Tipo de Instalación: "+tipoDeInstalacion+" , Superficie del Edificio: "+superficieEdificio+" m²."; }
} // fin de clase

Clase EdificioDeOficinas:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase97;

public class EdificioDeOficinas implements Edificio{
private int numeroDeOficinas;
private double superficieEdificio;

// constructores
EdificioDeOficinas(){ numeroDeOficinas = 0; superficieEdificio = 0; }
EdificioDeOficinas(int numeroDeOficinas,double superficieEdificio){
this.numeroDeOficinas = numeroDeOficinas;
this.superficieEdificio = superficieEdificio; }

// métodos
// getters and setters
public double getSuperficieEdificio(){return superficieEdificio;}// método implementado del interface Edificio
public void setSuperficieEdificio(double superficieEdificio) { this.superficieEdificio = superficieEdificio; }
public int getNumeroDeOficinas() { return numeroDeOficinas; }
public void setNumeroDeOficinas(int numeroDeOficinas) { this.numeroDeOficinas = numeroDeOficinas; }
// otros métodos
public String toString(){
return "Número de oficinas: "+numeroDeOficinas+" , Superficio del Edificio: "+superficieEdificio+" m²."; }
}// fin de clase

Clase Test:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase97;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test {

public static void main(String[] args) {
// creo los objetos del arrayList
Edificio poli1 = new Polideportivo("Pancho Camurria", 4, 12000);
Edificio poli2 = new Polideportivo("La Hamburguesa", 3, 15000);
Edificio poli3 = new Polideportivo("Polideportivo Municipal S/C de Tenerife",1 , 60000);
Edificio oficinas1 = new EdificioDeOficinas(10, 2000);
Edificio oficinas2 = new EdificioDeOficinas(20, 3000);
// creo el ArrayList y añado los objetos creados
List <Edificio> misEdificios = new ArrayList<Edificio>();
misEdificios.add(poli1);misEdificios.add(poli2);misEdificios.add(poli3);misEdificios.add(oficinas1);misEdificios.add(oficinas2);
// listo todos los objetos con sus datos
Iterator <Edificio> it = misEdificios.iterator();
System.out.println("Los Edificios de la Lista son: \n" );
while(it.hasNext()){
Edificio tmp = it.next();
if(tmp instanceof Polideportivo)
System.out.print("Polideportivo -> ");
else
System.out.print("Edificio de oficinas -> ");
System.out.println(tmp.toString());
}// fin while
}// fin método main
}// fin de clase

La pregunta y su respuesta
Citar
¿Entre qué clases existe una relación que se asemeja a la herencia múltiple?
 Entre la clase Polideportivo y las Interfaces InstalacionDeportiva y Edificio.

Agradeceré sus correcciones o sugerencias.
Título: Re:Aprender Java desde cero,Para que sirven las interfaces, CU00697B
Publicado por: ESOJ en 07 de Diciembre 2016, 06:16
Buenos días.

El ejercicio es correcto.
Puedes ver como lo han hecho otros compañeros y comentarios en los siguientes enlaces:
https://www.aprenderaprogramar.com/foros/index.php?topic=5016.msg20137#msg20137 (https://www.aprenderaprogramar.com/foros/index.php?topic=5016.msg20137#msg20137)
https://www.aprenderaprogramar.com/foros/index.php?topic=2521.msg11922#msg11922 (https://www.aprenderaprogramar.com/foros/index.php?topic=2521.msg11922#msg11922)
https://www.aprenderaprogramar.com/foros/index.php?topic=4724.msg19237#msg19237 (https://www.aprenderaprogramar.com/foros/index.php?topic=4724.msg19237#msg19237)

Un saludo
Título: Re:Aprender Java desde cero,Para que sirven las interfaces, CU00697B
Publicado por: Alex Rodríguez en 18 de Diciembre 2016, 12:32
Hola lo veo todo bien, es interesante ver en partes como Edificio poli1 = new Polideportivo("Pancho Camurria", 4, 12000);

cómo se utiliza el tipo estático Edificio (tipo de la interface) y luego se instancia usando el tipo dinámico Polideportivo, esto es un ejemplo de uso del polimorfismo.

Saludos.