Herencia multiple "7 lineas de codigo" o 5 minutos ...

35 views
Skip to first unread message

Bruno Buzzi Brassesco

unread,
Apr 19, 2008, 3:59:04 PM4/19/08
to clubSm...@googlegroups.com

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

Fede

unread,
Apr 20, 2008, 9:37:03 PM4/20/08
to ClubSmalltalk
jojo! Muy bueno! ;)
Se puede saber que dijo tu amigo a todo esto? jeje

Saludos,

Fede


On 19 abr, 16:59, "Bruno Buzzi Brassesco" <smallt...@adinet.com.uy>
wrote:

GallegO

unread,
Apr 21, 2008, 8:46:18 AM4/21/08
to clubSm...@googlegroups.com
Hola Bruno:

Bruno Buzzi Brassesco escribió:


>
> 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!!!
>

Muy bueno!
Se llega a resultados sorprendentes. Lo que no entiendo es porque en C#
no se podría hacer lo mismo. Me gustaría que me explicaras los motivos
(por los cuales no se puede) ya que eso que mostraste es muy simple.

Saludos
GallegO

Guillermo Schwarz

unread,
Apr 21, 2008, 12:37:32 PM4/21/08
to clubSm...@googlegroups.com
El mayor problema que tienen tanto Java como C# es que tienen early binding en vez de late binding, es decir, se trata de resolver todo en tiempo de compilaciòn, de modo que el truco del #doesNotUnderstand no es practicable ni en Java ni en C# (ok, todos sabemos que sì tienen late binding, pero es menos late que en el caso de Smalltalk).
 
Sin embargo en Java desde la versiòn 1.3 existen los dynamic proxies que vienen a hacer lo mismo pero con tipos estàticos. Ahora bien, la cantidad de lìneas de còdigo para hacer lo mismo bordea las 70 lìneas de código dependiendo de còmo se cuente, es decir unas 10 veces màs. Sin embargo considero que eso no es lo impresionante si despuès de todo eso se meterà dentro de una biblioteca, de modo que da lo mismo la cantidad de lìneas de còdigo, lo impresionante es el còdigo resultante con que queda la aplicaciòn, que al tener proxies dinàmicos permite asociaciones en tiempo de ejecuciòn.
 
El truco surgiò inicialmente en Smalltalk como el patròn de diseño llamado Proxy. Luego se concirtiò en Mixins para simular herencia múltiple. Luego se convirtió en AOP que finalmente es lo mismo.
 
He leìdo de proyectos que estàn tratando de programar todo con Traits (muy parecido a los Mixins), pero en vez de usar herencia para resolver los comportamientos similares, encadenan Traits. Al parecer la desilusiòn de las jerarquìas de clases nos ha llevado a esto, lo que hace que los lenguajes sean cada vez màs dinámicos, ya que en tiempode ejecución se podría agregar un trait a un objeto sin necesidad de instanciarlo de nuevo, mientras que con las jerarquìas de clases hay que recompilarlo todo.

Saludos,
Guillermo.
 
2008/4/21 GallegO <fxga...@gmail.com>:



--
Saludos cordiales,

Guillermo Schwarz
Sun Certified Enterprise Architect

Pablo Iaria

unread,
Apr 21, 2008, 1:08:25 PM4/21/08
to clubSm...@googlegroups.com
Para aportar algo al tema,

El framework Dojo (www.dojotollkit.com) es un framework para hacer
interfaces web con javascript que usa el concepto de Mixins para
simular la herencia múltiple.

Lo que hace es copiar todos los métodos de los mixins en la clase receptora.

Saludos!
Pablo.-

2008/4/21 Guillermo Schwarz <guillerm...@gmail.com>:

Bruno Buzzi Brassesco

unread,
Apr 21, 2008, 6:22:55 PM4/21/08
to clubSm...@googlegroups.com
Nunca dije que no se podria hacerse lo mismo en C# (al menos en el tiempo
que se hace en Smalltalk). En C# es mucho mas engorroso.

Digamos que era una discusión que Smalltalk no tenia herencia multiple, en 5
min hice eso (como vos decis lo que hice fue muy sencillo), y dije: "hacete
lo mismo en C# valor". Ese es el contexto de "Herencia multiple en 7 lineas
de codigo o 5 minutos".

La cara de mi amigo es indescriptible, tendria que haberle sacado una foto,
sobre todo cuando explicas que hace y como funciona cada "linea de codigo".

Saludos,
Bruno

-----Original Message-----
From: clubSm...@googlegroups.com [mailto:clubSm...@googlegroups.com]
On Behalf Of GallegO
Sent: Monday, April 21, 2008 9:46 AM
To: clubSm...@googlegroups.com
Subject: [clubSmalltalk] Re: Herencia multiple "7 lineas de codigo" o 5
minutos ...


Hola Bruno:

Bruno Buzzi Brassesco escribió:
>
> 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!!!
>
Muy bueno!
Se llega a resultados sorprendentes. Lo que no entiendo es porque en C#
no se podría hacer lo mismo. Me gustaría que me explicaras los motivos
(por los cuales no se puede) ya que eso que mostraste es muy simple.

Saludos
GallegO


No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.3/1390 - Release Date: 4/21/2008
4:23 PM

No virus found in this outgoing message.
Checked by AVG.

Version: 7.5.524 / Virus Database: 269.23.3/1390 - Release Date: 4/21/2008
4:23 PM

Chuck

unread,
Apr 23, 2008, 7:35:49 PM4/23/08
to ClubSmalltalk
eso es composicion implementada con una collection, o sea un
"cruncher" :)

On 19 abr, 16:59, "Bruno Buzzi Brassesco" <smallt...@adinet.com.uy>
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!!!
>
> No virus found in this outgoing message.
> Checked by AVG.

Jose Gregoris

unread,
Apr 23, 2008, 8:55:07 PM4/23/08
to clubSm...@googlegroups.com
Hola gente.
 
Perdon que me meta en la charla, pero no entendí esto:
 
He leìdo de proyectos que estàn tratando de programar todo con Traits (muy parecido a los Mixins), pero en vez de usar herencia para resolver los comportamientos similares, encadenan Traits. Al parecer la desilusiòn de las jerarquìas de clases nos ha llevado a esto, lo que hace que los lenguajes sean cada vez màs dinámicos, ya que en tiempode ejecución se podría agregar un trait a un objeto sin necesidad de instanciarlo de nuevo
, mientras que con las jerarquìas de clases hay que recompilarlo todo.
 
Sobre todo lo de recompilar todo, se refieren a ST o ( JAVA C#)
Saludos kiko


Guillermo Schwarz <guillerm...@gmail.com> escribió:
El mayor problema que tienen tanto Java como C# es que tienen early binding en vez de late binding, es decir, se trata de resolver todo en tiempo de compilaciòn, de modo que el truco del #doesNotUnderstand no es practicable ni en Java ni en C# (ok, todos sabemos que sì tienen late binding, pero es menos late que en el caso de Smalltalk).
 
Sin embargo en Java desde la versiòn 1.3 existen los dynamic proxies que vienen a hacer lo mismo pero con tipos estàticos. Ahora bien, la cantidad de lìneas de còdigo para hacer lo mismo bordea las 70 lìneas de código dependiendo de còmo se cuente, es decir unas 10 veces màs. Sin embargo considero que eso no es lo impresionante si despuès de todo eso se meterà dentro de una biblioteca, de modo que da lo mismo la cantidad de lìneas de còdigo, lo impresionante es el còdigo resultante con que queda la aplicaciòn, que al tener proxies dinàmicos permite asociaciones en tiempo de ejecuciòn.
 
El truco surgiò inicialmente en Smalltalk como el patròn de diseño llamado Proxy. Luego se concirtiò en Mixins para simular herencia múltiple. Luego se convirtió en AOP que finalmente es lo mismo.
 
He leìdo de proyectos que estàn tratando de programar todo con Traits (muy parecido a los Mixins), pero en vez de usar herencia para resolver los comportamientos similares, encadenan Traits. Al parecer la desilusiòn de las jerarquìas de clases nos ha llevado a esto, lo que hace que los lenguajes sean cada vez màs dinámicos, ya que en tiempode ejecución se podría agregar un trait a un objeto sin necesidad de instanciarlo de nuevo, mientras que con las jerarquìas de clases hay que recompilarlo todo.

Saludos,
Guillermo.
 
2008/4/21 GallegO <fxga...@gmail.com>:

Hola Bruno:

Bruno Buzzi Brassesco escribió:
>
> 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!!!
>
Muy bueno!
Se llega a resultados sorprendentes. Lo que no entiendo es porque en C#
no se podría hacer lo mismo. Me gustaría que me explicaras los motivos
(por los cuales no se puede) ya que eso que mostraste es muy simple.

Saludos
GallegO





--
Saludos cordiales,

Guillermo Schwarz
Sun Certified Enterprise Architect


Yahoo! Encuentros
Ahora encontrar pareja es mucho más fácil, probá el nuevo Yahoo! Encuentros.
Visitá http://yahoo.cupidovirtual.com/servlet/NewRegistration

Bruno Buzzi Brassesco

unread,
Apr 23, 2008, 10:13:04 PM4/23/08
to clubSm...@googlegroups.com
Y que vendría a ser un "cruncher" ?

Saludos,
Bruno


-----Original Message-----
From: clubSm...@googlegroups.com [mailto:clubSm...@googlegroups.com]
On Behalf Of Chuck
Sent: Wednesday, April 23, 2008 8:36 PM
To: ClubSmalltalk
Subject: [clubSmalltalk] Re: Herencia multiple "7 lineas de codigo" o 5
minutos ...

eso es composicion implementada con una collection, o sea un
"cruncher" :)

On 19 abr, 16:59, "Bruno Buzzi Brassesco" <smallt...@adinet.com.uy>
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...

No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.4/1394 - Release Date: 4/23/2008
7:16 PM

No virus found in this outgoing message.
Checked by AVG.

Version: 7.5.524 / Virus Database: 269.23.4/1394 - Release Date: 4/23/2008
7:16 PM

Marcelo Cortez

unread,
Apr 23, 2008, 10:21:33 PM4/23/08
to clubSm...@googlegroups.com
jajajaj pense en preguntar lo mismo :D somos 2..
salu2
mdc

2008/4/23 Bruno Buzzi Brassesco <smal...@adinet.com.uy>:


>
> Y que vendría a ser un "cruncher" ?
>
>
> Saludos,
> Bruno
>
>
> -----Original Message-----
> From: clubSm...@googlegroups.com [mailto:clubSm...@googlegroups.com]
>
> On Behalf Of Chuck
> Sent: Wednesday, April 23, 2008 8:36 PM
> To: ClubSmalltalk
> Subject: [clubSmalltalk] Re: Herencia multiple "7 lineas de codigo" o 5
> minutos ...
>
>
>
>

> eso es composicion implementada con una collection, o sea un
> "cruncher" :)
>
> On 19 abr, 16:59, "Bruno Buzzi Brassesco" <smallt...@adinet.com.uy>
> 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...

> No virus found in this incoming message.
> Checked by AVG.


> Version: 7.5.524 / Virus Database: 269.23.4/1394 - Release Date: 4/23/2008
> 7:16 PM
>
>
>

> No virus found in this outgoing message.
> Checked by AVG.

Guillermo Schwarz

unread,
Apr 24, 2008, 11:14:43 PM4/24/08
to clubSm...@googlegroups.com
La idea de la orientaciòn a objetos se puede ver como la creaciòn de objetos biológicos (de ahí su nombre, no muy apropiado por cierto, por parte de Alan Kay que fue el inventor del término y que estudió biología molecular), pero además se puede ver como la reducción del código repetido a través de las jerarquías de clases.
 
Acà hay un ejemplo de Traits y cómo se puede eliminar la repetición de las colecciones en Smalltalk: http://portal.acm.org/citation.cfm?doid=949305.949311
 
"La" explicación de Traits: http://www.iam.unibe.ch/~scg/Archive/Papers/Scha03aTraits.pdf en Smalltalk.

Saludos,
Guillermo.
 
2008/4/23 Jose Gregoris <kikod...@yahoo.com.ar>:

Marcelo Cortez

unread,
Apr 25, 2008, 12:10:15 AM4/25/08
to clubSm...@googlegroups.com
Hola gente

perdon entonces "cruncher" == traits?

porque traits ya lo conocia..
salu2
mdc


2008/4/25 Guillermo Schwarz <guillerm...@gmail.com>:

GallegO

unread,
Apr 25, 2008, 8:24:21 AM4/25/08
to clubSm...@googlegroups.com
Hola:

Alguien usó Traits para sistemas en producción?
Han obtenido buenos resultados?
Hay algún port o intención de port a Dolphin o Visual Smalltalk?

Saludos
GallegO

Guillermo Schwarz escribió:


> La idea de la orientaciòn a objetos se puede ver como la creaciòn de
> objetos biológicos (de ahí su nombre, no muy apropiado por cierto, por
> parte de Alan Kay que fue el inventor del término y que estudió
> biología molecular), pero además se puede ver como la reducción del
> código repetido a través de las jerarquías de clases.
>
> Acà hay un ejemplo de Traits y cómo se puede eliminar la repetición de
> las colecciones en Smalltalk:
> http://portal.acm.org/citation.cfm?doid=949305.949311
>
> "La" explicación de Traits:
> http://www.iam.unibe.ch/~scg/Archive/Papers/Scha03aTraits.pdf

> <http://www.iam.unibe.ch/%7Escg/Archive/Papers/Scha03aTraits.pdf> en

> Smalltalk.
>
> Saludos,
> Guillermo.
>
> 2008/4/23 Jose Gregoris <kikod...@yahoo.com.ar

> <mailto:kikod...@yahoo.com.ar>>:


>
> Hola gente.
>
> Perdon que me meta en la charla, pero no entendí esto:
>

> *


> He leìdo de proyectos que estàn tratando de programar todo con
> Traits (muy parecido a los Mixins), pero en vez de usar herencia
> para resolver los comportamientos similares, encadenan Traits. Al
> parecer la desilusiòn de las jerarquìas de clases nos ha llevado a
> esto, lo que hace que los lenguajes sean cada vez màs dinámicos,
> ya que en tiempode ejecución se podría agregar un trait a un
> objeto sin necesidad de instanciarlo de nuevo

> *,* mientras que con las jerarquìas de clases hay que recompilarlo
> todo.
>
> *


> Sobre todo lo de recompilar todo, se refieren a ST o ( JAVA C#)
> Saludos kiko
>
>

> */Guillermo Schwarz <guillerm...@gmail.com
> <mailto:guillerm...@gmail.com>>/* escribió:

> <mailto:fxga...@gmail.com>>:

> ------------------------------------------------------------------------

Abel Armoa

unread,
Apr 25, 2008, 8:25:38 AM4/25/08
to clubSm...@googlegroups.com
Hola Guillermo:
No entendí qué querés decir con "creación de objetos biológicos". ¿Qué son los objetos biológicos?
En cuanto a que la idea de la orientación a objetos como reducción de código repetido a través de jerarquías de clases, no estoy de acuerdo. Me parece que el hecho de evitar la repetición de código es mejor verlo como una consecuencia, y no como parte del corazón de la orientación a objetos. Por otra parte, hacés referencia a jerarquías de clases, sin embargo creo que es posible trabajar con objetos en ambientes de prototipación, donde no tendrías las jerarquías de clases en primera instancia. En este caso, según la segunda definición, no estaríamos hablando de orientación a objetos, cuando en realidad sí entran dentro de la categoría.

Saludos,
Abel Armoa

2008/4/25 Guillermo Schwarz <guillerm...@gmail.com>:

Claudio

unread,
Apr 25, 2008, 9:46:59 AM4/25/08
to ClubSmalltalk
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" <smallt...@adinet.com.uy>
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!!!
>

Gabriel

unread,
Apr 25, 2008, 10:05:53 AM4/25/08
to clubSm...@googlegroups.com
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

Nicolas Chillo

unread,
Apr 25, 2008, 10:25:25 AM4/25/08
to clubSm...@googlegroups.com
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

Guillermo Sapaya

unread,
Apr 25, 2008, 1:38:57 PM4/25/08
to clubSm...@googlegroups.com
Claudio,
cómo va tanto tiempo?
Algo interesante en cuanto al tema que planteas del "problema de self"
se resuelve con esto:

http://www.dc.uba.ar/events/smalltalks/2007/programme/canibanoSmalltalks2007.pdf

Estuve en la presentación de Nicolás en Smalltalks2007 y estuvo muy
interesante :-)

Saludos, Guiye

Nicolas Chillo escribió:


> 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 <gab...@gmail.com

> <mailto:gab...@gmail.com>> escribió:

> On 25/04/2008, *Claudio* <claudio...@gmail.com

> <smallt...@adinet.com.uy <mailto:smallt...@adinet.com.uy>>


--
Guillermo Sapaya
InfOil S.A.
Gerente de Desarrollo
(+54-11) 4542-9999 x122
gsa...@infoil.com.ar

Bruno Buzzi Brassesco

unread,
Apr 25, 2008, 7:08:08 PM4/25/08
to clubSm...@googlegroups.com
Claudio,

Personalmente nunca usaria herencia multiple. Para mi en los casos de
herencia multiple siempre hay un error de concepto.

Como vos decis en lo que envie esta el problema del "self" y muchos otros
problemas. En si lo que envie es un ejemplo que hice frente a un amigo (de
la linea C#) para que viera la flexibilidad que tiene Smalltalk. Como esta
preocupado por la herencia multiple le mostre esto, solo eso.

No se trata de implementar HM ni mostrar por donde se podria ir para
implementar HM, sino que fue algo que hice en 5 min (ahora son las 8:04 para
8:09 que podria hacer de de HM???) y fue solamente eso. Ya se que el ejemplo
es muy burdo; y simple como dijo gallego.

Saludos,
Bruno


-----Original Message-----
From: clubSm...@googlegroups.com [mailto:clubSm...@googlegroups.com]
On Behalf Of Claudio
Sent: Friday, April 25, 2008 10:47 AM
To: ClubSmalltalk
Subject: [clubSmalltalk] Re: Herencia multiple "7 lineas de codigo" o 5
minutos ...

> estar un año trabajando sobre un tema...

No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.5/1398 - Release Date: 4/25/2008
2:31 PM

No virus found in this outgoing message.
Checked by AVG.

Version: 7.5.524 / Virus Database: 269.23.5/1398 - Release Date: 4/25/2008
2:31 PM

Reply all
Reply to author
Forward
0 new messages