2008/9/11 Andres Valloud <[EMAIL PROTECTED]> > > Acerca del encapsulamiento roto por herencia... que se yo, a mi me da > la sensacion de que encarar el asunto de programar con el baticinturon > de la seguridad y el miedo de que se rompan las cosas causa que un > monton de codigo innecesario aparezca sin contribuir a la solucion del > problema. En otras palabras, siento que cosas como final en Java son > una reaccion externa ante un miedo interno que no necesariamente tiene > que ver con el problema real.
En esto estoy de acuerdo... no se porque lo relacionas con lo que dije pero estoy de acuerdo. > > > Lo que a mi juicio sucederia si me dejara controlar por esos miedos es > que a final de cuentas iria bastante mas lento de lo que ya > experimente, y no quiero perder la eficiencia que viene con no andar > sintiendo miedo. Estoy de acuerdo, el miedo no es bueno y para sacartelo nada mejor que una buena cobertura de tests. > > > Ahora bien, de ahi a programar mal y escribir cualquier cosa... ahi > creo que vamos a estar de acuerdo de un modo u otro. > > Andres. > > > 2008/9/11 Hernan Wilkinson <[EMAIL PROTECTED]>: > > que tal gente, > > perdón que no participé antes... me parece muy interesante la discusión > y > > no tengo mucho tiempo para comentar, así que voy a ser escueto y por > serlo > > espero no ser aspero > > 1) Guillermo, no se donde aprendiste objetos pero no es así como lo > > enseñamos en la UBA. Es verdad que la mayoría de la gente lo enseña como > > decís o peor. Fijate que en ningún momento hablaste de objeto ni mensaje > > (como dice Andrés) que es lo más importante. > > 2) Un trait no es un proxy y viceversa. Por empezar un proxy es un objeto > > distinto al que proxea y esto no aplica para los traits quienes son > > utilizados para componer comportamiento. Por ejemplo, un proxy adolece > del > > problema del "identidad" mientras que eso ni se puede pensar en un trait. > > 3) Recalco lo que dice Gabriel, no hay que perder nunca la pata > conceptual. > > Conceptualmente trait es distinto de clase y de proxy, representan cosas > > completamente distintas. > > 4) No es lo mismo el concepto de trait en Self que en Smalltalk, por eso > > quizá la confusión con proxy... es así? > > 5) El encapsulamiento no solo se rompe en la subclasificación por acceder > a > > las variables de instancias sino por el hecho de poder redefinir > > comportamiento o utilizar super, etc. Hacer estas cosas implica saber > como > > está implementada la superclase y por lo tanto hace que las clases sean > > "cajas blancas" y no "cajas negras", por eso se dice que rompe el > > encapsulamiento.... > > chau chau chau chauuuuu > > > > 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, > >> Guillermo. > >> > >> 2008/9/10 Marcelo Cortez <[EMAIL PROTECTED]> > >>> > >>> A mi me parece que un traits es un intento de usar mas composicion > >>> sobre clasificacion , que la la clase puede componerse de varias > >>> responsabilidades que quedan unida a la clase , en traits /( hasta > donde se > >>> ) se descompone ese comportamiento en traits yt luego ese > comportamiento > >>> puede ser reutilizado para rehusar ese comportamiento/protocolo en una > >>> manera mas modular. > >>> personalemente me agrada pero no se porque tuvo tan poca aceptacion en > la > >>> comunidad de squeak ( digo squeak porque es en donde mayormente lei o > vi > >>> algo al respecto) , > >>> igualmente tiene cierto parecido a mixins ( alguien mas podra > referenciar > >>> con mas claridad los papers que apuntan a estas "ideas") > >>> quizas se deba a que ls herramientas para administrar nunca fueron ( > >>> hasta donde yo se) integradas con exito y eso dificulto el uso y > aceptacion. > >>> de la comunidad ( aclaro nuevamente de squeak). > >>> por eso la presentacion en smalltalk 2007 de este trabajo que > mencionaba > >>> hernan , me soprendio gratamente que me atrveria a recomendar que no > se la > >>> pierdan si pueden. > >>> lo que tengo entendido de proxy "viene de la parte de patens" y no le > veo > >>> tampoco la similutud con traits. > >>> Ojo mi ignorancia es muy grande asi que no me sorprenderia que alguien > >>> explique esto traits/proxy con muchisimo mas conicimiento del tema. > >>> igualmente pienso que estos temas son interesantes y recomiendo que no > se > >>> pierdan la charla .y que asistan todos los que puedan a este tipo de > eventos > >>> , smalltalk's 2008 , etc. > >>> saludos > >>> mdc > >>> > >>> 2008/9/10 Gabriel <[EMAIL PROTECTED]> > >>>> > >>>> Que significa oversized Proxy? > >>>> Segun tengo entendido la idea es que un trait sea como un > "repositorio" > >>>> de comportamiento compartible entre objetos. > >>>> Si bien una clase tambien cumpliria este rol, también estaría > cumpliendo > >>>> el de "Clase" utilizada para clasificar, o sea el de definir un grupo > en una > >>>> taxonomia, en una organizacion de conocimiento (y tambien provee de la > >>>> implementación del estado de los objetos). > >>>> Me equivoco? De ser así cuál seria la relación entre trait y proxy? > >>>> (pregunto desde mi ignorancia) > >>>> > >>>> El 10 de septiembre de 2008 19:49, Guillermo Schwarz > >>>> <[EMAIL PROTECTED]> escribió: > >>>>> > >>>>> y una pregunta, ¿no les parece que Traits no es más que un nombre > nuevo > >>>>> para un oversized Proxy? > >>>>> > >>>>> No es que esté menospreciando a los Traits, pero me parece > interesante > >>>>> que los conceptos sean simplemente aplicar buenos conceptos antiguos > "más a > >>>>> fondo"... > >>>>> > >>>>> 2008/9/9 Hernan Wilkinson <[EMAIL PROTECTED]> > >>>>>> > >>>>>> Si, fue mostrado por Alejandro. > >>>>>> > >>>>>> 2008/9/9 Marcelo Cortez <[EMAIL PROTECTED]> > >>>>>>> > >>>>>>> Hernan > >>>>>>> > >>>>>>> Muy interesante , por casualidad no fue mostrado este trabajo en > >>>>>>> Smaltalk`s 2007? > >>>>>>> saludos > >>>>>>> MDC > >>>>>>> > >>>>>>> 2008/9/9 Hernan Wilkinson <[EMAIL PROTECTED]> > >>>>>>>> > >>>>>>>> Que tal, > >>>>>>>> el miércoles 17 de Septiembre a las 10 hrs. (aula a determinar), > >>>>>>>> Alejandro Gonzalez presentará su trabajo de Tesis de Licenciatura > que trata > >>>>>>>> sobre el estudio e implementación de "Refactorings para Traits". > >>>>>>>> El mismo se basó en realizar cambios a jerarquías de clases > >>>>>>>> existentes utilizando un nuevo elemento de representación de > conocimiento > >>>>>>>> denominado Trait (o Rasgo en castellano). Al ir realizando estos > cambios se > >>>>>>>> tomó nota de aquellos procesos comunes que pudiesen ser creados > como > >>>>>>>> Refactorings, para luego implementarlos como tal. > >>>>>>>> El trabajo se realizó con Squeak (una implementación open source > de > >>>>>>>> Smalltalk) y se amplió la funcionalidad del Refactoring Browser. > El mismo se > >>>>>>>> encuentra disponible para ser utilizado en SqueakSource. > >>>>>>>> Esta es la primer presentación de un conjunto de tesis que tratan > >>>>>>>> sobre la utilización de Traits en ambientes de objetos que > utilizan > >>>>>>>> clasificación como metodología de representación de conocimiento. > El resto > >>>>>>>> de los trabajos se irán presentando en los próximos meses. > >>>>>>>> El jurado estará compuesto por Máximo Prieto, Gabriela Arévalo y > >>>>>>>> Hernán Wilkinson. > >>>>>>>> > >>>>>>>> A continuación se adjunta un resumen: > >>>>>>>> --- > >>>>>>>> Traits es un nuevo concepto para estructurar programas orientados > a > >>>>>>>> objetos. > >>>>>>>> Este concepto, permite que el comportamiento total de una clase > >>>>>>>> pueda ser construido > >>>>>>>> composicionalmente a partir de pequeños rasgos de comportamientos > >>>>>>>> llamados traits. > >>>>>>>> > >>>>>>>> Traits complementa a la herencia simple y es por esto, > >>>>>>>> que su inclusión conlleva la necesidad de querer refactorizar > >>>>>>>> nuestros diseños, > >>>>>>>> ya que con ellos ahora se pueden resolver cuestiones antes no > >>>>>>>> resueltas, o mal resueltas, por la herencia. > >>>>>>>> En particular, aquellas jerarquías cuestionadas por hacer un > fuerte > >>>>>>>> uso de la herencia > >>>>>>>> como único mecanismo para compartir comportamiento, son las que se > >>>>>>>> convierten en candidatas a ser refactorizadas con traits. > >>>>>>>> Pero estas refactorizaciones no pueden ser realizadas > eficientemente > >>>>>>>> sin la asistencia de una herramienta apropiada. > >>>>>>>> > >>>>>>>> Muchos ambientes de desarrollo incluyen herramientas para > >>>>>>>> refactorizar código. > >>>>>>>> Éstas soportan, a menudo, refactorings típicos que pueden > realizarse > >>>>>>>> en forma semi-automática, > >>>>>>>> como por ejemplo Push up method y Rename method. > >>>>>>>> El problema es que, éstas operan sobre conceptos conocidos del > >>>>>>>> paradigma: > >>>>>>>> jerarquía de clases, métodos, variables de instancia, etc. > >>>>>>>> Actualmente, ninguna brinda soporte para la refactorización con > este > >>>>>>>> nuevo concepto, traits. > >>>>>>>> > >>>>>>>> En este trabajo se investigan, tanto desde un punto de vista > >>>>>>>> conceptual como implementativo, nuevos refactorings para traits. > >>>>>>>> El resultado es un nuevo conjunto de operaciones de refactorings > >>>>>>>> que, > >>>>>>>> inicialmente surgieron de ideas básicas y operaciones típicas al > >>>>>>>> programar con traits, > >>>>>>>> pero que luego fueron refinándose a medida que las comenzamos a > >>>>>>>> utilizar para realizar diferentes refactorizaciones. > >>>>>>>> > >>>>>>>> Estos nuevos refactorings se implementaron en Squeak, un dialecto > >>>>>>>> open-source de Smalltalk, > >>>>>>>> dado que éste es el único ambiente que incluye una implementación > >>>>>>>> sólida de ambos, > >>>>>>>> el nuevo concepto de traits y una herramienta de refactorings > >>>>>>>> conocida como refactoring browser. > >>>>>>>> > >>>>>>>> > ------------------------------------------------------------------------------------------------------------ > >>>>>>>> Abstract: > >>>>>>>> --------- > >>>>>>>> Traits is a new concept for structuring object-oriented programs. > >>>>>>>> This concept allows us to build the whole behavior of a class by > >>>>>>>> composing it from small building blocks of behaviors, called > traits. > >>>>>>>> > >>>>>>>> Traits complement single inheritance, > >>>>>>>> thus their inclusion creates the need for a re-design of our > >>>>>>>> applications, > >>>>>>>> since with them we can now solve design issues that were not > solved, > >>>>>>>> or improperly solved, by using single inheritance. > >>>>>>>> Particularly, those hierarchies criticized for a strong use of the > >>>>>>>> inheritance as the only mechanism to share behavior, > >>>>>>>> become candidates to be refactored towards traits. > >>>>>>>> However, these refactorings cannot be efficiently addressed > without > >>>>>>>> the assistance of appropriated tools. > >>>>>>>> > >>>>>>>> Most development environments include tools to refactor code. > >>>>>>>> These tools support typical refactorings that can be applied > >>>>>>>> semi-automatically, > >>>>>>>> such as Push up method and Rename method. > >>>>>>>> The problem is that these tools work on well known concepts of the > >>>>>>>> paradigm: > >>>>>>>> class hierarchies, methods, instance variables, etc. > >>>>>>>> Currently, none of them give support for a refactorization towards > >>>>>>>> this new concept, traits. > >>>>>>>> > >>>>>>>> In this work we investigate, from both a conceptual and an > >>>>>>>> implementative point of view, new trait's refactorings. > >>>>>>>> The outcome is a new set of refactoring operations that > >>>>>>>> initially came up from basic ideas and typical operations when > >>>>>>>> working with traits, > >>>>>>>> but then were polished as we use them to perform some > refactorings. > >>>>>>>> > >>>>>>>> These refactorings were implemented in Squeak, an open-source > >>>>>>>> Smalltalk dialect, > >>>>>>>> since it's the only environment which includes a solid > >>>>>>>> implementation of both, > >>>>>>>> the traits concept and a refactoring tool called refactoring > >>>>>>>> browser. > >>>>>>>> ------------- > >>>>>>>> Saludos, > >>>>>>>> Hernán. > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> Saludos cordiales, > >>>>> > >>>>> Guillermo Schwarz > >>>>> Sun Certified Enterprise Architect > >>>>> > >>>>> > >>>> > >>>> > >>>> > >>> > >>> > >> > >> > >> > >> -- > >> 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 -~----------~----~----~----~------~----~------~--~---
