Leandro,
                creo que estaría bueno desambiguar ciertos conceptos 
antes de meterse en como se implementa la herencia. A mi personalmente 
me pasó de "aprender" objetos leyendo libros de delphi y la verdad que 
tenía una ensalada que ni te cuento. Llegue a hacer cosas como

obj : MiClase;
...
obj:=obj new;

je, lo interesante no solo es que compilaba, sino que hasta andaba! (al 
menos en los delphis 1, 2 y 3 si mal no recuerdo). Luego aparecen 
errores esporádicos imposibles de debuggear :P. Pero bueno, dejando de 
lado lo anecdótico:

- En los lenguajes OO basados en clases (Java, St) todos los objetos son 
instancia de una clase y la forma de crear un objeto (de "traerlo a la 
vida") es pidiéndole a la clase que lo haga (y generalmente esto se hace 
con el mensaje #new o similar). Ejemplo:
juan:=Persona new.

- Cuando mandás un mensaje a un objeto lo que hace la máquina virtual es 
buscar en la clase de ese objeto una implementación (método) que machee 
con el mensaje. Por ejemplo si hacés:

juan nombre

lo que va a pasar es que la VM busca la clase del objeto "juan" (que es 
Persona) y le pide que le de el método asociado al mensaje #nombre. Si 
la clase lo tiene se lo da a la VM para que lo ejecute en el contexto 
del receptor (en este caso "juan"). Si no lo tiene aparece un error. O 
sea que una clase tiene, en principio, dos roles:
1. Crear sus instancias.
2. Funcionar como repositorio de comportamiento común a todas sus 
instancias.

- Entre clases (ojo, no entre objetos) se pueden establecer relaciones 
de herencia. Cuando una clase A hereda de otra B se dice que B es 
subclase de A (y A es la superclase de B). Al heredar B de A se dice que 
se hereda todo el comportamiento y acá es donde entraría tu pregunta 
(creo), que es ¿cómo se implementa dicha herencia? El mecanismo se 
conoce como method lookup (y si la memoria no me falla el gran Hernán 
Wilkinson tiene una tesis de grado muy buena relacionada con esto[*]) y 
es mas o menos así:

instanciaDeB:=B new.
instanciaDeB hola.

al mandar el mensaje #hola a "instanciaDeB" se hace lo mismo que te 
comenté anteriormente: la VM busca la clase y le pide el método que 
implementa #hola. Si lo encuentra se evalúa en el contexto de 
"instanciaDeB". Ahora bien, si no lo encuentra en realidad no tira un 
error tan rápido, sino que sale a buscar en la superclase de B (o sea, 
A) a ver si en esa clase no está el bendito método. Si lo encuentra pasa 
lo mismo que antes (lo evalúa en el contexto de "instanciaDeB") y sino 
sigue buscando. Hasta donde? En el caso de Smalltalk la búsqueda se hace 
hasta Object (que vendría a ser algo así como la superclase de todas las 
clases) y si no lo encuentra recién ahí se tira el error.

No se si esto responde tu pregunta. Por el tema de los bytecodes y de 
convertir dos objetos en uno la verdad que no se a que apunta tu amigo. 
De última si hasta acá venimos bien podemos ver un poco sobre la 
generación de bytecodes (o sino parafrasea la pregunta y tratamos de 
encontrarle la vuelta :))

[*] Che Hernán, está colgada en la web tu tesis?

Saludos,
         Andrés


Leandro Martín Malsam escribió:
> por ahí el subject suena a novato, pero ahora entenderán.
> participando en un foro de mi facultad, encontré el siguiente "dilema"
> posteado por un usuario:
> 
> *Habiendo ido el sabado a la tarde a la PyCon, escuche al tipejo de Google
> quejarse de el excesivo envio de mensajes entre objetos.
> Recien estuve chusmeando un poco, y me entero de que casi todos los
> lenguajes OO, cuando creas un objeto A que hereda de B, la maquina virtual
> crea un objeto A, un objeto B, y los relaciona.
> ¿Porque?
> ¿No es mas comodo y eficiente, crear un objeto A con las caracteristicas de
> B?
> osea, que en el codigo fuente, A herede de B, pero cuando todo se convierta
> a bytecode, estos "dos objetos" se conviertan en uno solo...
> Probablemente no me se explicar la idea... pero bue, ustedes entenderan :P.*
> 
> 
> se entendió? creo que la pregunta de mi compañero es clara. y bueno, como yo
> soy medio novato en estas cosas, no tuve mejor idea que trasladarles la
> inquietud a los eruditos de la materia, de quienes siempre se aprende algo.
> 
> así que si se copan y nos iluminan un poco, les agradecemos.
> 
> salu2
> 
> lea
> 
> > 
> 

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

To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org
-~----------~----~----~----~------~----~------~--~---

Responder a