Sì, los proxies sirven para implementar los traits, siempre y cuando hablemos de los traits que no requieren soporte del compilador.
Pero por otro lado, la idea de los traits es usar composición de clases en vez de herencia, es decir, es como usar herencia múltiple, pero donde voy seleccionado caracterìsticas (traits) que le voy agregando a la clase que voy creando. Cuando se agrega soporte al compilador, tenemos traits en tiempo de compilaciòn. Cuando creamos una biblioteca de traits, lo podemos hacer en tiempo de ejecución. Una de las cosas que nos gusta de Smalltalk es que todo se peude hacer en tiempo de ejecución... Y bien, los proxies componen clases en tiempo de ejecución para agregar comportamiento en tiempo de ejecución a los objetos que ya existen, de modo que de cierta manera logran lo mismo, usando mecanismos idènticos, hasta coceptualmente hablando. Eso de no tener variables de instancia probablemente es lo ùnico que los diferencia, y no es màs que un mecanismo irrelevante desde el punto de vista conceptual. Eso de que las clases son punteros a funciones lo he visto en alguna parte, en C++, se llama VMT Virtual Method Table y funciona re mal... supongo que a eso te refieres. Saludos, Guillermo. 2008/9/11 Gabriel <[EMAIL PROTECTED]> > Guillermo, no querrás decir que utilizar proxies es una forma de > implementar traits? Por lo que leo me parece que es eso. Pero no hay que > perder de vista que es solo una forma de implementarlo (quiza la mejor, ni > idea). Por eso me parece erroneo decir proxy = trait. Supongo que otra forma > podría ser modificar el asiempre lgoritmo de method lookup. > Hay que ser cuidadoso con estas cosas, porque uno puede caer en decir cosas > como: "un objeto es una estructura de datos en memoria", "una clase es una > lista de punteros a funciones y una estructura de datos que...". > Digo, si es este el caso me parece que está bueno siempre distinguir > CONCEPTO VS IMPLEMENTACION. > Saludos! > > El 11 de septiembre de 2008 10:18, Andres Valloud < > [EMAIL PROTECTED]> escribió: > > >> Me parece rarisimo que se hable de enseñar objetos y no se mencione la >> palabra mensaje ni una vez. Ademas, me parece que al polimorfismo le >> falta algo... no me parece que sea solo herencia + encapsulacion. >> Finalmente, lo que a mi gusto rompe la encapsulacion con herencia es >> codigo mal escrito. Si uno usa accessors no hay (creo) problemas. >> >> Andres. >> >> 2008/9/11 Guillermo Schwarz <[EMAIL PROTECTED]>: >> > Estoy 100% de acuerdo contigo aunque puede que no estés 100% de acuerdo >> > conmigo... ;-) >> > >> > Supongo que el problema es la manera en que se enseña orientación a >> objetos: >> > >> > OO = Herencia + Encapsulación + Polimorfismo >> > >> > Polimorfismo = Herencia + Encapsulación >> > >> > => OO = 2 * Polimorfismo >> > >> > Luego se enteran que: >> > >> > Herencia => ! Encapsulación >> > Y colapsan. >> > >> > Lo que yo haría diferente es explicar a los nuevos estudiantes de OO lo >> > siguiente: >> > >> > 1. El punto está en que lo que se quiere lograr es el polimorfismo y el >> > mecanismo para lograr eso podría ser herencia + encapsulación. >> > 2. Como herencia => ! encapsulación, miremos una alternativa que son los >> > proxies. ¿Cómo podemos hacer todo con proxies en vez de herencia? >> > >> > Entonces la idea de los traits parece una buena idea. Si se usa un >> > compilador o no ya es otro cuento. >> > >> >> >> > > > > -- Saludos cordiales, Guillermo Schwarz Sun Certified Enterprise Architect --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] http://www.clubSmalltalk.org -~----------~----~----~----~------~----~------~--~---
