Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: maxplanck en 17 de Marzo 2017, 13:48

Título: Java hacer casting entre tipos y qué puede contener un objeto CU00690B
Publicado por: maxplanck en 17 de Marzo 2017, 13:48
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.
Título: Re:Ejercicio Java CU00690B. Sobreescritura métodos.
Publicado por: pedro,, 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
Título: Re:Java. Sobreescribir métodos. CU00690B
Publicado por: maxplanck 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.