Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Colecciones en Smalltalk.
Autor Mensaje
rulo Sin conexión
Ultra Nerd Mod
Another green world
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.274
Agradecimientos dados: 48
Agradecimientos: 56 en 33 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #1
Colecciones en Smalltalk. Ejercicios Paradigmas de Programación
Buenas gente,el tema es el siguiente.Estoy usando smalltalk en el Object browser que provee la catedra de paradigmas.

Tengo el set Soldados y el objeto ReyArturo.
Al set soldados le tengo que pasar soldados (de eso y de crearlos se encarga arturo).


Mi primera aproximacion fue crear un objeto (humanos) con las variables hp,poder y nombre.
La idea era setear el objeto,agregarlo a la coleccion y luego setearlo de vuelta y volverlo a agregar.
Demas esta decir que la segunda vez no lo tomo.Y cuando intente hacerle un select por el que tenia un hp determinado me tiro el primero,que era el unico que tenia en la coleccion y lo hizo como si le hubiera pasado solo el string con el nombre.

En fin,estoy medio al horno,lo se.Se acepta cualquier tipo de sugerencias.


Saludos.

Cita:"...you can't kill a vegetable by shooting it through the head."
21-04-2011 23:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LeaTex Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.852
Agradecimientos dados: 55
Agradecimientos: 195 en 50 posts
Registro en: Apr 2008
BlogSpot Facebook Google+ Last.fm LinkedIn Twitter
YouTube
Mensaje: #2
RE: Colecciones en Smalltalk.
no entendí mucho, hiciste todo un quilombo de cosas en tu explicación. si querés poné un screenshot o el modelo de objetos que tenés.

ojo con las palabras que usás, porque cuando decís "objeto" no sé si te referís a una clase o a una instancia. en smalltalk todo es un objeto.

ejemplos:
Set es una clase
Soldados es una variable, que tiene adentro un set (una instancia de la clase Set).

ReyArturo debería ser una instancia, de alguna clase Humano.

Otra cosa que tenés que tener en cuenta, es que un Set no guarda instancias duplicadas, por eso si vos tenés un único Soldado (Humano) y le vas cambiando las variables, no te sirve de nada, porque al meterlo al set va a ser el mismo (sólo que le cambiaste el nombre), así que no lo mete.

Espero poder orientarte un poco con ésto, pero no veo claro tu planteo. Tirame más data y lo vemos.

22-04-2011 00:16
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
Another green world
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.274
Agradecimientos dados: 48
Agradecimientos: 56 en 33 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #3
RE: Colecciones en Smalltalk.
SI la verdad que es alto bardo asi que voy a tratar de explicarme algo mas.

Tengo tres objetos (lo que se entiende por objetos en el object browser que es lo que se usa las primeras clases)

-ReyArturo
-Soldados (aSet)
-Zaphira

La idea es que

1)ReyArturo cree humanos (distintos) y se los pase al Set Soldados.
2)ReyArturo tenga un metodo para sacar soldados del Set.
3)Zaphira tambien pueda sacar soldados del set pero viendo cual es el mas poderoso y morfarselo.

Mas o menos tengo una idea de como hacer (3).Pero no tengo ni la menor idea de como hacer (1) y (2).


Este fue mi primer intento de solucion,o sea:crear dos objetos mas (Romulo y Remo) que le iba a pasar al set.(Aca zaphira no esta creada porque nisiquiera meti elementos en el set).

http://www.imagebanana.com/view/jjfb8n1k/Pantallazo.png

Despues otra solucion fue crear humanos y setearlo que,como me dijiste no es algo valido.
Rey arturo tiene definida la variable soldados adentro que en un momento le habia agregado el objeto humanos haciendo soldado:=humano y asi.

No se si se entiende un poco mejor esto.(hasta yo medio como que me hize un bolonqui).

Cita:"...you can't kill a vegetable by shooting it through the head."
(Este mensaje fue modificado por última vez en: 22-04-2011 00:52 por rulo.)
22-04-2011 00:52
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LeaTex Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.852
Agradecimientos dados: 55
Agradecimientos: 195 en 50 posts
Registro en: Apr 2008
BlogSpot Facebook Google+ Last.fm LinkedIn Twitter
YouTube
Mensaje: #4
RE: Colecciones en Smalltalk.
El object explorer muestra instancias (hasta donde recuerdo). Cuando un objeto está precedido por el artículo, eso significa que es una instancia.
Si tenés la clase Humano una instancia sería unHumano.
En tu caso, cuando tenés aSet es una instancia de la clase Set, anObject es una instancia de otra clase que podría ser Object, etc.

¿Tenés el anunciado ahí a mano?

Pregunta: ¿Qué es megasaphira? ¿Otro objeto?

22-04-2011 01:43
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 212
Agradecimientos dados: 1
Agradecimientos: 9 en 8 posts
Registro en: Mar 2010
Mensaje: #5
RE: Colecciones en Smalltalk.
Mucho no entendí tampoco, pero a ver que onda esto:

Definiendo estos métodos al ReyArturo


asignarSoldados: coleccionSolados
soldados:= coleccionSoldados.




agregarHumano: unHumano
soldados add: unHumano.




sacarSoldado: unSoldado
soldados remove: unSoldado.



Entonces ponele que tenés los Objetos: Romulo y Remo (que son humanos) y losSoldados (que seria la colección)

ReyArturo asignarSoldados: losSoldados.
ReyArturo agregarHumano: Romulo.
losSoldados size. (deberia devolverte 1)
ReyArturo agregarHumano: Remo.
losSoldados size. (deberia devolverte 2)
ReyArturo sacarSoldado: Romulo.
losSoldados size. (deberia devolverte 1)
ReyArturo sacarSoldado: Remo.
losSoldados size. (deberia devolverte 0)

No se si interpreté mal lo que tenés que hacer y mandé fruta Confused Ojala sirva

PD: Yo habia hecho algo de esto la última clase pero con colección bag y ordered..

[Imagen: firmbatty.png]
(Este mensaje fue modificado por última vez en: 22-04-2011 01:57 por batty.)
22-04-2011 01:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
Another green world
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.274
Agradecimientos dados: 48
Agradecimientos: 56 en 33 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #6
RE: Colecciones en Smalltalk.
(22-04-2011 01:43)LeaTex escribió:  El object explorer muestra instancias (hasta donde recuerdo). Cuando un objeto está precedido por el artículo, eso significa que es una instancia.
Si tenés la clase Humano una instancia sería unHumano.
En tu caso, cuando tenés aSet es una instancia de la clase Set, anObject es una instancia de otra clase que podría ser Object, etc.

¿Tenés el anunciado ahí a mano?

Pregunta: ¿Qué es megasaphira? ¿Otro objeto?

megasaphira es el nombre que le das al workspace cuando lo creas,ni le des bola =P.

El enunciado es este:
El tp debería cubrir los siguientes puntos (el workspace se entrega).
1) soldados vivos
2) poder total del ejército
3) carne de canión (obtener un soldado vivo para sacrificar)
4) cometeUno: - A saphira le pasamos un conjunto de soldados sin repetidos y ella elije al más poderoso para morfar

O sea,crea soldados vivos,calculame el poder total del ejercito (segun entendi con un inject into+sum se resuelve) dame un soldado del set y que saphira pueda sacar un soldado del set que sea el mas poderoso.


Cita:Mucho no entendí tampoco, pero a ver que onda esto:

Definiendo estos métodos al ReyArturo

Gracias,mañana capaz lo pruebo a ver que onda,pero creo que la idea es no crear 20mil soldados como estaba haciendo yo.

Cita:"...you can't kill a vegetable by shooting it through the head."
22-04-2011 03:28
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 212
Agradecimientos dados: 1
Agradecimientos: 9 en 8 posts
Registro en: Mar 2010
Mensaje: #7
RE: Colecciones en Smalltalk.
(22-04-2011 03:28)rulo escribió:  Gracias,mañana capaz lo pruebo a ver que onda,pero creo que la idea es no crear 20mil soldados como estaba haciendo yo.

Si los soldados no tienen que ser objetos, fijate pasandole strings 'Romulo' o 'Remo' o 'NombreDelSoldadoQueQuieras' (supongo)

losSoldados removeAll. (esto hacelo siempre cuando estés probando en el workspace por las dudas)
ReyArturo agregarHumano: 'Rulo'.
losSoldados size. (debería devolverte 1)

[Imagen: firmbatty.png]
(Este mensaje fue modificado por última vez en: 22-04-2011 11:24 por batty.)
22-04-2011 11:23
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LeaTex Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.852
Agradecimientos dados: 55
Agradecimientos: 195 en 50 posts
Registro en: Apr 2008
BlogSpot Facebook Google+ Last.fm LinkedIn Twitter
YouTube
Mensaje: #8
RE: Colecciones en Smalltalk.
(22-04-2011 11:23)batty escribió:  
(22-04-2011 03:28)rulo escribió:  Gracias,mañana capaz lo pruebo a ver que onda,pero creo que la idea es no crear 20mil soldados como estaba haciendo yo.

Si los soldados no tienen que ser objetos, fijate pasandole strings 'Romulo' o 'Remo' o 'NombreDelSoldadoQueQuieras' (supongo)

tienen que ser objetos porque deben tener un nivel de fuerza.

Bueno, el objeto ReyArturo tendría una variable soldados y sería así:

agregarSoldado: unaPersona

soldados add: unaPersona




carneDeCanion

^soldados remove: (soldados anyOne)




poderDelEjercito

^soldados
inject: 0
into: [:sum :unSoldado | sum + (unSoldado poder)]




sacarSoldado: unaPersona

^soldados remove: unaPersona




soldados: aSet

soldados := aSet



El objeto Soldado sería así:

setearNombre: unString poder: unNumero hp: unObjeto

nombre := unString.
poder := unNumero.
hp := unObjeto




poder

^poder



Entonces en un workspace podés hacer:

ReyArturo soldados: Soldados.
ReyArturo agregarSoldado: (Soldado setearNombre: 'Romulo' poder: 100 hp: 1 ).
ReyArturo poderDelEjercito.
ReyArturo carneDeCanion.



22-04-2011 13:17
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
Another green world
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.274
Agradecimientos dados: 48
Agradecimientos: 56 en 33 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #9
RE: Colecciones en Smalltalk.
Che,pero Soldado no lo tenes que declarar como un set?.
Porque cuando ejecuto:

Cita:ReyArturo agregarSoldado: (Soldado setearNombre: 'Romulo' poder: 100 hp: 1 ).

Me tira aNObject no entiende el mensaje add:aNObject.Porque smallltalk no sabe que lo queres hacer set y lo usa como un objeto comun.

Cita:"...you can't kill a vegetable by shooting it through the head."
24-04-2011 15:43
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 212
Agradecimientos dados: 1
Agradecimientos: 9 en 8 posts
Registro en: Mar 2010
Mensaje: #10
RE: Colecciones en Smalltalk.
Hice lo que puso LeaTex y funca bien, excepto lo de carneDeCanion que me devuelve "anObject" no se si esa es la idea Confused

Lo hice asi, con un objeto más para probar (Soldado2)

Referencias:
Soldados (Set)
Soldado (Objeto)
Soldado2 (Objeto)
ReyArturo (Objeto)

Workspace:
ReyArturo soldados: Soldados. {le asigna a ReyArturo el Set donde van a estar los Soldados}
ReyArturo agregarSoldado: (Soldado setearNombre: 'Romulo' poder:100 hp:1 ). {asigna las variables al Soldado}
ReyArturo agregarSoldado: (Soldado2 setearNombre: 'Remo' poder:120 hp:1 ). {asigna las variables al Soldado2}
ReyArturo poderDelEjercito. {me devuelve: 240}
ReyArturo carneDeCanion. {me devuelve: anObject Confused}

[Imagen: firmbatty.png]
(Este mensaje fue modificado por última vez en: 24-04-2011 16:39 por batty.)
24-04-2011 16:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
Another green world
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.274
Agradecimientos dados: 48
Agradecimientos: 56 en 33 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #11
RE: Colecciones en Smalltalk.
Si,ahora me funciona,mil gracias leatex!
¿Ahora,para agregar otro soldado SI O SI,hay que tener otro objeto no?
Bueno,de todas formas gracias .
(eso que esta arriba intenta ser un infinito):

Cita:"...you can't kill a vegetable by shooting it through the head."
24-04-2011 20:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LeaTex Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.852
Agradecimientos dados: 55
Agradecimientos: 195 en 50 posts
Registro en: Apr 2008
BlogSpot Facebook Google+ Last.fm LinkedIn Twitter
YouTube
Mensaje: #12
RE: Colecciones en Smalltalk.
cuando trabajan con el object browser, están usando instancias. para crear soldados necesitarían un "modelo", es decir, una Clase, y eso no lo tienen ahí.
entonces cada soldado que quieran tener lo tienen que crear como objeto en el object browser.

carneDeCanion les devuelve anObject si hacen un "print it" pero si hacen un "inspect it" se van a dar cuenta que no es cualquier object, es un Soldado.
si quieren verlo mejor, en lugar de crear los objetos Soldado1, Soldado2, etc, pueden crear Romulo, Remo, etc.

24-04-2011 21:30
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.