Duda muy cruel..

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Duda muy cruel..

Edgar J. De Cleene
Pregunta a los que saben mas.

Estoy tratando de resucitar los MorphicWrappers y los MathMorphs, junto con
Milan Zimmermann.

En un lugar del código encuentro:
EditableStringMorph subclass: #CodeStringMorph
    instanceVariableNames: 'bindings target actionSelector arguments history
historyPosition original expansions currentPosition'
    classVariableNames: ''
    poolDictionaries: ''
    category: 'MorphicWrappers-Support'

O sea que CodeStringMorph hereda de EditableStringMorph

Tratando de ver de autocompletar las clases a partir de las letras
tiepeadas, veo en keyStroke: evt de EditableStringMorph ;


ch = Character tab
        ifTrue:
            [evt shiftPressed
                ifTrue: [self querySymbolBackward: self contents]
                ifFalse: [self querySymbolForward: self contents].
            ^ self fitContents]

pero querySymbolBackward está implementado en CodeStringMorph.

Cómo es esto ? Una clase puede utilizar un método de su clase hija ?

Me declaro ignorante, si alguien tiene a bien explicarme....

Edgar



       
       
               
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas




correo electrónico a: [hidden email]


correo electrónico a: [hidden email]

 
Enlaces de Yahoo! Grupos

<*> Para visitar el sitio web del grupo, andá a:
    http://ar.groups.yahoo.com/group/squeakRos/

<*> Para cancelar tu suscripción a este grupo, enviá un mensaje a:
    [hidden email]

<*> El uso de Yahoo! Grupos está sujeto a las:
    http://ar.docs.yahoo.com/info/utos.html
 


Reply | Threaded
Open this post in threaded view
|

Re: Duda muy cruel..

Diego Gomez Deck
Hola Edgar,

La respuesta es bien simple: "self" referencia a una instancia, no a una
clase.

Cuando en cualquier parte del código tenemos algo como "self foo", lo
que debemos leer es "le enviamos el mensaje #foo al objeto referenciado
con 'self'".

El código ST nunca dice "llamar a tal método de tal clase", sólo dice
"enviarle el mensaje tal, al OBJECTO (instancia) tal".

Lo que ocurre en ese código que pasaste, es que sólo "funcionará" (el
método) cuando se invoque con alguna instancia de alguna subclase que
implemente #querySymbolBackward:

El código está feo, pero no es incorrecto (desde el punto de vista de la
semántica de Smalltalk).

Saludos,

-- Diego


> Pregunta a los que saben mas.
>
> Estoy tratando de resucitar los MorphicWrappers y los MathMorphs, junto con
> Milan Zimmermann.
>
> En un lugar del código encuentro:
> EditableStringMorph subclass: #CodeStringMorph
>     instanceVariableNames: 'bindings target actionSelector arguments history
> historyPosition original expansions currentPosition'
>     classVariableNames: ''
>     poolDictionaries: ''
>     category: 'MorphicWrappers-Support'
>
> O sea que CodeStringMorph hereda de EditableStringMorph
>
> Tratando de ver de autocompletar las clases a partir de las letras
> tiepeadas, veo en keyStroke: evt de EditableStringMorph ;
>
>
> ch = Character tab
>         ifTrue:
>             [evt shiftPressed
>                 ifTrue: [self querySymbolBackward: self contents]
>                 ifFalse: [self querySymbolForward: self contents].
>             ^ self fitContents]
>
> pero querySymbolBackward está implementado en CodeStringMorph.
>
> Cómo es esto ? Una clase puede utilizar un método de su clase hija ?
>
> Me declaro ignorante, si alguien tiene a bien explicarme....
>
> Edgar

--
==========================================
 Diego Gomez Deck
------------------------------------------
 http://www.consultar.com/DiegoGomezDeck/
 http://diegogomezdeck.blogspot.com/
 http://smalltalk.consultar.com/
==========================================




correo electrónico a: [hidden email]


correo electrónico a: [hidden email]

 
Enlaces de Yahoo! Grupos

<*> Para visitar el sitio web del grupo, andá a:
    http://ar.groups.yahoo.com/group/squeakRos/

<*> Para cancelar tu suscripción a este grupo, enviá un mensaje a:
    [hidden email]

<*> El uso de Yahoo! Grupos está sujeto a las:
    http://ar.docs.yahoo.com/info/utos.html
 



Reply | Threaded
Open this post in threaded view
|

Re: Duda muy cruel..

Edgar J. De Cleene
El código ST nunca dice "llamar a tal método de tal clase", sólo dice
"enviarle el mensaje tal, al OBJECTO (instancia) tal".

Gracias , Diego.!!!
Clarísimo, por un momento me olvide de esto, que es fundamental.

En esos originales hay cosas peores desde el punto de vista de la fealdad,
pero que duda cabe que la gente que hizo MorphicWrappers y MathMorphs estaba
inspirada...


Aprovecho para felicitarte por tu idea del Live-Wiki.

Estaría bueno, que ya que sos el autor , mandaras un mensajito aquí así
algunos que no leen otras listas se enterarán.

A mi me gustaría colaborar en eso, así aprendo, y si me autorizás tratar de
meterlo en mis imágenes chicas.

Abrazo

Edgar