Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Chompy129 en 17 de Diciembre 2016, 01:56
-
Asignación de igualdad en Java. Referencias a objetos. Diferencia entre igualdad e identidad. (CU00663B)
Aquí les dejo el ejercicio CU00663B del tutorial de programación Java desde cero:
ENUNCIADO
Considera una clase Java que se denomina TripulacionAvion y que tiene como atributos a tres objetos de tipo Persona: Persona piloto; Persona copiloto1; Persona copiloto2.
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?
b) ¿Existiría relación de identidad cuando creemos un objeto TripulacionAvion entre los tres atributos si no se inicializaran en el constructor?
c) ¿Cuál sería el contenido de los atributos si no se inicializan en el constructor y creamos un objeto de tipo TripulacionAvion?
RESPUESTAS
a) No. Cada uno apunta a un objeto distinto.
b) No. Aun no apuntan a un objeto, porque no han sido creados.
c) Seria null, en cada uno de ellos
Link de la clase: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=629:asignacion-de-igualdad-en-java-referencias-a-objetos-diferencia-entre-igualdad-e-identidad-cu00663b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 (https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=629:asignacion-de-igualdad-en-java-referencias-a-objetos-diferencia-entre-igualdad-e-identidad-cu00663b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188)
-
hola.
La respuesta a) sería incorrecta.Sí puede existir una relacion de identidad entre los tres atributos haciendo una asignacion así:
piloto = copiloto1;
copiloto2 = copiloto1;
La respuesta b) también sería incorrecta.
Cesar Krall dio una muy buena respuesta a esta pregunta:
Respuesta b) Podemos decir que existe una identidad en null (situación especial). Conviene tener cuidado con esta respuesta.
null significa alguna de estas cosas: objeto declarado pero no inicializado, condición de terminación de una serie de objetos, el objeto no existe, el objeto no tiene un contenido definido, el contenido del objeto ha sido eliminado explícitamente estableciéndose a null.
En Java se cumple lo siguiente: null == null (en otros lenguajes no es así).
Por tanto si no se han inicializado piloto == copiloto1 resulta true y copiloto1 == copiloto2 también es true, y si consideramos que toda comparación con == que devuelve true implica una relación de identidad, sí habría relación de identidad. La identidad consistiría en "los tres objetos son el mismo objeto: null".
Hay que considerar null una situación especial de un objeto.
La c) la tienes bien
Un saludo
-
De todas formas creo que en la respuesta a) es correcta, no hay relación de identidad entre ellos. Sin embargo, como dices, si que puede existir una relación al hacer esa asignación
En la respuesta b) pues si que hay relación después de todo. Gracias por aclarar eso.
Gracias por revisar la actividad ESOJ. ;D
También te envió un saludo. ;)