From: Juan P. P. <jua...@es...> - 2003-12-29 15:13:18
|
Coincido totalmente, eso mismo dec=EDa yo cuando discut=EDamos en la =FAl= tima=20 clase de persistencia en tadp. Si realmente buscar por esos campos es=20 necesarios, pero no son visibles, hay algo mal en el modelo. Jorge Campos wrote: >No me convence mucho la idea de permitir realizar >queries por atributos privados (o protected... lease >no p=FAblicos). > >De hecho todo deber=EDa hacerse utilizando m=E9todos y no >los atributos. > >Violar la encapsulaci=F3n para persistir el objeto es >algo que "no afecta" el modelo y en cierto sentido no >viola la encapsulaci=F3n de una manera "visible" al >usuario. En cambio realizar un query >objeto.atributo_privado =3D=3D dodo es claramente una >violacion de la encapsulaci=F3n! y peor a=FAn es realizada >por el usuario (el mismo dice eso). > >Si existe el caso donde se quiera buscar por algo >privado es muy probable que ese algo no sea privado o >haya alg=FAn error en el modelo. > >Jorge > > >--- Nicolas Passerini <npa...@cu...> wrote: > =20 > >>En funci=F3n de esto, yo dec=EDa que el lenguaje no >>necesitar=EDa en principio diferenciar entre getters y >> >>atributos, ejemplo: si yo pido documento.pais busca >>primero un getPais() y si no lo encuentra busca el=20 >>atributo pais. >> >>El lenguaje se podr=EDa extender un poquito para >>bypasear ese comportamiento que ser=EDa el default, >>ahora no se=20 >>me ocurre nada mejor que agregarle un chirimbolo >>(algo como documento.#pais) que indicar=EDa que aunque >>exista=20 >>getPais() yo quiero al atributo. No me preocupa >>demasiado que quede muy lindo porque ser=EDa algo muy >>raro de=20 >>usar. De hecho creo que habr=EDa que discutir si est=E1 >>bueno ponerle ese feature. >> >>Tambi=E9n podr=EDa haber opciones para pedir un m=E9todo >>s=ED o s=ED, una simple es documento.getPais(). (No s=E9 >>si me=20 >>gusta mucho).=20 >> >>Otra que habr=EDa que pensar es si siempre se accede a >>los m=E9todos/atributos aunque sean privados o en >>alg=FAn=20 >>caso me interesa asegurarme de que le estoy pegando >>a la parte p=FAblica del objeto (=BFy protected?). Si es >>as=ED=20 >>habr=EDa que pensar extensiones para eso. >> >>Igual creo que lo importante es mantener la >>simplicidad del caso m=E1s com=FAn, que creo que es >>-pegarle a cualquier elemento sea p=FAblico o privado. >>-buscar primero el m=E9todo y si no est=E1 el atributo. >>Para ese caso usar=EDa 'documento.pais', si los dem=E1s >>son un poco m=E1s complicados no me joder=EDa. >> >>-----Original Message----- >>From: Hernan Liendo <her...@de...> >>To: ObjectBase SF >><obj...@li...> >>Date: Sat, 27 Dec 2003 23:05:56 -0300 >>Subject: [Objectbase-devel] Voluntario: Codificaci=F3n >>de funcionalidad de reflection >> >> =20 >> >>>Necesito que alguien evalue, dise=F1e y desarrolle >>> =20 >>> >>un m=F3dulo que me >> =20 >> >>>permita acceder a cierta propiedad de un objeto >>> =20 >>> >>dentro de una jerarquia >> =20 >> >>>de objetos sin que estos sean necesariamente >>> =20 >>> >>beans. >> =20 >> >>>Ejemplo: >>> >>>tengo este dominio de objetos >>> >>>Class: Cliente >>>+getDocumento:Document >>>+setDocument(Documento) >>>... >>> >>>Class: Documento >>>+getPais:Pais >>>+setPais(Pais) >>>... >>> >>>Class: Pais >>>+getNombre:String >>>+setNombre(String) >>>... >>> >>>Si yo tuviera una instancia de cliente y quisiera >>> =20 >>> >>conocer el nombre del >> =20 >> >>>pais al que corresponde su documento utilizando >>>common-beanutils yo podria tirar: >>> >>>String _nombrePais =3D >>> =20 >>> >>BeanUtils.getProperty("documento.pais.nombre", >> =20 >> >>>_cliente); >>> >>>Eso funciona perfecto si las clases son beans y es >>> =20 >>> >>lo que estoy usando >> =20 >> >>>con composite queries.=20 >>>Lo que se necesita que es esto funcione tambien en >>> =20 >>> >>objetos no-beans.=20 >> =20 >> >>>Deberiamos pensar en un lenguaje similar al >>> =20 >>> >>"documento.pais.nombre" que >> =20 >> >>>sea sencillo >>>de usar y que pueda expresar como llegar a una >>> =20 >>> >>propiedad de un objeto >> =20 >> >>>interno. >>> >>>La propiedad puede ser un atributo o un metodo.=20 >>> >>>Como regla general: todo lo que pueda inferir es >>> =20 >>> >>mejor, si no se puede >> =20 >> >>>inferir o toma un matiz "dificil de que >>>alguien entienda como funciona" mejor que no >>> =20 >>> >>infiera. Por ejemplo, se >> =20 >> >>>puede inferir si algo es metodo o atributo. >>> >>>Creo que esto esta bueno para desarrollar entre >>> =20 >>> >>una o dos personas.=20 >> =20 >> >>>El mecanismo seria ir tirando las ideas ANTES de >>> =20 >>> >>codificar. >> =20 >> >>>SaludOBs >>> >>> =20 >>> >> >> >> =20 >> >------------------------------------------------------- > =20 > >>This SF.net email is sponsored by: IBM Linux >>Tutorials. >>Become an expert in LINUX or just sharpen your >>skills. Sign up for IBM's >>Free Linux Tutorials. Learn everything from the >>bash shell to sys admin. >>Click now! >> >> =20 >> >http://ads.osdn.com/?ad_id=3D1278&alloc_id=3D3371&op=3Dclick > =20 > >>_______________________________________________ >>Objectbase-devel mailing list >>Obj...@li... >> >> =20 >> >https://lists.sourceforge.net/lists/listinfo/objectbase-devel > > >__________________________________ >Do you Yahoo!? >New Yahoo! Photos - easier uploading and sharing. >http://photos.yahoo.com/ > > >------------------------------------------------------- >This SF.net email is sponsored by: IBM Linux Tutorials. >Become an expert in LINUX or just sharpen your skills. Sign up for IBM'= s >Free Linux Tutorials. Learn everything from the bash shell to sys admin. >Click now! http://ads.osdn.com/?ad_id=3D1278&alloc_id=3D3371&op=3Dclick >_______________________________________________ >Objectbase-devel mailing list >Obj...@li... >https://lists.sourceforge.net/lists/listinfo/objectbase-devel > > =20 > |