Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: LuisM en 26 de Mayo 2017, 23:12

Título: Java. Diferencia de igualdad e identidad cuándo un objeto es nulo BlueJ CU00663B
Publicado por: LuisM en 26 de Mayo 2017, 23:12
Hola a todos !! Paso a responder las preguntas del ejercicio CU00663B del curso básico de programación Java con entorno de aprendizaje BlueJ. Desde ya muchas gracias.

Saludos

Luis

a) ¿Sería posible que al crear un objeto TripulacionAvion se produjera que piloto, copiloto1 y copiloto2 apuntaran a un mismo objeto, es decir, que existiera una relación de identidad entre los tres atributos?


Respuesta: Si. Por ejemplo, tenemos que asignar a los objetos: personaCopiloto1 y personaCopiloto2 el valor de personaPiloto

Código: [Seleccionar]
public class TripulacionAvion
{
    // instance variables
    private Persona personaPiloto;
    private Persona personaCopiloto1;
    private Persona personaCopiloto2;

        public TripulacionAvion()
    {
        // initialise instance variables
        personaPiloto = new Persona();
        personaCopiloto1 = personaPiloto;
        personaCopiloto2 = personaPiloto;
    }
}

b) ¿Existiría relación de identidad cuando creemos un objeto TripulacionAvion entre los tres atributos si no se inicializaran en el constructor?

Respuesta: No, son 3 referencias distintas a 3 objetos distintos aunque son creados de la misma clase (Persona)

Código: [Seleccionar]
public class TripulacionAvion
{
    // instance variables
    private Persona personaPiloto;
    private Persona personaCopiloto1;
    private Persona personaCopiloto2;

        public TripulacionAvion()
    {
        // initialise instance variables
        personaPiloto = new Persona();
        personaCopiloto1 = new Persona();
        personaCopiloto2 = new Persona();
    }
}

c) ¿Cuál sería el contenido de los atributos si no se inicializan en el constructor y creamos un objeto de tipo TripulacionAvion?

Respuesta: cuando no se inicializan en el contructor sus valores son nulos, caso que debemos evitar inicializando los atributos.
Título: Re:Ejercicio CU00663B
Publicado por: LuisM en 29 de Mayo 2017, 20:28
En la respuesta a) es mejor así?
Código: [Seleccionar]
public class TripulacionAvion
{
    // instance variables
    private Persona personaPiloto;
    private Persona personaCopiloto1;
    private Persona personaCopiloto2;

        public TripulacionAvion()
    {
        // initialise instance variables
        personaPiloto = new Persona();
        personaCopiloto1 = new Persona();
        personaCopiloto2 = new Persona();
        personaCopiloto1 = personaPiloto;
        personaCopiloto2 = personaPiloto;
    }
}
Título: Re:Ejercicio CU00663B
Publicado por: pedro,, en 31 de Mayo 2017, 09:45
Buenas Luis.

Tus repuestas son correctas, aún así te dejo un enlace donde se da una explicación más extensa a las dos últimas preguntas.

https://www.aprenderaprogramar.com/foros/index.php?topic=1964.msg9837#msg9837

Saludos. ;D