Mi respuesta al ejercicio
97!!! El último del curso!!!!
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?
Voy a comenzar respondiendo a la pregunta:
En la clase Polideportivo hay una relación semejante a la herencia múltiple, pues implementa las dos interfaces Edificio e InstalacionDeportiva. La clase EdificioDeOficinas, por otro lado, sólo implementa la interface Edificio, por lo que su "herencia" es simple.
Aquí van las clases:
Interface InstalacionDeportivapublic interface InstalacionDeportiva {
int getTipoInstalacion ();
}
Interface Edificiopublic interface Edificio {
double getSuperficieEdificio();
String toString();
}
Clase Polideportivopublic class Polideportivo implements InstalacionDeportiva, Edificio {
private double largo;
private double ancho;
private String nombre;
private String tipoInstalacion;
public Polideportivo () {
largo = 0;
ancho = 0;
nombre = "";
tipoInstalacion = "";
}
public Polideportivo (double largo, double ancho, String nombre, String tipoInstalacion) {
this.largo = largo;
this.ancho = ancho;
this.nombre = nombre;
this.tipoInstalacion = tipoInstalacion;
}
public void setLargo (double largo) {
this.largo = largo;
}
public void setAncho (double ancho) {
this.ancho = ancho;
}
public void setNombre (String nombre) {
this.nombre = nombre;
}
public void setTipoInstalacion (String tipoInstalacion) {
this.tipoInstalacion = tipoInstalacion;
}
public double getLargo () {
return largo;
}
public double getAncho () {
return ancho;
}
public String getNombre () {
return nombre;
}
public double getSuperficieEdificio () {
return ancho * largo;
}
public int getTipoInstalacion () {
if (tipoInstalacion.equals("Techado")) {
return 1;
} else if (tipoInstalacion.equals("Abierto")) {
return 2;
} else {
return 3;
}
}
public String toString () {
return "\"Polideportivo " + getNombre() + "\": Posee una superficie de " + getSuperficieEdificio() + " metros, y es de tipo " + tipoInstalacion;
}
}
Clase EdificioDeOficinaspublic class EdificioDeOficinas implements Edificio {
private int numeroDeOficinas;
private double ancho;
private double largo;
private int numeroDePisos;
public EdificioDeOficinas () {
numeroDeOficinas = 0;
ancho = 0;
largo = 0;
numeroDePisos = 0;
}
public EdificioDeOficinas (int numeroDeOficinas, double ancho, double largo, int numeroDePisos) {
this.numeroDeOficinas = numeroDeOficinas;
this.ancho = ancho;
this.largo = largo;
this.numeroDePisos = numeroDePisos;
}
public void setNumeroDeOficinas (int numeroDeOficinas) {
this.numeroDeOficinas = numeroDeOficinas;
}
public void setAncho (double ancho) {
this.ancho = ancho;
}
public void setLargo (double largo) {
this.largo = largo;
}
public void setNumeroDePisos (int numeroDePisos) {
this.numeroDePisos = numeroDePisos;
}
public int getNumeroDeOficinas () {
return numeroDeOficinas;
}
public double getLargo () {
return largo;
}
public double getAncho () {
return ancho;
}
public int getNumeroDePisos () {
return numeroDePisos;
}
public double getSuperficieEdificio () {
return ancho * largo * numeroDePisos;
}
public String toString () {
return "Edificio de " + getSuperficieEdificio() + " metros de superficie, con " + getNumeroDePisos() + " pisos, que alojan a " + getNumeroDeOficinas() + " oficinas";
}
}
Clase TestConstruccionesimport java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class TestConstrucciones {
public static void main (String [] args) {
List <Edificio> listaEdificios = new ArrayList <Edificio> ();
Edificio poli1 = new Polideportivo (180.6, 25.7, "Municipal", "Techado");
Edificio poli2 = new Polideportivo (205.8, 52, "Central", "Abierto");
Edificio poli3 = new Polideportivo (190, 32, "Recrearte", "Techado");
Edificio edi1 = new EdificioDeOficinas (52, 17.2, 55, 10);
Edificio edi2 = new EdificioDeOficinas (109, 153.2, 290, 5);
listaEdificios.add(poli1); listaEdificios.add(poli2); listaEdificios.add(poli3);
listaEdificios.add(edi1); listaEdificios.add(edi2);
Iterator <Edificio> it = listaEdificios.iterator ();
while (it.hasNext()) {
Edificio tmp = it.next();
System.out.println (tmp.toString());
}
}
}
Al final de este último ejercicio tengo que decir gracias a todos los que sostienen este sitio, a los que redactan los cursos, a los que tanto ayudan a través de los foros y a toda esta comunidad en general. Esta ha sido una experiencia más que gratificante, que no se termia aquí, pues prontito nomás estaré iniciando el nivel avanzado, y de ahí a lo que siga. Por haber logrado que sea capaz de hacer algo que nunca hubiera imaginado hacer, solo puedo decir gracias, gracias y gracias.