Autor Tema: Para qué sirven interfaces Java implements api ejercicio resuelto curso CU00697B  (Leído 4444 veces)

@mayakoski

  • Sin experiencia
  • *
  • Mensajes: 43
    • Ver Perfil
Hola buenos días, dejo planteada mi propuesta de solución al ejercicio CU00697B del curso elemental de programación Java desde cero de aprenderaprogramar.


Interface Instalacion_Deportiva

Código: [Seleccionar]
package claseCU00697B;
public interface Instalacion_Deportiva {
public int getTipoDeInstalacion();
}


Interface Edificio

Código: [Seleccionar]
package claseCU00697B;
public interface Edificio {
public double getSuperficieEdificio();
public int getNumeroDeOficinas();
}


Clase Construccion

Código: [Seleccionar]
package claseCU00697B;
public class Construccion implements Instalacion_Deportiva, Edificio{
private int tipoInstalacion;
private String nombreInstalacion;
private double superficieEdificio;
private int numeroDeOficinas;

//Constructor para Polideportivos
public Construccion(int pTipoInstalcion, double pSuperficieEdificio, String pNombreInstalacion) {
this.tipoInstalacion = pTipoInstalcion;
this.superficieEdificio = pSuperficieEdificio;
this.nombreInstalacion = pNombreInstalacion;
}

//Constructor para edificios
public Construccion(int pTipoInstalcion, double pSuperficieEdificio, String pNombreInstalacion, int pNumeroDeOficinas) {
this.tipoInstalacion = pTipoInstalcion;
this.superficieEdificio = pSuperficieEdificio;
this.nombreInstalacion = pNombreInstalacion;
this.numeroDeOficinas = pNumeroDeOficinas;
}

public int getTipoDeInstalacion() {
return this.tipoInstalacion;
};

public String getNombreInstalacion() {
return this.nombreInstalacion;
};

public double getSuperficieEdificio() {
return this.superficieEdificio;
}

public int getNumeroDeOficinas() {
return this.numeroDeOficinas;
}
}


Clase TestConstruccion

Código: [Seleccionar]
package claseCU00697B;

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

public class TestConstruccion {
public static void main(String[] args) {
List<Construccion> listaEdificios;
listaEdificios = new ArrayList<Construccion>();

listaEdificios.add(new Construccion(1,320.5,"Coliseo Balonescto"));
listaEdificios.add(new Construccion(1,500,"Piscina Olimpica"));
listaEdificios.add(new Construccion(1, 435, "Coliseo Bolleyball"));
listaEdificios.add(new Construccion(2, 800, "Administracion", 16));
listaEdificios.add(new Construccion(2, 500, "Capacitacion", 10));

Iterator<Construccion> it = listaEdificios.iterator();
Construccion tmpConstruccion;
while(it.hasNext()){
tmpConstruccion = it.next();
System.out.println("Analizando construcción: ");
if(tmpConstruccion.getTipoDeInstalacion() == 1) {
System.out.print("Polideportivo ");
}else {
System.out.print("Edificio de " + tmpConstruccion.getNumeroDeOficinas() + " Oficinas, ");
}
System.out.println("Tiene una superficio de " + tmpConstruccion.getSuperficieEdificio() + "y se identifica como " + tmpConstruccion.getNombreInstalacion());
}
}
}
« Última modificación: 12 de Abril 2022, 19:37 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, observaciones:

1) Se define dentro de la interface Edificio el método public int getNumeroDeOficinas(); Esto puede ser una opción, pero no se ajusta bien si pensamos que hay edificios que quizás no tengan oficinas, por ejemplo un edificio de viviendas.

2) Se propone una clase Construccion, pero esto no se atiene bien al enunciado del ejercicio, donde se hablaba de Polideportivos.

Puede verse una solución correcta a este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=2965.0

Saludos

@mayakoski

  • Sin experiencia
  • *
  • Mensajes: 43
    • Ver Perfil
Hola Buenas tardes.

He revisado la solución planteada como correcta, pero igual no cumple el enunciado del ejercicio en el cual indica que se cree una clase que implemente las dos interfaces, para lo cual en la solución genera dos clases que implementas las dos interfaces, por esta razón en mi respuesta trato de hacer lo indicado.

Con respecto a las observaciones dadas mi código si tiene las falencias indicadas y he tratado de corregirlas en base a mi interpretación de enunciado, y las dejo a continuación.

El uso de la clase construcción pretende incluir cualquier tipo de edificación sea esta un edificio, un polideportivo que son materia de este ejercicio, por lo cual he usado en mi nueva solución la clase como edificación

Saludos y gracias por el tiempo brindado

Código: [Seleccionar]
package claseCU00697B_2;

public interface Edificio {
public double getSuperficieEdificio();

}


Código: [Seleccionar]
package claseCU00697B_2;

public interface InstalacionDeportiva {
int getTipoDeInstalacion();

}


Código: [Seleccionar]
package claseCU00697B_2;

public class Edificacion implements Edificio, InstalacionDeportiva {

private int tipoInstalacion;
private double superficieEdificio;
private String nombreInstalacion;
private int numeroDeOficinas;


//Constructor para Instalaciones Deportivas
public Edificacion(int pTipoInstalcion, double pSuperficieEdificio, String pNombreInstalacion) {
this.tipoInstalacion = pTipoInstalcion;
this.superficieEdificio = pSuperficieEdificio;
this.nombreInstalacion = pNombreInstalacion;
}


//Constructor para Edificio de Oficinas
public Edificacion(double pSuperficieEdificio, int pNumeroDeOficinas, String pNombreInstalacion) {
this.superficieEdificio = pSuperficieEdificio;
this.nombreInstalacion = pNombreInstalacion;
this.numeroDeOficinas = pNumeroDeOficinas;
}
public String getNombreInstalacion() {
return this.nombreInstalacion;
};

public int getNumeroDeOficinas() {
return this.numeroDeOficinas;
}

@Override
public int getTipoDeInstalacion() {
// TODO Auto-generated method stub
return this.tipoInstalacion;
}

@Override
public double getSuperficieEdificio() {
// TODO Auto-generated method stub
return this.superficieEdificio;
}

}


Código: [Seleccionar]
package claseCU00697B_2;

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

public class TestEdificacion {
public static void main(String[] args) {
List<Edificacion> listaEdificios;
listaEdificios = new ArrayList<Edificacion>();

listaEdificios.add(new Edificacion(1,320.5,"Coliseo Baloncesto"));
listaEdificios.add(new Edificacion(2,500.0,"Piscina Olimpica"));
listaEdificios.add(new Edificacion(3, 435.0, "Polideportivo"));
listaEdificios.add(new Edificacion(800.0, 8, "Edificio de Oficinas"));
listaEdificios.add(new Edificacion(500.0,15, "Capacitacion"));
listaEdificios.add(new Edificacion(350.0, 0, "Residencias"));

Iterator<Edificacion> it = listaEdificios.iterator();
Edificacion tmpEdificacion;
while(it.hasNext()){
tmpEdificacion = it.next();
System.out.println("Analizando edificación: ");
if(tmpEdificacion.getTipoDeInstalacion() != 0) {
System.out.print("Instalacion Deportiva ");
}else {
System.out.print("Edificio de " + tmpEdificacion.getNumeroDeOficinas() + " Oficinas, ");
}
System.out.println("Tiene una superficio de " + tmpEdificacion.getSuperficieEdificio() + " m2 y se identifica como " + tmpEdificacion.getNombreInstalacion());
}
}
}


Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, para quien revise este hilo, comentar que la solución propuesta sigue sin atenerse a lo que pedía el ejercicio, ya que no se define la clase Polideportivo. Para quien esté interesado, ver el hilo comentado anteriormente. Saludos.

 

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