Título: Arreglo de inmuebles Publicado por: Omar_2013 en 18 Febrero 2015, 21:30 pm Hola, estoy haciendo un programa pero tengo un error en la implementación de mi código y no se cual es, lo que pasa es que escogiendo la opción 2(Mostrar Inmuebles), sale para cada inmueble el mismo propietario.
Estas son las Clases Código
Código
Código
Verán, al momento ingresar a la opción 2 después de haber llenado 2 inmueble sale algo así: (http://thumbs.subefotos.com/48206a972d2c7860b430085a3dc642a1o.jpg) (http://subefotos.com/ver/?48206a972d2c7860b430085a3dc642a1o.png) Título: Re: Arreglo de inmuebles Publicado por: Usuario Invitado en 18 Febrero 2015, 22:47 pm Primero tienes que entender bien la POO para poder aplicarla. Te explicaré un poco.
Ésta línea: Código
Lo que hace es crear una instancia de la clase Propiertario. A partir de ahora, AuxProp es un objeto que guarda una referencia. Hay dos estados en la creación de objetos:
PARTE 1: DECLARACIÓN Código . Éste objeto le indica al compilador que es un objeto tipo Propietario pero que aún no es instanciado. Es como si Lamborgini creara un plano de un nuevo automóvil, el plano indica que dicho plano es de tipo X Modelo, pero aún no ha sido creado, por lo que ese plano no tiene utilidad hasta que se construya. Volviendo a tu código, auxProp aún no ha sido construido, está en "espera". En éste punto, el objeto auxProp tiene una referencia que la VM le asigna por defecto a los objetos sin instanciar, que es NULL. Un valor NULL significa que no hace referencia a absolutamente nada. PARTE 2: INSTANCIACIÓN En ésta parte se construye el objeto tipo Propietario con la palabra reservada new. Pon especial atención en ésta palabra. En Java y en todos los lenguajes de alto nivel, la palabra new hace que se construya una representación de una clase y dicha representación tendrá los atributos y métodos/funciones de dicha clase. Ésto es ahora una instancia, un objeto funcional. Al instanciar un objeto con new, la VM le asigna una dirección en memoria y dicho objeto siempre hará referencia a esa dirección en memoria. Cuando tu uses auxProp en realidad estás llamando al objeto que tienes almacenado en algún espacio de memoria. Entender ésto es muy importante. Como ya has creado e instanciado tu objeto tipo Propietario, se le ha asignado una dirección en memoria. Ahora, cuando tu haces: Código
Las veces que hagas eso, le estarás cambiando el nombre al mismo objeto. Si ese mismo objeto Propietario lo guardas en 5 objetos Immueble, los cinco objetos Propietario en los 5 objetos Immueble serán el mismo. Por ésta razón, cuando le cambias en nombre al objeto 1, 2, 3, 4 o 5, al imprimir los objetos Propietario te mostrará la misma información, por la razón que es el mismo objeto en memoria. Lo que tienes que hacer es simplemente eliminar la declaración del objeto auxProp del main y colocarlo dentro del case 1 del switch. De ésta manera: Código
Así estamos declarando un objeto Propietario cada vez que se elige la opción uno. Por lo que, cada vez que elijas la opción 1, se creará un nuevo objeto Propietario y por lo tanto serán objetos diferentes. Como recomendación:
Título: Re: Arreglo de inmuebles Publicado por: Omar_2013 en 18 Febrero 2015, 22:54 pm Wow que tremenda explicación ;-) muchas gracias por tu tiempo Gus Garsaky.
Título: Re: Arreglo de inmuebles Publicado por: Usuario Invitado en 18 Febrero 2015, 23:12 pm De nada amigo mío, cuando gustes ^^
Un salu2. |