Autor Tema: Ejercicio CU00697B para que sirven interfaces java implementar api ventaja ejemp  (Leído 2906 veces)

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Hola,

Aquí dejo mi ejercicio del Tema "CU00697B para que sirven interfaces java implementar api ventaja ejemplo" para su corrección:

Clase InstalacionDeportiva:
Código: [Seleccionar]
/**
 * EJERCICIO DE HERENCIAS Y CLASES INTERFACES.<br>
 * Esta Clase define una clase Interface de la que "beberan" otras clases.<br>
 * Clase 1 del Ejercicio del Tema "CU00697B para que sirven interfaces java implementar api ventaja ejemplo".
 * @author Lorenzo Fernández Asensio
 * @version 20151211.01
 */
public interface InstalacionDeportiva_CU00697B {
    // No hay Atributos
   
    /**
     * Método (Por defecto abstract public) para obtener el Tipo de Instalación es
     */
    int getTipoDeInstalacion();
   
} //Cierre de la interface

Clase Edificio:
Código: [Seleccionar]
/**
 * EJERCICIO DE HERENCIAS Y CLASES INTERFACES.<br>
 * Esta Clase define una clase Interface de la que "beberan" otras clases.<br>
 * Clase 2 del Ejercicio del Tema "CU00697B para que sirven interfaces java implementar api ventaja ejemplo".
 * @author Lorenzo Fernández Asensio
 * @version 20151211.01
 */
public interface Edificio_CU00697B {
    // No hay Atributos
   
    /**
     * Método (Por defecto abstract public) para obtener la Superficie del Edificio
     */
    double getSuperficieEdificio();
   
} //Cierre de la interface

Clase Polideportivo:
Código: [Seleccionar]
/**
 * EJERCICIO DE HERENCIAS Y CLASES INTERFACES.<br>
 * Esta Clase define una Subclase que implementa las interfaces InstalacionDeportiva_CU00697B y Edificio_CU00697B.<br>
 * Clase 3 del Ejercicio del Tema "CU00697B para que sirven interfaces java implementar api ventaja ejemplo".
 * @author Lorenzo Fernández Asensio
 * @version 20151212.01
 */
public class Polideportivo_CU00697B implements InstalacionDeportiva_CU00697B, Edificio_CU00697B {

    // Inicialización de Atributos
    private String nombre;
    private double superficie;
    private int tipoInstalacion;

    /**
     * Constructor 1 del Polideportivo - Atribututos solo con asignación del Valor del Tipo de Instalación
     * @param nombre El parámetro nombre define el Nombre del Polideportivo
     * @param superficie El parámetro superficie define la Superficie del Polideportivo
     * @param tipoInstalacion El parámetro tipoInstalacion define Polideportivo como Tipo de Instalación 1
     */
    public Polideportivo_CU00697B () {
        nombre = "";
        superficie = 0;
        tipoInstalacion = 1; // Polideportivo es un Tipo de Instalación 1
    } // Cierre del Constructor 1

    /**
     * Constructor 2 del Polideportivo - Atribututos con asignación de Valores
     * @param nombre El parámetro nombre define el Nombre del Polideportivo
     * @param superficie El parámetro superficie define la Superficie del Polideportivo
     * @param tipoInstalacion El parámetro tipoInstalacion define Polideportivo como Tipo de Instalación 1
     */
    public Polideportivo_CU00697B (String nombre, double superficie) {
        this.nombre = nombre;
        this.superficie = superficie;
        tipoInstalacion = 1; // Polideportivo es un Tipo de Instalación 1
    } // Cierre del Constructor 2

    /**
     * Método para establecer el Nombre del Polideportivo
     * @param nombre El parámetro nombre define el Nombre del Polideportivo
     */
    public void setNombre (String nombre) {
        this.nombre = nombre;
    } // Cierre del método para establecer el Nombre del Polideportivo

    /**
     * Método para establecer la Superficie del Polideportivo
     * @param superficie El parámetro superficie define la Superficie del Polideportivo
     */
    public void setSuperficie (double superficie) {
        this.superficie = superficie;
    } // Cierre del método para establecer la Superficie del Polideportivo

    /**
     * Método para obtener el Nombre del Polideportivo
     * @return El Nombre del Polideportivo
     */
    public String getNombre() {
        return nombre;
    } // Cierre del método para ver que Tipo de Instalación es

    /**
     * Método para obtener la Superficie del Polideportivo (Sobreescrito de la interface Edificio)
     * @return La Superficie del Edificio
     */
    public double getSuperficieEdificio() {
        return superficie;
    } // Cierre del método para ver que Tipo de Instalación es

    /**
     * Método para obtener el Tipo de Instalación es el Polideportivo (Sobreescrito de la interface InstalacionDeportiva)
     * @return El Tipo de Instalación que es
     */
    public int getTipoDeInstalacion() {
        return tipoInstalacion;
    } // Cierre del método para ver que Tipo de Instalación es

    /**
     * Método para obtener los Datos del Polideportivo
     * @return Los Datos del Polideportivo
     */
    public String toString(){
        // Se transforman superficie para poder aplicarle el método toString().
        Double datoSuperficie = superficie;
        /* Se transforman tipoInstalacion en Integer para poder aplicarle el método toString().
         * De otra manera no se" puede hacer por ser de tipo primitivo.*/
        Integer datoTipoInstalacion = tipoInstalacion;
        // Se devuelve uns String con los datos del Polideportivo
        return "EDIFICIO DE TIPO ".concat(datoTipoInstalacion.toString()).concat(" = POLIDEPORTIVO.\n\t- Nombre del polideportivo: ").concat(nombre)
        .concat("\n\t- Con una Superficie de: ").concat(datoSuperficie.toString()).concat(" m2.\n");
    }

} //Cierre de la clase

Clase EdificioDeOficinas:
Código: [Seleccionar]
/**
 * EJERCICIO DE HERENCIAS Y CLASES INTERFACES.<br>
 * Esta Clase define una Subclase que implementa la interfaces Edificio_CU00697B.<br>
 * Clase 4 del Ejercicio del Tema "CU00697B para que sirven interfaces java implementar api ventaja ejemplo".
 * @author Lorenzo Fernández Asensio
 * @version 20151212.01
 */
public class EdificioDeOficinas_CU00697B implements Edificio_CU00697B {

    // Inicialización de Atributos
    private double superficie;
    private int numDeOficinas;

    /**
     * Constructor 1 del Edificio De Oficinas - Atribututos sin asignación del Valores
     * @param superficie El parámetro superficie define la Superficie del EdificioDeOficinas
     * @param numDeOficinas El parámetro numDeOficinas define el Número de Oficinas que tiene el Edificio
     */
    public EdificioDeOficinas_CU00697B () {
        superficie = 0;
        numDeOficinas = 0;
    } // Cierre del Constructor 1

    /**
     * Constructor 2 del EdificioDeOficinas - Atribututos con asignación de Valores
     * @param superficie El parámetro superficie define la Superficie del EdificioDeOficinas
     * @param numDeOficinas El parámetro numDeOficinas define el Número de Oficinas que tiene el Edificio
     */
    public EdificioDeOficinas_CU00697B (double superficie, int numDeOficinas) {
        this.superficie = superficie;
        this.numDeOficinas = numDeOficinas;
    } // Cierre del Constructor 2

    /**
     * Método para establecer la Superficie del EdificioDeOficinas
     * @param superficie El parámetro superficie define la Superficie del EdificioDeOficinas
     */
    public void setSuperficie (double superficie) {
        this.superficie = superficie;
    } // Cierre del método para establecer la Superficie del Edificio De Oficinas
   
    /**
     * Método para establecer el Número de Oficinas que tiene el Edificio
     * @param numDeOficinas El parámetro numDeOficinas define el Número de Oficinas que tiene el Edificio
     */
    public void setNumDeOficinas (int numDeOficinas) {
        this.numDeOficinas = numDeOficinas;
    } // Cierre del método para establecer el Número de Oficinas que tiene el Edificio
   
    /**
     * Método para obtener la Superficie del Edificio de Oficinas (Sobreescrito de la interface Edificio)
     * @return La Superficie del Edificio
     */
    public double getSuperficieEdificio() {
        return superficie;
    } // Cierre del método para ver que Tipo de Instalación es
   
    /**
     * Método para obtener el Número de Oficinas que tiene el Edificio
     * @return El Número de Oficinas que tiene el Edificio
     */
    public int getNumDeOficinas() {
        return numDeOficinas;
    } // Cierre del método para ver el Número de Oficinas que tiene el Edificio

    /**
     * Método para obtener los Datos del Edificio De Oficinas
     * @return Los Datos del EdificioDeOficinas
     */
    public String toString(){
        // Se transforman superficie para poder aplicarle el método toString().
        Double datoSuperficie = superficie;
        /* Se transforman numDeOficinas en Integer para poder aplicarle el método toString().
         * De otra manera no se puede hacer por ser de tipo primitivo.*/
        Integer datoNumDeOficinas = numDeOficinas;
        // Se devuelve uns String con los datos del EdificioDeOficinas
        return "EDIFICIO DE TIPO OFICINAS.\n\t- Con ".concat(datoNumDeOficinas.toString()).concat(" Oficinas")
        .concat("\n\t- Con una Superficie Total de: ").concat(datoSuperficie.toString()).concat(" m2.\n");
    }

} //Cierre de la clase

Clase Test:
Código: [Seleccionar]
import java.util.Iterator;
import java.util.ArrayList;

/**
 * EJERCICIO DE HERENCIAS Y CLASES ITERFACES.<br>
 * Esta Clase define una clase test para probar Herencias y Clases Interfaces.<br>
 * Clase 5 del Ejercicio del Tema "CU00697B para que sirven interfaces java implementar api ventaja ejemplo".
 * @author Lorenzo Fernández Asensio
 * @version 20151212.01
 */
public class Test2Interface_CU00697B {

    public static void main (String [ ] Args) {

        // Creación de una colección de Tipo Edificio que aceptara objetos polideportivo y Edificio de Oficinas
        ArrayList<Edificio_CU00697B> listaEdificios = new ArrayList<Edificio_CU00697B>();

        // Se añaden a la lista de Edificios 3 Polideportivos
        listaEdificios.add (new Polideportivo_CU00697B ("Miguel Ángel López", 34556.89));
        listaEdificios.add (new Polideportivo_CU00697B ("Ruth Beitia", 66477.12));
        listaEdificios.add (new Polideportivo_CU00697B ("Eusebio Cáceres", 46333.97));

        // Se añaden a la lista de Edificios 2 Edificios de Oficinas
        listaEdificios.add (new EdificioDeOficinas_CU00697B (85746.16, 35));
        listaEdificios.add (new EdificioDeOficinas_CU00697B (74663.67, 20));
       
        // Se crea un objeto de tipo Iterator
        Iterator<Edificio_CU00697B> it = listaEdificios.iterator();
       
        // Se limpia la pantalla de la Consola
        System.out.println("\f");
       
        // Se recorre la colección para mostrar los atributos de cada elemento
        while (it.hasNext()){
            System.out.println(it.next().toString());
        }

    } // Cierre del main
   
} // Cierre de la clase

Y la Respuesta a la Pregunta:
Citar
¿Entre qué clases existe una relación que se asemeja a la herencia múltiple?
Entre la clase Polideportivo con las clases InstalacionDeportiva y Edificio.

Espero vuestros comentarios,

Muchas Gracias,

Saludos,


Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Buenos días, en primer lugar vaya por delante mi felicitación por haber completado el curso java con constancia, algo que no todos los que lo intentan son capaces de completar, mi enhorabuena.

Respecto al ejercicio lo veo para un 10. Has creado las relaciones adecuadamente, sobreescrito los métodos, has hecho uso del polimorfismo...

Para la pregunta la respuesta está bien. 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.

Saludos

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Hola Mario,

Muchas gracias,

La verdad es que me parece un curso muy bueno para introducirnos en este mundo de la programación en Java y se hace muy ameno seguirlo. ¡Claro! siempre hay algunos conceptos que cuestan más que otros y hay que echarle algún rato mas ¿verdad?
Y saber que siempre estáis vosotros ahí para resolver las dudas, ayuda mucho a la hora de no tirar la toalla.

Voy a hacerme un resumen de lo visto y, en breve, quiero ponerme con el de nivel avanzado I.

De verdad quiero agradeceros la ayuda y los consejos a ti, a Pedro, a Lorenzo31, a Ogramar, Alex Rodríguez y a todos los que habéis estado ahí.

Saludos,


Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola, para quienes colaboramos en los foros es una satisfacción ver la progresión como programadores de las personas que siguen los cursos y los agradecimientos que nos hacen llegar. Alcanzar un buen nivel como programadores requiere mucho tiempo, pero esperamos que se recuerde "para mí fue importante aquella página donde me echaron una mano cuando estaba empezando". Por eso esperamos que quienes completan los cursos o tienen mayor nivel ayuden para responder en los foros a quienes están con menor nivel. El curso de java avanzado como habrás leído no está completo (por el momento), aunque los contenidos que hay pueden ser útiles para luego seguir progresando. Un abrazo,

 

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