Hola.
El "error" es que tu seteas valores al objeto
miTaxi, que es un objeto de la clase
Taxi.
Pero este seteo de valores no afecta para nada al objeto
miConductor, quien tiene como atributo otro objeto de la clase
Taxi, que no tiene nada que ver con el objeto
miTaxi que tu has creado.
Por eso, cuando invocas al método:
miConductor.getDatosTaxiCond();
Lo que te va a mostrar son los datos del objeto
Taxi que hay "dentro" de
miConductor, no del que tú has creado "fuera".
Y como el
Taxi que hay dentro de
miConductor no ha sido seteado, te sale el mensaje de "desconocido"
Se que es un poco lioso, pero resumiendo, el problema es que en realidad en tu código hay dos objetos de la clase
Taxi:
- el
Taxi que tú has creado y llamado
miTaxi, a quién sí has seteado valores.
- el
Taxi que en realidad es un atributo de la clase
TaxiCond, que está dentro del objeto llamado
miConductorRecuerda como es el código de
TaxiCond:
/* Ejemplo - aprenderaprogramar.com */
//Ejemplo de clase que utiliza tipos definidos en otras clases (usa otras clases)
public class TaxiCond {
private Taxi vehiculoTaxi;
private Persona conductorTaxi;
//Constructor
public TaxiCond () {
vehiculoTaxi = new Taxi (); //Creamos un objeto Taxi con el constructor general de Taxi
conductorTaxi = new Persona (); //Creamos un objeto Persona con el constructor general de Persona
}
Ese primer atributo, llamado
vehiculoTaxi, es quien solo ha recibido el seteo de valores para la matricula, nada más, y por eso te sale "desconocido" en los demas valores cuando llamas al método
getDatosTaxiCond()Has de setearle todos los valores a este objeto
Taxi, pero ahora mismo no vas a poder porque la clase
TaxiCond no está completa, no tiene ningún método que permita setear dichos valores a este atributo.
De hecho, es una de las tareas que el ejercicio propone llevar a cabo:
Para completar la comprensión de la relación de uso entre clases, utiliza los métodos disponibles para el objeto TaxiCond que has creado: establece distintos valores de matrícula con el método setMatricula y visualiza los datos del objeto con el método getDatosTaxiCond. Crea además nuevos métodos que te permitan establecer el distrito y el tipo de motor de los objetos TaxiCond. Te planteamos otra reflexión: al igual que hemos definido un tipo TaxiCond que tiene dos objetos como campos, podemos definir tipos que tengan cinco, diez, quince o veinte objetos como campos
Así que piensa en como modificar la clase
TaxiCond para disponer de métodos que te permita setear valores al
Taxi que tenemos como atributo de clase
TaxiCond.
Has de conseguir algo similar a lo que te permite hacer el método setMatricula(), pero para los datos de "distrito" y "tipo de motor".
Inténtalo y si no lo consigues, pide ayuda por aquí que te la daremos encantados.
Un saludo.