Gabo:
El problema con lo que vos decis es que la clasificación actual es demasiado
arbitraria. A no todos les sirve por ejemplo que un Entero se clasifique en
LargeInteger y SmallInteger.

A partir de estas clasificaciones arbitrarias, surge la necesidad de buscar
nuevas alternativas. Aca entran en juego los mecanismos de herencia
multiple, de traits, etc. Igualmente, yo coincido en que estos mecanismos no
deberían ser soluciones a reutilización de codigo.

Saludos,
Nicolas Chillo

El día 25 de abril de 2008 11:05, Gabriel <[EMAIL PROTECTED]> escribió:

> En el congreso de Smalltalk hubo una charla en la que explicaron como
> implementar "true delegation" (delegacion sin el problema de self que
> nombras) en Visualworks. Igualmente la implementacion es un poco estoterica
> y varia dependiendo de la distribucion de Smalltalk. Pero es interesante...
>
> Habria que revisar si en realidad se requiere herencia multiple o el
> problema pasa por otro lado (poder compartir comportamiento entre varios
> objetos de una manera mas flexible).
>
> El principal problema viene de pensar que la herencia esta para
> "reutilizar codigo". Grave error, las clases estan para clasificar
> conocimiento, y de alli su nombre CLASE.
> Y cuando se clasifican cosas, por ejemplo animales, y tenemos a una clase
> de animales, decimos que estos tienen algo en comun, algo que los hace
> propio de esa clase. Que los hace propios de esa clase? bueno, por ejemplo
> el funcionamiento de su aparato reproductor. En Smalltalk esto implicaria
> que gran parte del comportamiento relacionado con el aparato reproductor
> podria estar compartido por todos los animales pertenecientes a esta clase.
>
> Que sentido tiene tener herencia multiple? no se estarian clasificando
> cosas mezclando el punto de vista?
>
> Habria que revisar tambien si en realidad la herencia (que es una
> herramienta muy util) no se exige en Smalltalk de manera muy estricta.
> ¿Podria en su lugar contarse con un ambiente como Self en donde todo esta
> basado en prototypos y delegacion y en el mismo ambiente poder utilizar
> clases para ir generalizando el conocimiento adquirido con los prototipos?
>
> Saludos
> Gaboto
>
>
>
>
> On 25/04/2008, Claudio <[EMAIL PROTECTED]> wrote:
> >
> >
> > Hola Bruno,
> >         Cada vez que alguno sugiere la necesidad de la herencia
> > múltiple en el paradigma de Objetos, los que consideramos que es
> > innecesaria (y perjudicial) mostramos que esas supuestas necesidades
> > pueden satisfacerse con delegaciones. Esto es exactamente lo que Vos
> > estás haciendo en tu solución. Tu Dragón recibe un mensaje que no
> > tiene implementado entonces lo delega en sus colaboradores, una
> > INSTANCIA de Lagarto y una INSTANCIA de Pájaro. Extrañamente se lo
> > enviás a ambos en lugar de "elegir" de algún modo quién lo responderá.
> > Ahora supongamos que tu mecanismo de selección (on: Error,  result
> > notNil:...) funcionara... entrás en el famoso "Problema de self" que
> > podríamos resumirlo en lo siguiente:
> > Supongamos que La Clase Pájaro implementa #message1 y #message2 y la
> > clase Dragón implementa el mensaje #message2.
> > Supongamos que tu Dragón recibe un mensaje #message1 que no
> > implementa, y entonces lo delega y lo resuelve el Pájaro.
> > Supongamos ahora también que dentro del código del método
> > correspondiente a #message1 en la clase Pájaro , hay una línea que
> > dice:
> >      self message2.
> > ....
> > Si estuviésemos hablando de Herencia, es decir, si Dragón heredara de
> > Pájaro, el objeto que está ejecutando #message1 es UN DRAGÓN, aunque
> > use la implementación de la clase Pájaro, pero es un dragón, por lo
> > cual, en la línea "self message2" self es el dragón y el message2 que
> > se ejecuta es el de dragón.... en cambio en tu ejemplo, el objeto que
> > está ejecutando #message1 es un pájaro, entonces cuando la línea "self
> > message2" ejecuta el método "incorrecto".... y ni hablar de lo que
> > pasaría si el pájaro does not understand #message2 ...
> > Me quedan muchas más preguntas, como por ejemplo que pasa con
> > super.... pero no lo quiero hacer muy largo!!!
> > Abrazo,
> >
> >          Claudio
> >
> >
> >
> > On 19 abr, 16:59, "Bruno Buzzi Brassesco" <[EMAIL PROTECTED]>
> > wrote:
> >
> > > Discutiendo con un amigo que decía que Smalltalk no tenia herencia
> > múltiple.
> > >
> > > Aunque sea discutible la necesidad de herencia múltiple, me pregunte
> > cuan
> > > rápido se podrá implementar herencia múltiple en Smalltalk y poner a
> > prueba
> > > su flexibilidad.
> > >
> > > En "7 líneas de código" o 5 minutos ... hice esto:
> > >
> > > Se puede discutir sobre la validez de la implementación (la variable #
> > > superinstances y sus implicaciones) pero NO es el punto central.
> > >
> > > Lo central es que si en 5 minutos se puede hacer esto, que será
> > después de
> > > estar un año trabajando sobre un tema…
> > >
> > > Implementa algo así en C# (u otro) valor!!!
> > >
> >
> > > Object subclass: #HerenciaMultiple
> > >
> > >             instanceVariableNames: 'superinstances'
> > >
> > >             classVariableNames: ''
> > >
> > >             poolDictionaries: ''
> > >
> > >             classInstanceVariableNames: ''
> > >
> > > initialize
> > >
> > >             super initialize.
> > >
> > >             superinstances := OrderedCollection new.
> > >
> > >             superinstances addAll: (self superclasses collect: [:each
> > | each
> > > new initialize])
> > >
> > > doesNotUnderstand: failedMessage
> > >
> > >             superinstances do: [:each | | result |
> > >
> > >                         [result := each perform: failedMessage
> > selector
> > > withArguments: failedMessage arguments] on: Error do: [:ex | ].
> > >
> > >                         result ifNotNil: [:value | ^value]].
> > >
> > >             ^super doesNotUnderstand: failedMessage
> > >
> > > Object
> > >
> > >             Lagarto
> > >
> > >             Pajaro
> > >
> > >             HerenciaMultiple
> > >
> > >                         Dragon
> > >
> > > Dragon class
> > >
> > > superclasses
> > >
> > >             ^OrderedCollection with: Lagarto with: Pajaro
> > >
> > > Saludos,
> > >
> > > bruno
> > >
> > > No virus found in this outgoing message.
> > > Checked by AVG.
> > > Version: 7.5.524 / Virus Database: 269.23.2/1387 - Release Date:
> > 4/19/2008
> > > 11:31 AM
> >
> >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "ClubSmalltalk" de 
Grupos de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo 
electrónico a [email protected]
 Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
 Para obtener más opciones, visita este grupo en 
http://groups.google.com/group/clubSmalltalk?hl=es.

-~----------~----~----~----~------~----~------~--~---

Responder a