Autor Tema: Java hacer casting entre tipos y qué puede contener un objeto CU00690B  (Leído 2092 veces)

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Hola a todos, paso a presentaros las respuestas a este ejercicio CU00690B del taller de programación en POO y los códigos necesarios.

Primero las preguntas:

a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?

Sí mediante casting.

b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?

Sí, este tipo de conversiones hacia abajo es simpre posible.

Clase Vehiculo (Está aprovechada de un ejercicio anterior).

Código: [Seleccionar]
package Coches;
import java.util.*;

/**
 * Esta clase define vehículos que pertenecen a una de cinco marcas incluidas en un Tipo enumerado.
 * @author maxplanck
 */
public class Vehiculo {
    public enum Marca {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
    private String matricula;
    private Marca marca;
    private int numeroDeRuedas;
   
    public Vehiculo(){
        matricula= "";
        marca = null;
        numeroDeRuedas = 0;
    }

    /**
     * Método que devuelve la matrícula
     * @return Un String
     */   
    public String getMat () {return matricula;}

    /**
     * Método que devuelve la narca del coche.
     * @return Un tipo enumerado.
     */   
    public Marca getMar () {return marca;}
   
    public int getRuedas () {return numeroDeRuedas;}

    /**
     * Método para establecer la matrícula.
     */   
    public void setMat (String mat){matricula = mat;}

    /**
     * Método para establecer la marca.
     */   
    public void setMar (Marca mar) {marca = mar;}
   
    public void setRuedas (int ruedas) {numeroDeRuedas = ruedas;}
   
    public String toString() {
        Integer ent = numeroDeRuedas;
        return ("Matrícula: ").concat(matricula).concat(". Número de ruedas: ").concat(ent.toString());
    }
}

Clase Taxi2:

Código: [Seleccionar]
package Coches;
public class Taxi2 extends Vehiculo {
    private String conductor;
    private int plazas;

    public Taxi2 () {
        super();
        conductor = "";
        plazas = 0;
    }

    public void setConductor(String conductor){
        this.conductor = conductor;
    }

    public void setPlazas (int plazas) {
        this.plazas = plazas;
    }

    public String getConductor () {return conductor;}
   
    public int getPlazas () {return plazas;}

    public String toString () {
        Integer ent = plazas;
        return super.toString().concat(". Plazas: ").concat(ent.toString()).
        concat(". Conductor: ").concat(conductor.toUpperCase().concat("."));
    }

}

Y, finalmente, la clase Test2:

Código: [Seleccionar]
package Coches;

public class Test2 {   
    public static void main (String [] Args) {
        Vehiculo car = new Vehiculo();
        Taxi2 taxi =new Taxi2();
        car = taxi;
        car.setMat ("V-1385-CH");
        car.setRuedas (4);
        taxi.setConductor ("Perico");
        taxi.setPlazas (4);
        System.out.println (taxi.toString());

    }
}     

Espero vuestros comentarios y correcciones agradeciéndoos por anticipado vuestra ayuda. Saludos.
« Última modificación: 14 de Mayo 2017, 19:59 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio Java CU00690B. Sobreescritura métodos.
« Respuesta #1 en: 21 de Marzo 2017, 00:22 »
Hola maxplanck.

El ejercicio está casi perfecto.

Donde el enunciado dice crear un objeto Vehiculo instanciado como Taxi se refiere a esto:

Código: [Seleccionar]
Vehiculo coche = new Taxi();
Saludos. ;D

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:Java. Sobreescribir métodos. CU00690B
« Respuesta #2 en: 22 de Marzo 2017, 21:58 »
Gracias por el comentario pedro,,. Como siempre, me son de gran ayuda. Ya no me acuerdo porqué pero hubo alguna razón por la que lo hice así y luego cuando un código funciona se me suele pasar revisar los apaños que he hecho, mal por mí   :-[   ;D ;D ;D.

 

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