Autor Tema: Ejercicio CU00690B sobreescritura metodos java estatico dinamico ligadura hereda  (Leído 2666 veces)

Enzo

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

Aquí dejo mi ejercicio del tema "CU00690B sobreescritura metodos java estatico dinamico ligadura compilador" para su corrección, que he de reconocer que me ha vuelto un poco loco (no se si lo he cogido todo).

Citar
Supongamos la superclase Vehiculo que representa a cualquier tipo de vehículo y la subclase Taxi que representa a un tipo de vehículo concreto.
a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?
Si. Haciendo un enmascaramiento o "casting".

Citar
b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?
Si. Es la base de la Herencia ¿No?.

Citar
c) Escribe el código de una clase Vehiculo con los atributos matricula (String) y numeroDeRuedas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un vehículo.
Código: [Seleccionar]
package ejercicio_CU00690B;

/**
 * EJERCICIO DE HERENCIAS Y MÉTODOS POLIMÓRFICOS.<br>
 * Esta Clase define una Superclase de la que "beberan" otras clases.<br>
 * Clase 1 del Ejercicio del Tema "CU00690B sobreescritura metodos java estatico dinamico ligadura compilador".
 * @author Lorenzo Fernández Asensio
 * @version 20151127.01
 */
public class Vehiculo_CU00690B {

    // Inicialización de Atributos
    private String matricula;
    private int numDeRuedas;

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param matricula El parámetro matricula define la Matricula de Vehiculo
     * @param numDeRuedas El parámetro numDeRuedas define el número de ruedas que tiene el Vehiculo
     */
    public Vehiculo_CU00690B() {       
        matricula = "";
        numDeRuedas = 0;
    } // Cierre del Constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param matricula El parámetro matricula define la Matricula de Vehiculo
     * @param numDeRuedas El parámetro numDeRuedas define el número de ruedas que tiene el Vehiculo
     */
    public Vehiculo_CU00690B(String matricula, int numDeRuedas) {
        this.matricula = matricula;
        this.numDeRuedas = numDeRuedas;
    } // Cierre del Constructor 2

    /**
     * Método para establecer la Matricula de Vehiculo
     * @param valorMatricula El parámetro valorMatricula define el valor que contendrá la Matricula
     */
    public void setMatricula(String valorMatricula) {
        matricula = valorMatricula;
    } // Cierre del método para establecer la Matricula de Vehiculo

    /**
     * Método para establecer el Número de Ruedas del Vehiculo
     * @param valorNumDeRuedas El parámetro valorNumDeRuedas define el valor que contendrá el Número de Ruedas
     */
    public void setNumDeRuedas(int valorNumDeRuedas) {
        numDeRuedas = valorNumDeRuedas;
    } // Cierre del método para establecer el Número de Ruedas del Vehiculo

    /**
     * Método para para obtener la Matricula de Vehiculo
     * @return La Matricula de Vehiculo
     */
    public String getMatricula(){ return matricula; }

    /**
     * Método para para obtener el Número de Ruedas del Vehiculo
     * @return El Número de de Ruedas del Vehiculo
     */
    public int getNumDeRuedas(){ return numDeRuedas; }

    /**
     * Método para obtener la Información del Vehiculo
     */
    public String toString() {
        return "Matricula: " + matricula + "\n" + "Número de ruedas: " + numDeRuedas + "\n";
    } // Cierre de la clase

} // Cierre de la Clase

Citar
d) Escribe el código de una clase Taxi que herede de vehículo y que además de los atributos de Vehiculo lleve un atributo adicional nombreDelConductor (String) y numeroDePlazas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un Taxi.
Código: [Seleccionar]
package ejercicio_CU00690B;

/**
 * EJERCICIO DEL USO DE HERECIAS Y MÉTODOS POLIMÓRFICOS.<br>
 * Esta Clase define una Subclase que "bebe" de la Superclase Vehiculo_CU00690B.<br>
 * Clase 2 del Ejercicio del Tema "CU00690B sobreescritura metodos java estatico dinamico ligadura compilador".
 * @author Lorenzo Fernández Asensio
 * @version 20151127.01
 */
public class Taxi_CU00690B extends Vehiculo_CU00690B {

    // Inicialización de Atributos
    private String nombreDelConductor;
    private int numDePlazas;

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param nombreDelConductor El parámetro nombreDelConductor define el Nombre Del Conductor del Taxi
     * @param numDePlazas El parámetro numDePlazas define el número de plazas que tiene el Taxi
     */
    public Taxi_CU00690B() {   
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        // Parametros especificos de la Subcalse
        nombreDelConductor = "";
        numDePlazas = 0;
    } // Cierre del Constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param nombreDelConductor El parámetro nombreDelConductor define el Nombre Del Conductor del Taxi
     * @param numDePlazas El parámetro numDePlazas define el número de plazas que tiene el Taxi
     */
    public Taxi_CU00690B(String matricula, int numDeRuedas, String nombreDelConductor, int numDePlazas) {
        super(matricula, numDeRuedas); // Parametros del constructor de la Superclase. Siempre se incluyen
        this.nombreDelConductor = nombreDelConductor;
        this.numDePlazas = numDePlazas;
    } // Cierre del Constructor 2

    /**
     * Método para establecer el Nombre Del Conductor  del Taxi
     * @param valorNombreDelConductor El parámetro valorNombreDelConductor define el valor que contendrá el Nombre Del Conductor del Taxi
     */
    public void setNombreDelConductor(String valorNombreDelConductor) {
        nombreDelConductor = valorNombreDelConductor;
    } // Cierre del método para establecer la NombreDelConductor de Vehiculo

    /**
     * Método para establecer el Número de plazas  del Taxi
     * @param valorNumDePlazas El parámetro valorNumDePlazas define el valor que contendrá el Número de plazas
     */
    public void setNumDePlazas(int valorNumDePlazas) {
        numDePlazas = valorNumDePlazas;
    } // Cierre del método para establecer el Número de plazas del Vehiculo

    /**
     * Método para para obtener el Nombre Del Conductor  del Taxi
     * @return El Nombre Del Conductor del Taxi
     */
    public String getNombreDelConductor(){ return nombreDelConductor; }

    /**
     * Método para para obtener el Número de plazas del Taxi
     * @return El Número de de Ruedas del Taxi
     */
    public int getNumDePlazas(){ return numDePlazas; }

    /**
     * Método para obtener la Información del Taxi
     */
    public String toString() {
        return super.toString() + "Nombre del Conductor: " + nombreDelConductor + "\n" + "Número de Plazas: " + numDePlazas + "\n";
    } // Cierre de la clase

} // Cierre de la Clase

Citar
e) Escribe el código de una clase test con el método main que cree un objeto cuyo tipo es Vehiculo, instanciado como Taxi. Establece valores para sus atributos y usa el método toString(). ¿Qué método toString() resulta de aplicación, el propio de la clase Vehiculo o el propio de la clase Taxi? ¿Por qué?
Código: [Seleccionar]
package ejercicio_CU00690B;

/**
 * EJERCICIO DEL USO DE HERECIAS Y MÉTODOS POLIMÓRFICOS.<br>
 * Esta Clase define una clase test para probar Herencias y Métodos Polimórficos.<br>
 * Se crea y se muestra la información de un Vehiculo instanciado como Taxi.
 * Clase 10 del Ejercicio del Tema "CU00690B sobreescritura metodos java estatico dinamico ligadura compilador".
 * @author Lorenzo Fernández Asensio
 * @version 20151127.01
 */
public class Test_CU00690B {
   
    public static void main (String [] args) {
       
        String matricula = "ROK-6665";
        int numDeRuedas = 4;
        String nombreDelConductor = "Bautista";
        int numDePlazas = 7;
       
        // Inicialización y Creación de un objeto tipo Vehiculo instanciado como Taxi
        Vehiculo_CU00690B taxiN1 = new Taxi_CU00690B(matricula,numDeRuedas,nombreDelConductor,numDePlazas);
       
        // Se limpia la pantalla de la Consola
        System.out.println("\f");
        // Se muestra en Pantalla Título dee comienzo
        System.out.println ("ATRIBUTOS DEL VEHICULO \"taxiN1\"");
        System.out.println ("-------------------------------");
        // Se muestra en Pantalla los atributos
        System.out.println (taxiN1.toString());
       
    } // Fin del main
   
} // Fin de la clase
Respuesta: Se ejecuta el método toString() del objeto Taxi porque, en tiempo de ejecución, el compilador busca el tipo que contiene el objeto y ejecuta sus métodos y solo si no los encuentra los busca el la clase padre.

Espero vuestras correcciones,

Muchas Gracias,

Saludos,
« Última modificación: 29 de Noviembre 2015, 22:23 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas Enzo

Veo tus respuestas correctas y tu código correcto ok! Puedes contrastarlo con este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1147.0

Si hay algo sobre lo que tengas dudas pregúntalo

Salu2

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Buenas días Ogramar,

Muchas gracias,


 

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