Author | Topic: Xbp de usuario: METODOS | |
---|---|---|
Jos Luis Otermin [Alaska Software] | Xbp de usuario: METODOS on Wed, 14 Dec 2011 12:06:26 -0300 Hola a Tod@s. Recientemente un colega hizo una consulta por correo y me pareci que el tema amerita una discusin pblica. Se trata de los mtodos a) ACCESS ASSIGN METHOD b) INLINE ASSIGN METHOD c) INLINE ACCESS METHOD En el caso a) se trata de un mtodo que permite tanto la consulta como la asignacin de un valor cuyo nombre permanece protegido en el interior del objeto. Por ejemplo: CLASS MiClase EXPORTED: VAR Nombre VAR Telefono VAR Cliente ACCESS ASSIGN METHOD Nombre ACCESS METHOD Telefono ASSIGN METHOD Cliente ... ENDCLASS ACCESS ASSIGN METHOD MiClase:Nombre( Nombre ) IF ISCHARACTER( Nombre ) ::Nombre := Nombre ENDIF RETURN ::Nombre ACCESS METHOD MiClase:Telefono() RETURN ::Telefono ASSIGN METHOD Cliente( Cliente ) IF ISLOGICAL( Cliente ) ::Cliente := Cliente ENDIF RETURN ::Cliente Casos de uso: oMiClase:Nombre := "Manola" ? oMiClase:Nombre --> Manola oMiClase:Nombre := 555 ? oMiClase:Nombre --> Manola oMiClase:Nombre += " Prez" ? oMiClase:Nombre --> Manola Prez Ntese que ::Telefono debe ser asignado desde algn mtodo del objeto pero NO desde oMiClase:Telefono() pues el dato es de SOLO LECTURA. Para el caso de ::Cliente, puede modificarse el atributo desde el mtodo nicamente. Por supuesto, puede accederse al dato. ACCESS ASSIGN es el caso ms completo de los tres que pueden implementarse. NOTA: La variable de acceso (Nombre) debe tener LA MISMA visibilidad que el mtodo ACCESS ASSIGN. b) Los atributos relacionados con mtodos ASSIGN reciben sus valores a travs del mtodo nicamente. c) Los mtodos ACCESS son especialmente tiles para permitir la lectura de datos almacenados en atributos de un objeto, permite su uso como si de un atributo mismo se tratara pero con proteccin contra escritura. Espero haber sido claro. Saludos Jose Luis Otermin Alaska Software | |
Osvaldo Ramirez | Re: Xbp de usuario: METODOS on Wed, 14 Dec 2011 13:32:18 -0700 Estimado che, Hace buen rato que no te leiamos ... Excelente aportacion para los burros como yo!!! Saludos y un abrazo Osvaldo Ramirez On 12/14/2011 8:06 AM, José Luis Otermin [Alaska Software] wrote: > Hola a Tod@s. > > Recientemente un colega hizo una consulta por correo y me pareció que el > tema amerita una discusión pública. > > Se trata de los métodos > > a) ACCESS ASSIGN METHOD > > b) INLINE ASSIGN METHOD > > c) INLINE ACCESS METHOD > > En el caso a) se trata de un método que permite tanto la consulta como la > asignación de un valor cuyo nombre permanece protegido en el interior del > objeto. > > Por ejemplo: > > CLASS MiClase > EXPORTED: > VAR Nombre > VAR Telefono > VAR Cliente > ACCESS ASSIGN METHOD Nombre > ACCESS METHOD Telefono > ASSIGN METHOD Cliente > ... > ENDCLASS > > ACCESS ASSIGN METHOD MiClase:Nombre( Nombre ) > IF ISCHARACTER( Nombre ) > ::Nombre := Nombre > ENDIF > RETURN ::Nombre > > ACCESS METHOD MiClase:Telefono() > RETURN ::Telefono > > ASSIGN METHOD Cliente( Cliente ) > IF ISLOGICAL( Cliente ) > ::Cliente := Cliente > ENDIF > RETURN ::Cliente > > Casos de uso: > > oMiClase:Nombre := "Manola" > ? oMiClase:Nombre --> Manola > > oMiClase:Nombre := 555 > ? oMiClase:Nombre --> Manola > > oMiClase:Nombre += " Pérez" > ? oMiClase:Nombre --> Manola Pérez > > Nótese que ::Telefono debe ser asignado desde algún método del objeto pero > NO desde oMiClase:Telefono() pues el dato es de SOLO LECTURA. > > Para el caso de ::Cliente, puede modificarse el atributo desde el método > únicamente. Por supuesto, puede accederse al dato. > > ACCESS ASSIGN es el caso más completo de los tres que pueden implementarse. > > NOTA: La variable de acceso (Nombre) debe tener LA MISMA visibilidad que el > método ACCESS ASSIGN. > > b) Los atributos relacionados con métodos ASSIGN reciben sus valores a > través del método únicamente. > > c) Los métodos ACCESS son especialmente útiles para permitir la lectura de > datos almacenados en atributos de un objeto, permite su uso como si de un > atributo mismo se tratara pero con protección contra escritura. > > Espero haber sido claro. > > Saludos > > Jose Luis Otermin > Alaska Software > > > | |
Hector Pezoa | Re: Xbp de usuario: METODOS on Wed, 14 Dec 2011 20:23:36 -0300 Pepe Luis Se le agradece la respuesta , veo que hoy amanecio iluminado. Se capta perfectamente su explicacion, hacian faltas sus pildoritas si que ojala, lo haga en forma mas continua, muchos se lo agradeceran. La proxima si puede explicar las bondades de xbpget y las diferencias con Sle , etc etc Como puedes apreciar estimado amigo Osvaldo la Manuela nos persigue Saluda Hector "Osvaldo Ramirez" <ramirezosvaldo@prodigy.net.mx> escribi en el mensaje news:6736f35e$7db091d0$123549@news.alaska-software.com... > > Estimado che, > > Hace buen rato que no te leiamos ... > > > Excelente aportacion para los burros como yo!!! > > > > Saludos y un abrazo > Osvaldo Ramirez > > > On 12/14/2011 8:06 AM, Jos Luis Otermin [Alaska Software] wrote: >> Hola a Tod@s. >> >> Recientemente un colega hizo una consulta por correo y me pareci que el >> tema amerita una discusin pblica. >> >> Se trata de los mtodos >> >> a) ACCESS ASSIGN METHOD >> >> b) INLINE ASSIGN METHOD >> >> c) INLINE ACCESS METHOD >> >> En el caso a) se trata de un mtodo que permite tanto la consulta como la >> asignacin de un valor cuyo nombre permanece protegido en el interior del >> objeto. >> >> Por ejemplo: >> >> CLASS MiClase >> EXPORTED: >> VAR Nombre >> VAR Telefono >> VAR Cliente >> ACCESS ASSIGN METHOD Nombre >> ACCESS METHOD Telefono >> ASSIGN METHOD Cliente >> ... >> ENDCLASS >> >> ACCESS ASSIGN METHOD MiClase:Nombre( Nombre ) >> IF ISCHARACTER( Nombre ) >> ::Nombre := Nombre >> ENDIF >> RETURN ::Nombre >> >> ACCESS METHOD MiClase:Telefono() >> RETURN ::Telefono >> >> ASSIGN METHOD Cliente( Cliente ) >> IF ISLOGICAL( Cliente ) >> ::Cliente := Cliente >> ENDIF >> RETURN ::Cliente >> >> Casos de uso: >> >> oMiClase:Nombre := "Manola" >> ? oMiClase:Nombre --> Manola >> >> oMiClase:Nombre := 555 >> ? oMiClase:Nombre --> Manola >> >> oMiClase:Nombre += " Prez" >> ? oMiClase:Nombre --> Manola Prez >> >> Ntese que ::Telefono debe ser asignado desde algn mtodo del objeto >> pero >> NO desde oMiClase:Telefono() pues el dato es de SOLO LECTURA. >> >> Para el caso de ::Cliente, puede modificarse el atributo desde el mtodo >> nicamente. Por supuesto, puede accederse al dato. >> >> ACCESS ASSIGN es el caso ms completo de los tres que pueden >> implementarse. >> >> NOTA: La variable de acceso (Nombre) debe tener LA MISMA visibilidad que >> el >> mtodo ACCESS ASSIGN. >> >> b) Los atributos relacionados con mtodos ASSIGN reciben sus valores a >> travs del mtodo nicamente. >> >> c) Los mtodos ACCESS son especialmente tiles para permitir la lectura >> de >> datos almacenados en atributos de un objeto, permite su uso como si de un >> atributo mismo se tratara pero con proteccin contra escritura. >> >> Espero haber sido claro. >> >> Saludos >> >> Jose Luis Otermin >> Alaska Software >> >> >> > | |
Pablo Botella | Re: Xbp de usuario: METODOS on Thu, 15 Dec 2011 21:16:32 +0100 Hola Jose Luis, Como dicen los amigos Hector y Osvaldo ya teniamos ganas de verte por aqui que nos tenías abandonados Un poco más de lo mismo: CLASS MiClase EXPORTED: VAR Nombre -------------------------------------------- INLINE ASSIGN METHOD PutNombre(v) VAR Nombre ::Nombre := Var2Char(v) return NIL este valor siempre se descarta asi que ponemos NIL -------------------------------------------- INLINE ACCESS METHOD GetNombre(lOriginal) VAR Nombre if Empty( lOriginal) return Upper( Var2Char(::Nombre) ) end return ::Nombre -------------------------------------------- ENDCLASS -------------------------------------------------------- proc main local o := MiClase():New() o:Nombre := "Pepito" ? o:nombre -> PEPITO ? o:GetNombre() -> PEPITO ? o:GetNombre(.T.) -> Pepito inkey(0) return 1) En este caso la variable Nombre solo es accesible directamente desde los métodos PutNombre y GetNombre que son los encargados de leer y escribir esta variable. tanto desde fuera de la clase como desde el resto de métodos cuando tratemos de acceder a la variable ::Nombre estaremos llamando a estos 2 métodos uno para asignar el valor y el otro para recogerlo. 2) Como en el método de acceso estamos devolviendo el valor transformado, le hemos agregado un parametro extra al método GetNombre() de modo que cuando se llame automaticamente como resultado del acceso a la variable Nombre nos devuelva el valor transformado, mientras que nos dejamos una puerta trasera abierta para cuando queramos acceder al valor tal y como está almacenado en la variable. Otro día más Saludos, Pablo PS: Convence al gran oso polar para que te lleve de paseo a Hannover, que un DevCon sin Che es mucho más aburrido. | |
Osvaldo Ramirez | Re: Xbp de usuario: METODOS on Fri, 16 Dec 2011 16:56:17 -0700 Como siempre, gracias a ambos Un devcon sin el che, es --- Un Mundial sin Argentina? Aquien vamos a ganarle, los mexicanos ? Mandale al Oso unas buenas focas, para q te lleveo de paseo! Saludos amigo Osvaldo Ramirez On 12/15/2011 1:16 PM, Pablo Botella wrote: > Hola Jose Luis, > > Como dicen los amigos Hector y Osvaldo ya teniamos ganas de verte por aqui que nos tenías abandonados > > Un poco más de lo mismo: > > CLASS MiClase > EXPORTED: > VAR Nombre > -------------------------------------------- > INLINE ASSIGN METHOD PutNombre(v) VAR Nombre > ::Nombre := Var2Char(v) > return NIL este valor siempre se descarta asi que ponemos NIL > -------------------------------------------- > INLINE ACCESS METHOD GetNombre(lOriginal) VAR Nombre > if Empty( lOriginal) > return Upper( Var2Char(::Nombre) ) > end > return ::Nombre > -------------------------------------------- > ENDCLASS > -------------------------------------------------------- > proc main > local o := MiClase():New() > o:Nombre := "Pepito" > ? o:nombre -> PEPITO > ? o:GetNombre() -> PEPITO > ? o:GetNombre(.T.) -> Pepito > inkey(0) > return > > 1) En este caso la variable Nombre solo es accesible directamente desde los métodos PutNombre y GetNombre que son los encargados de leer y escribir esta variable. tanto desde fuera de la clase como desde el resto de métodos cuando tratemos de acceder a la variable ::Nombre estaremos llamando a estos 2 métodos uno para asignar el valor y el otro para recogerlo. > > 2) Como en el método de acceso estamos devolviendo el valor transformado, le hemos agregado un parametro extra al método GetNombre() > de modo que cuando se llame automaticamente como resultado del acceso a la variable Nombre nos devuelva el valor transformado, mientras que nos dejamos una puerta trasera abierta para cuando queramos acceder al valor tal y como está almacenado en la variable. > > Otro día más > > Saludos, > Pablo > > PS: Convence al gran oso polar para que te lleve de paseo a Hannover, que un DevCon sin Che es mucho más aburrido. > > > > > > > > > | |
Hector Pezoa | Re: Xbp de usuario: METODOS on Fri, 16 Dec 2011 22:31:00 -0300 Si Osvaldo que vaya a Hannover Revue, unsere kche: so vielseitig vie unser programm und vieles mehr ! Elli's Elliot "Osvaldo Ramirez" <ramirezosvaldo@prodigy.net.mx> escribi en el mensaje news:14357241$52625c06$18ef20@news.alaska-software.com... > > Como siempre, gracias a ambos > > > Un devcon sin el che, es --- Un Mundial sin Argentina? > > Aquien vamos a ganarle, los mexicanos ? > > Mandale al Oso unas buenas focas, para q te lleveo de paseo! > > Saludos amigo > Osvaldo Ramirez > > On 12/15/2011 1:16 PM, Pablo Botella wrote: >> Hola Jose Luis, >> >> Como dicen los amigos Hector y Osvaldo ya teniamos ganas de verte por >> aqui que nos tenas abandonados >> >> Un poco ms de lo mismo: >> >> CLASS MiClase >> EXPORTED: >> VAR Nombre >> -------------------------------------------- >> INLINE ASSIGN METHOD PutNombre(v) VAR Nombre >> ::Nombre := Var2Char(v) >> return NIL este valor siempre se descarta asi que ponemos NIL >> -------------------------------------------- >> INLINE ACCESS METHOD GetNombre(lOriginal) VAR Nombre >> if Empty( lOriginal) >> return Upper( Var2Char(::Nombre) ) >> end >> return ::Nombre >> -------------------------------------------- >> ENDCLASS >> -------------------------------------------------------- >> proc main >> local o := MiClase():New() >> o:Nombre := "Pepito" >> ? o:nombre -> PEPITO >> ? o:GetNombre() -> PEPITO >> ? o:GetNombre(.T.) -> Pepito >> inkey(0) >> return >> >> 1) En este caso la variable Nombre solo es accesible directamente desde >> los mtodos PutNombre y GetNombre que son los encargados de leer y >> escribir esta variable. tanto desde fuera de la clase como desde el resto >> de mtodos cuando tratemos de acceder a la variable ::Nombre estaremos >> llamando a estos 2 mtodos uno para asignar el valor y el otro para >> recogerlo. >> >> 2) Como en el mtodo de acceso estamos devolviendo el valor transformado, >> le hemos agregado un parametro extra al mtodo GetNombre() >> de modo que cuando se llame automaticamente como resultado del acceso a >> la variable Nombre nos devuelva el valor transformado, mientras que nos >> dejamos una puerta trasera abierta para cuando queramos acceder al valor >> tal y como est almacenado en la variable. >> >> Otro da ms >> >> Saludos, >> Pablo >> >> PS: Convence al gran oso polar para que te lleve de paseo a Hannover, que >> un DevCon sin Che es mucho ms aburrido. >> >> >> >> >> >> >> >> >> > | |
Jorge L | Re: Xbp de usuario: METODOS on Sat, 17 Dec 2011 08:30:58 -0300 Osvaldo, siendo argentino te pido que hablemos de devcon , ya que no estamos acostumbrando a ver todo tipo de torneo sin argentina al menos hasta que pase esta generación de jugadores super-estrellas "Osvaldo Ramirez" escribió en el mensaje de noticias:14357241$52625c06$18ef20@news.alaska-software.com... Como siempre, gracias a ambos Un devcon sin el che, es --- Un Mundial sin Argentina? Aquien vamos a ganarle, los mexicanos ? Mandale al Oso unas buenas focas, para q te lleveo de paseo! Saludos amigo Osvaldo Ramirez On 12/15/2011 1:16 PM, Pablo Botella wrote: > Hola Jose Luis, > > Como dicen los amigos Hector y Osvaldo ya teniamos ganas de verte por aqui > que nos tenías abandonados > > Un poco más de lo mismo: > > CLASS MiClase > EXPORTED: > VAR Nombre > -------------------------------------------- > INLINE ASSIGN METHOD PutNombre(v) VAR Nombre > ::Nombre := Var2Char(v) > return NIL este valor siempre se descarta asi que ponemos NIL > -------------------------------------------- > INLINE ACCESS METHOD GetNombre(lOriginal) VAR Nombre > if Empty( lOriginal) > return Upper( Var2Char(::Nombre) ) > end > return ::Nombre > -------------------------------------------- > ENDCLASS > -------------------------------------------------------- > proc main > local o := MiClase():New() > o:Nombre := "Pepito" > ? o:nombre -> PEPITO > ? o:GetNombre() -> PEPITO > ? o:GetNombre(.T.) -> Pepito > inkey(0) > return > > 1) En este caso la variable Nombre solo es accesible directamente desde > los métodos PutNombre y GetNombre que son los encargados de leer y > escribir esta variable. tanto desde fuera de la clase como desde el resto > de métodos cuando tratemos de acceder a la variable ::Nombre estaremos > llamando a estos 2 métodos uno para asignar el valor y el otro para > recogerlo. > > 2) Como en el método de acceso estamos devolviendo el valor transformado, > le hemos agregado un parametro extra al método GetNombre() > de modo que cuando se llame automaticamente como resultado del acceso a la > variable Nombre nos devuelva el valor transformado, mientras que nos > dejamos una puerta trasera abierta para cuando queramos acceder al valor > tal y como está almacenado en la variable. > > Otro día más > > Saludos, > Pablo > > PS: Convence al gran oso polar para que te lleve de paseo a Hannover, que > un DevCon sin Che es mucho más aburrido. > > > > > > > > > | |
Jos Luis Otermin [Alaska Software] | Re: Xbp de usuario: METODOS on Sat, 17 Dec 2011 10:06:31 -0300 Hola mi cuate, Me encantara ir a DevCon pero estoy sobrepasado con mis tareas y proyectos. Ir para el norte pero en las vacas de Julio. Es probable que en 2013 pueda llevar a mis hijas conmigo Entretanto, disfruto el ayudar a los colegas programadores y, cranme, es muy gratificante dar algo que los dems consideren de utilidad. Si los colegas que nos leen se decidieran a participar, compartiran - estoy seguro - esa misma sensacin. Mientras tanto, hago el sano ejercicio que se me recomend cuando se inici el foro: No meterme hasta que sea necesario. Es difcil vencer la tentacin pero se puede Con alegra veo que nuestro colega Jimmy (Auge Ohr) [Ojo Odo - en lengua de Castilla] participa del foro con entusiasmo. Willkommen und Schnen Dank, Jimmy! Bienvenido y muchas gracias, Jimmy! Un abrazo a todos los colegas y amigos. Saludos Jose Luis Otermin Alaska Software "Osvaldo Ramirez" <ramirezosvaldo@prodigy.net.mx> escribi en el mensaje news:14357241$52625c06$18ef20@news.alaska-software.com... > > Como siempre, gracias a ambos > > > Un devcon sin el che, es --- Un Mundial sin Argentina? > > Aquien vamos a ganarle, los mexicanos ? > > Mandale al Oso unas buenas focas, para q te lleveo de paseo! > > Saludos amigo > Osvaldo Ramirez > > On 12/15/2011 1:16 PM, Pablo Botella wrote: >> Hola Jose Luis, >> >> Como dicen los amigos Hector y Osvaldo ya teniamos ganas de verte por >> aqui que nos tenas abandonados >> >> Un poco ms de lo mismo: >> >> CLASS MiClase >> EXPORTED: >> VAR Nombre >> -------------------------------------------- >> INLINE ASSIGN METHOD PutNombre(v) VAR Nombre >> ::Nombre := Var2Char(v) >> return NIL este valor siempre se descarta asi que ponemos NIL >> -------------------------------------------- >> INLINE ACCESS METHOD GetNombre(lOriginal) VAR Nombre >> if Empty( lOriginal) >> return Upper( Var2Char(::Nombre) ) >> end >> return ::Nombre >> -------------------------------------------- >> ENDCLASS >> -------------------------------------------------------- >> proc main >> local o := MiClase():New() >> o:Nombre := "Pepito" >> ? o:nombre -> PEPITO >> ? o:GetNombre() -> PEPITO >> ? o:GetNombre(.T.) -> Pepito >> inkey(0) >> return >> >> 1) En este caso la variable Nombre solo es accesible directamente desde >> los mtodos PutNombre y GetNombre que son los encargados de leer y >> escribir esta variable. tanto desde fuera de la clase como desde el resto >> de mtodos cuando tratemos de acceder a la variable ::Nombre estaremos >> llamando a estos 2 mtodos uno para asignar el valor y el otro para >> recogerlo. >> >> 2) Como en el mtodo de acceso estamos devolviendo el valor transformado, >> le hemos agregado un parametro extra al mtodo GetNombre() >> de modo que cuando se llame automaticamente como resultado del acceso a >> la variable Nombre nos devuelva el valor transformado, mientras que nos >> dejamos una puerta trasera abierta para cuando queramos acceder al valor >> tal y como est almacenado en la variable. >> >> Otro da ms >> >> Saludos, >> Pablo >> >> PS: Convence al gran oso polar para que te lleve de paseo a Hannover, que >> un DevCon sin Che es mucho ms aburrido. >> >> >> >> >> >> >> >> >> > | |
AUGE_ OHR | Re: Xbp de usuario: METODOS on Tue, 20 Dec 2011 01:50:08 +0100 hi, > Con alegra veo que nuestro colega Jimmy (Auge Ohr) [Ojo Odo - en lengua > de Castilla] participa del foro con entusiasmo. > > Willkommen und Schnen Dank, Jimmy! > Bienvenido y muchas gracias, Jimmy! i try to help in News Forum but my spanish is very bad so i have to use http://translate.google.de/ for Xbase++ User i also made PDR_LFU Ownerdraw and Phil Ide LFU, public.xbase++.bugreport, 09.12.2011 the "lates" Version should work fine and you can "download" PDR from Alaska Knowledge Base into local DBF and "search" in DBF for workaround if you have a Problem. i also include AskKB.PRG as Source to show how to use KBonline.LIB / DLL to "fill" PDRS.DBF in a loop. please read README.TXT before, thx greetings by OHR Jimmy |