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.
-~----------~----~----~----~------~----~------~--~---