Dudas de Java

Started by Drumpi, January 29, 2011, 01:06:43 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Noivern

Si, tu raiz debe ser capaz de almacenar cualquier objeto, es decir trabajar con Object. Cualquier cosa que metas dentro, en el método como paramentro de entrada o el retorno debe ser un Object; o bien sobrecargar un método que reciba los distintos tipos de clases y al final para guardar haces un casting a Object. Finalmente haces la comprobacion como dices con getClass o con la que te mencioné instanceof y aplicas la lógica.

Por cierto, te recomiendo ENCARECIDAMENTE que separes tus clases en archivos distintos y las agrupes en un package para que se puedan reutilizar más adelante y sea más simple la lectura del código. La verdad que cuando veo clases definidas dentro de clases me dan ganas de sacarme los ojos xD, la única excepcion es cuando hay que implementar algun listener donde si o si hay que definir la clase en el momento.

Por cierto si quieres trabajar con archivos, mira la clase File xD

Quote
Drumpi deberias usar ArrayList para "coleccionar" la lista que intentas hacer con los punteros (que no existen en java  )
supongo q habria una super Clase llamada Recurso del cual heredan tanto grafico como sonido, asi q si el arrayList colecciona Recurso...

PD: no te convendria usar la Class Integer en lugar del tipo de dato primitivo int?
Y lo mismo le vengo diciendo hace rato con la ArrayList xDDD

Fede

Menos mal que Splinter hizo el Bennu. :D

Dios, que cacao mental intentar seguiros.
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Drumpi

Juas, Fede, tranqui, que yo todavía me estoy acostumbrando ^^U

Tranquilo, noivern, que de momento es lo que hago, cada clase en su fichero, salvo estos porque es como he aprendido a manejar listas enlazadas (básicamente son contenedores de datos).

Y cuando llegue a las arrayList, las usaré, dadme tiempo, que apenas estoy con la herencia básica en el nuevo tutorial (sí, la herencia es uno de los primeros temas). A menos que conozcais un tutorial de uso de las mismas, porque lo que he mirado en la web de sun es poco menos que críptico (vale, nombre de las funciones, pero ni una mala descripción ni manual).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

Bueno, vuelvo a la carga.

Efectivamente, lo que necesito son las ArrayList, porque almacenan clases tipo object, o sea, de cualquier tipo :D
Pero para lo que yo quiero hacer ¿no sería mejor un LinkedList? ya que puedo meter elementos en medio de la lista, y porque estoy metiendo y sacando elementos constantemente ¿o aun así se usa el arrayList?.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

está mal el diseño, está claro que todos son object, pero no es lo correcto abusar de esto.
Tienes que crear una clase padre de la que hereden todas tus clases raras y que tengan en común los métodos y variables que quieras usar en el bucle.
luego puedes hacer un ArrayList<clase_padre> lista=new ArrayList(); o usar otra clase serializable como Vector.
y aqui ya puedes insertar tus clases raras con .add(miobjetodemiclasequeheredade_clase_padre); y usarlas como clases padre.

Si usas java 1.4, pues no puedes usar plantillas, tendrías que ahormar a clase_padre cada vez que extraigas un objeto de la lista.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Mi idea era poder hacer una lista de diversas clases, unas 40 distintas, ya que son los comandos que tengo, y cada uno es de su padre y de su madre.
Una de las cosas que tenía en mente es la que dices, tener una clase "comando" con un par de variables comunes, como son la String que se escribiría en la zona de código, o el int que indica qué comando es, y de ahí derivar clases como "cargar_musica" con un int, "todos_textos" con tres ints...
Lo cierto es que la versión actual la puedo reducir a cinco clases, ya que, actualmente, todos los comandos tienen de 1 a 5 parámetros, pero la idea es que en un futuro se puedan implementar comandos con un número indeterminado de parámetros (por ejemplo, una lista de números para crear una animación).

Además, estas clases no implementan ningún método, son simples contenedores de datos. Tenía que hacer otra clase que manejase la lista enlazada, pero si la LinkedList ya tiene dichos métodos, pues ni eso.

Por cierto ¿por qué todo el mundo me dice que implemente una ArrayList? ¿por qué no una LinkedList? ¿cuándo se usan las LinkedList?

Respecto a lo de plantillas, ni idea de lo que son, el manual que uso habla de java 1.1 y 1.2 y alguna referencia a librerías que se añadieron después como estándar.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

Drumpi, ya que te veo metido en JAVA, tengo una duda en JAVA grandísima y to facilona pero no encuentro una forma de hacerla de una manera limpia y rápida.
Tengo un array de bytes con la información de una imagen en modo 32 bits, es decir cada 4 bits representan un pixel, pues la duda es mostrar la imagen en pantalla usando swing.
imagínate algo sencillote, una imagen 2x2 con un byte[] que contienen 32 bytes, por ejemplo dos negros y dos blancos.
osea byte[] data = {255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0 }. y quiero meterlo en la imagen de un label.
jlabel1.seticon(imagen).

Pues resulta que hay una función createimiagen en la clase tookit de java pero no consigo ver su uso y no encuentro tutos para ayudarme.
Al final la forma cutre ha sido crear un bufferedimage y asignar pixel a pixel con setpixel(x,y, color), claro funcionar funciona pero hay que hacer el bucle por el ancho y el alto y en imágenes largas pues se tiraría la vida :D.
Quédate con el problema solo y a ver como se te ocurre a ti resolverlo, bueno tu o quien sea :D.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Pues con swing aún no me he metido, pero en teoría sería la forma de hacerlo, pixel a pixel (de ahí el loading de los juegos: la copia en memoria de los datos y la construcción de los gráficos), si no, tendrías que hayar el puntero a ambas zonas de memoria y buscar una función de copia de memoria (algo como memcpy o similar).

Si no, tengo entendido que java permite la carga de gráficos en png y gif, por lo que sería más sencillo tirar por ahí.

De todas maneras, tengo un manual de swing (swing.pdf) llamado "Swing y JFC (Java Foundation Classes)", hecho por la propia Sun, y traducido al español por Juan Antonio Palos (Ozito) que lo encontré por internet. Si no lo encuentras, te lo puedo mandar al correo que me digas, que son 2MB de pdf (son 204 páginas, por lo que tiene que venir completito, son más que mi actual curso de java :D).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)