En otros Smalltalks, *cada objeto* tiene un puntero a su clase (excepto los inmediatos como los caracteres, small integers y small doubles). Es lo mismo en lo que al puntero respecta, salvo que en VSE el puntero es a una cosa que no es una clase. En otros Smalltalks, superficialmente, nada impide hacer clases fantasma que cambien los mensajes a los que responde un objeto, o que hagan que la herencia pase por clases tuyas antes etc. Sin embargo, es de andar pidiendo que se te cuelgue la imagen. De cualquier modo es medio un garron.
A primera vista parece que el enfoque de VSE tiene que ser obviamente superior, pero seguramente debe haber algun costo u otra cosa que se complica al tener que andar escarbando entre los arrays de method dictionaries para encontrar la clase del objeto... por ejemplo, probablemente para VSE sea bueno tener acceso mas rapido a los method dictionaries porque no tiene PICs. Si tuviera PICs, los lookups serian mucho menos frecuentes y entonces no importaria tanto tener la doble indireccion a traves de la clase para encontrar el method dictionary. Que se yo, no me parece que sea tan facil. 2010/8/7 Gerardo Richarte <[email protected]>: > On 07/27/2010 05:32 PM, [email protected] wrote: >> Hola Andrés >> Contesto entre líneas... >> > yo no, solo por esta vez :) >> Cuando envío un mensaje a un objeto, este busca en la clase, >> superclases, etc. y ejectua el método. >> > pegale una mirada a Visual Smalltalk, desde siempre tuvo algo que > permite cambiar > un poco la semántica del message send (del lookup) desde Smalltalk. > > Básicamente, el lookup no se hace por clases y jerarquías, si no que > *cada objeto* tiene algo así como un array con los diccionarios donde se > hace el lookup. El orden de los diccionarios es el orden del lookup. > Obviamente por default este array esta armado según la jerarquía de la > clase del objeto, y es compartido el mismo por todos los objetos de la > misma clase, pero esto no tiene por que ser así. > > Y de esta forma se pueden usar métodos de instancia (y se usan en > sistemas comerciales), se puede implementar fácilmente cosas como > traits, hernecia múltiple, etc. Lo único que no se puede hacer es > cambiar que el matching de los métodos se haga por el selector, para eso > hay que caer en el doesNotUnderstand: > > saludos! > > -- > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > > http://www.clubSmalltalk.org -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org
