Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado 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).
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:
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:
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.
-
Hola maxplanck.
El ejercicio está casi perfecto.
Donde el enunciado dice crear un objeto Vehiculo instanciado como Taxi se refiere a esto:
Vehiculo coche = new Taxi();
Saludos. ;D
-
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.