Java - Ayuda en la creacion de objetos en java(netbeans)

 
Vista:
sin imagen de perfil

Ayuda en la creacion de objetos en java(netbeans)

Publicado por Axel Rene (2 intervenciones) el 19/07/2017 01:43:18
Hola, amigos programadores, tengo unas dudas con respecto a un proyecto que realizo.
en mi programa hay conciertos y cada usuarios tiene carrito para comprar boletos, hasta ahi todo bien , el problemas es al crear un objetos de tipo concierto y mandarlo al carrito de cada usuario, ya que cuando deseo que incremente un concierto por ejemplo, en un carrito de un usuario, se incrementa en ambos usuarios, no se que esta mal, pero ya estoy un poco desesperado, cabe mencionar que para ahorra tiempo, cree un concierto y se lo agregue a los 2 carritos de mis usuarios, lo cual no veo algun problema, hice este ejemplo para mostrar lo que explico, espero su pronta ayuda, saludos
1
2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil

Ayuda en la creacion de objetos en java(netbeans)

Publicado por Victor (18 intervenciones) el 19/07/2017 09:21:43
Buenos dias.

Has probado a quitar public concierto() en la tercera linea ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

necesito ayuda en java netbeans

Publicado por hebert bahamonde (1 intervención) el 21/07/2017 15:04:00
hola mi señora esta estudiando tecnico en informatica , y necesita realizar un trabajo en java con el programa netbeans
por favor comunicarse a la brevedad a mi numero telefonico 983935804 $$$$$
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose
Val: 130
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda en la creacion de objetos en java(netbeans)

Publicado por Jose (46 intervenciones) el 19/07/2017 18:21:09
Hola amigo,

según te entiendo, el codigo que pones, es de ejemplo y no el real donde te el clavo?.
el comportamiento que te da en el codigo que publicaste es correcto.
//Este codigo
concierto cl=new concierto("miguel");
conciertos.add(cl);
conciertosl.add(cl);

porque estas agregando el mismo objeto a las dos listas. y como es el mismo objeto,
el hacer
conciertos.get(0).agregarBoleto(); estas afectando al objeto tambien de conciertosl, porque es el mismo.

Así que lógicamente a imprimir el numero de boletos te va dar el mismo.

esto es porque en java, los objetos son pasados por referencia, es decir lo que contiene tu lista conciertos y conciertosl, es un apuntador
a la memoria de tu objeto concierto (no dos espacios de memoria diferentes), que fue creada con la sentencia new concierto("miguel");
así que por eso lo que hagas sobre el objeto guardado en conciertos, tambien se vera afectado conciertosl.

dicho de otra manera.
new concierto("miguel"); aparta un espacio en memoria (ram) para este objeto, el cual contiene los atributos nombre y boleto.
este new tambien retorna la posición de memoria donde fue creado.

entonces
concierto cl=new concierto("miguel");
lo puedes ver como
int cl=154545;//este es un numero de memoria(me lo invente claro esta)

entonces en
conciertos.add(cl)
conciertosl.add(cl)
lo que estas haciendo en realidad
es
conciertos.add(1545)
conciertosl.add(1545)

y cuando haces conciertos.get(0); lo que estas haciendo es que el programa, es que el programa en la posición 0 tiene guardado la referencia 1545, que es la referencia donde se creo tu objeto concierto, y si me seguiste el hilo hasta este punto, al ser solo una referencia, las modificaciones se hacen sobre el mismo espacio de memoria, no importa que las referencia se guarde en distintos arreglos, siempre apunta al mismo espacio de memoria, así que como resultado sera afectado, desde cualquier lugar que tenga su referencia.

**Solucion**
Esto cámbialo
concierto cl=new concierto("miguel");
conciertos.add(cl);
conciertosl.add(cl);
a esto
conciertos.add(new concierto("miguel"));
conciertosl.add(new concierto("miguel"));
Aquí ya tienes dos espacios de memoria independiente, como resultado lo que hagas con el objeto en conciertos, no afectara a los de conciertos.


Bueno espero que te sirva, nos cuentas como te fue.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda en la creacion de objetos en java(netbeans)

Publicado por Axel Rene (2 intervenciones) el 19/07/2017 21:09:39
Muchas gracias, era eso, lo busque pero nadie me daba una explicación del por qué lo hacia, gracias de nuevo y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar