Autor |
Mensaje |
Uciel
Nivel 6
Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288
Carrera: Informática
|
|
Siguiendo con Pharo para poder hacer el 1º TP0 me surgio una duda.
Supongamos que tengo el codigo:
unaSecuencia := Secuencia new.
(unaSecuencia estaVacia) ifTrue: [Transcript show: 'Prueba 1 OK'].
Transcript cr.
(este es un pedaso de codigo del TP, pero quiero ver si la idea va encaminada)
Tengo que hacer que el codigo antes escrito, sin modificarlo, funcione. Entonces se me ocurrio definir la clase Secuencia (que no esta definida) como un Array para poder usar los metodos de éste. ¿Como hago eso? ¿se puede hacer sin modificar el codigo prenste? tendria que ser en la parte del System Browser seguro pero, ¿donde?
Saludos
|
|
|
|
|
|
|
|
|
fer90
Nivel 9
Edad: 33
Registrado: 14 Sep 2009
Mensajes: 1117
Ubicación: San Martín
Carrera: Informática y Sistemas
|
|
Básicamente, el system browser lo vas a utilizar para crear tus clases, con sus correspondientes métodos.
Te recomiendo que leas el Pharo By Example para entender el funcionamiento de este sistema. Te va a saber contestar varias dudas. Tengo una versión en español si no te llevás con el inglés. Manda MP con tu mail y te lo envío.
Ves en el browser que la primera clasificación de las clases son categorías. Dentro de cada categoría tenés las clases correspondientes. Clickeando en cada clase podes ver los métodos de la misma.
Podés crear tu propia categoría que se añade a la lista de categorías. Al entrar, clickeando en el cuadro de la lista de clases, modificás el code por defecto con el nombre que le querés dar a tu clase (en este caso "Object subclass: #Secuencia")y los atributos correspondientes (en instanceVariableNames). Estarías creando una clase llamada Secuencia con los atributos que le indiques.
Una vez hecho esto vas al cuadro de métodos para comenzar a definir tus métodos de una forma parecida a lo que hiciste con las clases.
Podés ver ejemplos del code en clases y métodos en otras categorías.
|
|
|
|
_________________ ¿Y quién te va a tirar las postas y truquitos para cada materia?
Nosotros...Chat-Fiuba. Somos más grandes que Jesús.
Cumple sus sueños quien resiste!!!
|
|
|
|
|
Uciel
Nivel 6
Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288
Carrera: Informática
|
|
si si, esa parte ya la hice. Cree la clase y sus atributos. Pero ¿¿como hago para que secuencia sea de la clase Array?? se me ocurrio sino que uno de sus atributos podria ser de la clase Array pero al no ser como en c++(tipoDeDato nombreDelAtributo) no se como escribirlo
PD: el pharo By Example lo tengo! ya lei los 3 primeros caps, pero no me dice nada de como hacer lo q quiero hacer!!
|
|
|
|
|
|
|
|
|
fer90
Nivel 9
Edad: 33
Registrado: 14 Sep 2009
Mensajes: 1117
Ubicación: San Martín
Carrera: Informática y Sistemas
|
|
Si querés que Secuencia herede de Array, tenés que cambiar en la definición de la clase lo siguiente.
En vez de Object subclass: #Secuencia.
Tiene que ser: Array subclass: #Secuencia.
Sin embargo, yo creo que en vez de eso, como decís, tendrías que tener un atributo que sea instancia de Array o de alguna colección que te guste .
Para eso definis el nombre de tu atributo como te dije más arriba y en el método initialize (método que se llama SIEMPRE al instanciar) de la clase Secuencia, a tu variable le asignás una instancia de la clase que quieras (Array por ejemplo).
nombreDeTuVariable := Array new.
No es necesario que la variable tenga un determinado tipo, ya que Smalltalk es tipado dinámico, es decir, el chequeo de tipos es en tiempo de ejecución. Esto último lo vas a entender mejor más entrado el cuatri, cuando lo explique Fontela, pero podés leer algo en internet.
|
|
|
|
_________________ ¿Y quién te va a tirar las postas y truquitos para cada materia?
Nosotros...Chat-Fiuba. Somos más grandes que Jesús.
Cumple sus sueños quien resiste!!!
|
|
|
|
|
Uciel
Nivel 6
Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288
Carrera: Informática
|
|
Cita:
|
Para eso definis el nombre de tu atributo como te dije más arriba y en el método initialize (método que se llama SIEMPRE al instanciar) de la clase Secuencia, a tu variable le asignás una instancia de la clase que quieras (Array por ejemplo).
nombreDeTuVariable := Array new.
|
voy a intentar por este lado, ya que herencia todavia no lo vimos en clase ^^u....y en a&p II no lo explicaron.
Bueno, veo si sale con eso, sino vuelvo a preguntar :^P
saludos
|
|
|
|
|
|
|
|
|
fer90
Nivel 9
Edad: 33
Registrado: 14 Sep 2009
Mensajes: 1117
Ubicación: San Martín
Carrera: Informática y Sistemas
|
|
Uciel escribió:
|
Cita:
|
Para eso definis el nombre de tu atributo como te dije más arriba y en el método initialize (método que se llama SIEMPRE al instanciar) de la clase Secuencia, a tu variable le asignás una instancia de la clase que quieras (Array por ejemplo).
nombreDeTuVariable := Array new.
|
voy a intentar por este lado, ya que herencia todavia no lo vimos en clase ^^u....y en a&p II no lo explicaron.
Bueno, veo si sale con eso, sino vuelvo a preguntar :^P
saludos
|
Preguntá lo que quieras.
Me enteré que el cuatri pasado no habían explicado de qué iba el método initialize en alguna de las prácticas. Buscá info sobre eso porque es sumamente importante
|
|
|
|
_________________ ¿Y quién te va a tirar las postas y truquitos para cada materia?
Nosotros...Chat-Fiuba. Somos más grandes que Jesús.
Cumple sus sueños quien resiste!!!
|
|
|
|
|
karajero
Nivel 8
Edad: 34
Registrado: 15 Nov 2009
Mensajes: 890
Carrera: Sistemas
|
|
No te olvides que también tenés la lista de correo de la materia para hacer consultas.
|
|
|
|
_________________
|
|
|
|
|
Uciel
Nivel 6
Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288
Carrera: Informática
|
|
buenas!! ya casi termino, lo que me dijiste fer90 me vino como anillo al dedo. Pregunta:
Se supone que la Secuencia (clase de la que hable antes) almacena 3 numeros: 1, 10, 100. En el TP te piden que hagas un metodo que te devuelva si la Secuencia esta ordenada ascendentemente osea:
unaSecuencia estaOrdenadaAscendente ifTrue: [Transcript show: 'Prueba 2 OK'].
mi pregunta es, ¿¿como hago para que un metodo retorne un boolean??
probe con:
blablablabla ifTrue: [^ True] ifFalse: [^ False]
pero no anduvo
alguna ayudita??
|
|
|
|
|
|
|
|
|
fer90
Nivel 9
Edad: 33
Registrado: 14 Sep 2009
Mensajes: 1117
Ubicación: San Martín
Carrera: Informática y Sistemas
|
|
Si. Tené en cuenta que Smalltalk es case sensitive. Por ende, "True" no es lo mismo que "true". Ese es el fallo.
Cuando hablás de True estás hablando de la Clase True (que desciende de Boolean si no recuerdo mal. Podés verlo en la categoría Object mepa) propiamente dicha (lo mismo para False). Para devolver el objeto booleano, tenés que devolver "true".
blablablabla ifTrue: [^ true] ifFalse: [^ false]
|
|
|
|
_________________ ¿Y quién te va a tirar las postas y truquitos para cada materia?
Nosotros...Chat-Fiuba. Somos más grandes que Jesús.
Cumple sus sueños quien resiste!!!
|
|
|
|
|
Uciel
Nivel 6
Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288
Carrera: Informática
|
|
eso tambien lo probe pero no funciono
me dice : MessagedontUnderstood: False > ><
False (Object) doesnotUnderstand: #<
|
|
|
|
|
|
|
|
|
fer90
Nivel 9
Edad: 33
Registrado: 14 Sep 2009
Mensajes: 1117
Ubicación: San Martín
Carrera: Informática y Sistemas
|
|
Pegá el code que tengas en ese método.
|
|
|
|
_________________ ¿Y quién te va a tirar las postas y truquitos para cada materia?
Nosotros...Chat-Fiuba. Somos más grandes que Jesús.
Cumple sus sueños quien resiste!!!
|
|
|
|
|
Uciel
Nivel 6
Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288
Carrera: Informática
|
|
estaOrdenadaAscendente
"verifica si los numeros que conforman el conjunto estan de menor a mayor"
(conjunto at: 3 > conjunto at:2) ifTrue: [^ true] ifFalse: [^ false]
le hice una modificacion al "blablabla" y ahora me tira otro error distinto XD
conjunto vendria a ser el atributo del "tipo" Array
|
|
|
|
|
|
|
|
|
Uciel
Nivel 6
Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288
Carrera: Informática
|
|
otro detalle, sino si influye o no, es que no use un Array sino una OrderedCollection
|
|
|
|
|
|
|
|
|
fer90
Nivel 9
Edad: 33
Registrado: 14 Sep 2009
Mensajes: 1117
Ubicación: San Martín
Carrera: Informática y Sistemas
|
|
¿Cuál es el nuevo error?
No veo errores de sintaxis.
|
|
|
|
_________________ ¿Y quién te va a tirar las postas y truquitos para cada materia?
Nosotros...Chat-Fiuba. Somos más grandes que Jesús.
Cumple sus sueños quien resiste!!!
|
|
|
|
|
Uciel
Nivel 6
Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288
Carrera: Informática
|
|
doesUnderstand: #at:at:
MessagedontUnderstood: OrderedCollection
|
|
|
|
|
|
|
|
|
|