Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Ver: Modo: Orden:
Aprendiendo a programar | 37 comentarios (37 temáticos, editoriales, 0 ocultos)
Yo me lo invento: punteros trampa (none / 0) (#28)
por man ls a las Fri Jul 23rd, 2004 at 08:45:56 PM CET
(Información Usuario)

la misma problematica de los punteros salvajes que tienes en C, que lo hacen inseguro e inadecuado para aprender, la tienes en Java, pero sin que nadie te avise...
Pero, pero eso es hacer trampa. El pobre GonzoTBA, si no sabe programar, pensará: "oh, entonces es mejor usar punteros". ¡Ni de coña! Lo mismo que tú explicas con punteros, se puede explicar con objetos:
En el ejemplo, pasa. No se si me he expresado bien, pero en el ejemplo, pasa.
Sí, claro que pasa: que estás reusando un objeto donde no debes. Y para muestra un botón:

  // creo un botón de Swing
  JButton boton = new JButton("perico");
  // lo meto en un vector o conjunto de objetos
  Vector vector = new Vector();
  vector.add(boton);
  // ahora cambio el texto del botón
  boton.setText("juanico");
  // adivina el texto del botón en el vector?
  JButton enVector = (JButton)vector.get(0);
  System.out.println(enVector.getText());
> "juanico"
  // pues claro! porque es el mismo botón  
El objeto de dentro del vector lo sigues usando fuera; si lo modificas, en el vector seguirás teniendo el objeto pero modificado. No dudo que mucha gente no lo comprenda: es que la programación orientada a objetos cuesta un poco pillarla.

Y más:
Si pasas un int a una funcion y cambias el valor dentro, al salir vuelves a tener el valor original porque se pasa por valor. Si ese entero esta dentro de otro objeto, el valor ha cambiado porque se ha pasado por valor la referencia del objeto, no el objeto en si.
De nuevo, no hace falta saber ni lo que es pasar por valor, ni por referencia ni nada. Sólo tienes que saber que: los objetos se tratan como objetos, y los tipos primitivos (int, long y tal) no son objetos. Así que no se modifican.

No sé, a mí me parece perfectamente lógico. Hay gente que aboga por eliminar los tipos primitivos y tratar a todos los objetos por igual, y creo que es buena idea (aunque al principio se pierda rendimiento; ya se optimizará). Mientras tanto, se tratan de distinta manera.

Mira que Java tiene sus cosas, y me he hinchado a criticarlas un poco más arriba; pero a mí esta discusión me parece un poco bizantina.

[ Padre ]


Aprendiendo a programar | 37 comentarios (37 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:
Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda