Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: david82 en 04 de Agosto 2017, 01:38
-
Hola. Mis soluciones propuestas al ejercicio CU00690B del tutorial de programación Java con BlueJ son las siguientes:
a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?
Rta: Sí. Se podría hacer un casting pero causaría un código complejo de mantener si no se tiene control del mismo con instanceof.
b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?
Rta: Sí. Debido a que Vehículo es superclase de Taxi.
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.
public class Vehiculo2 {
private String matricula;
private int numeroDeRuedas;
public Vehiculo2() {
matricula = null;
numeroDeRuedas=4;
}
public String getMatricula(){return matricula;}
public int getNumeroDeRuedas(){return numeroDeRuedas;}
public void setMatricula(String unaMatricula){matricula = unaMatricula;}
public void setNumeroDeRuedas(int numeroDeRuedas){this.numeroDeRuedas = numeroDeRuedas;}
public String toString(){return matricula+" "+numeroDeRuedas;}
}
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.
public class Taxi extends Vehiculo2{
private String nombreDelConductor;
private int numeroDePlazas;
public Taxi(){
super();
nombreDelConductor = null;
numeroDePlazas = 1;
}
public String getnombreDelConductor(){return nombreDelConductor;}
public int getNumeroDePlazas(){return numeroDePlazas;}
public void setNumeroDelConductor(String nombreDelConductor){this.nombreDelConductor=nombreDelConductor;}
public void setNumeroDePlazas(int numeroDePlazas){this.numeroDePlazas=numeroDePlazas;}
public String toString(){return nombreDelConductor+" "+numeroDePlazas;}
}
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é?
public class TestVehiculo2 {
public static void main(String[] args) {
Vehiculo2 v1 = new Taxi();
v1.setMatricula("NKG-345");
v1.setNumeroDeRuedas(6);
System.out.println(v1.toString());
}
}
El método aplicado es el toString() de la clase Taxi(), debido a que cambia dinámicamente en tiempo de compilacion y el compilador de java considera a v1 como un tipo estático de Taxi, por lo tanto se ejecuta su propio método normalmente.
-
Hola david82, respuestas correctas. En este hilo hay algunos comentarios de interés: https://www.aprenderaprogramar.com/foros/index.php?topic=1147.0
Saludos