metodos y atributos de clase

06/07/2004 - 03:30 por Carlos Joaniquet Tamburini | Informe spam
Hola. Como puedo crear en foxpro métodos y atributos de clase, es decir,
propiedades de una clase concreta que pueda llamar sin haber instanciado un
objeto de esa clase, algo fundamental para programar con clases... No
consigo averiguarlo. Se que en Java se hace mediante la clausula "static".
En caso de que no exista clausula similar o forma de simularlo, como
hacerlo?
Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Hugo M. Ranea
06/07/2004 - 17:28 | Informe spam
Carlos Joaniquet Tamburini wrote:

Hola. Como puedo crear en foxpro métodos y atributos de clase, es decir,
propiedades de una clase concreta que pueda llamar sin haber instanciado un
objeto de esa clase, algo fundamental para programar con clases... No
consigo averiguarlo. Se que en Java se hace mediante la clausula "static".
En caso de que no exista clausula similar o forma de simularlo, como
hacerlo?
Muchas gracias.






En VFP no existe el concepto de Metodos o Propiedades de clase.
Respuesta Responder a este mensaje
#2 Jorge Vásquez
10/07/2004 - 21:36 | Informe spam
disculpa mi ignorancia, pero ¿ porque es fundamental esto de no instanciar
las clases?, yo creía que en POO todo se instanciaba, en todo caso, yo
creía que una propiedad instanciada es un atributo y que un metodo es una
funcion o procedimiento instanciado en fox. En todo caso por favor
aclarame la duda. Gracias

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#3 Hugo M Ranea
15/07/2004 - 04:27 | Informe spam
Si alguien sabe como hacerlo, ese alguién no soy yo :)

No te olvides que Foxpro no es un lenguaje orientado a objetos "puro"
(bueno, de hecho Java, o C# o C++ tampoco lo son) sino es un mix de
programacion orientada a eventos, POO y programación estructurada. En
particular uno puede hacer todo un programa sin siquiera crear un objeto.

Como ejemplo de la falta de método de clase, fijate que si hubiera
métodos de clase, la funcion CreateObject (y similares) no deberían
existir, ya que en lugar de:

loForm = CreateObject('Form')

la forma "OO" sería

loForm = Form.New() && O algo así

Pero, en todo caso, hay muchas cosas que no deberían existir si OO,
entre ellas el "scope" de las variables, ya que todas deberían ser
"locales". Sin embargo, quizá ahí en ese defecto esté también la
solución a tu problema, ya que, por ejemplo podrías tener una clase
"instanciadora" de otra clase, y esta clase ser la que actúa como
reemplazo de los métodos y propiedades de clase (o estáticos)

por ejemplo si queremos tener una propiedad de clase que lleve una
cuenta de cuantos forms han sido creados, podríamos hacer algo así cómo:

Public poForms && Si, podría ser una propiedad de _Screen, pero, ya me
referí a esto en otro mensaje aquí mismo

poForms = CreateObject('FormLauncher')

define class FormLauncher as Custom
protected nForms = 0
public procedure New()
this.nForms = this.nForms + 1
return CreateObject('Form')
endproc
enddefine


Ya sé que no es lo mismo, simplemente estaba pensando en voz alta tu
propuesta :)


Contesto aquí en los foros ya que no deberías mandar mensajes privados,
de hecho nunca los contesto

From: Carlos Joaniquet Tamburini [mailto:]
Sent: July 6, 2004 1:45 PM
To: Hugo M. Ranea
Subject: Re: metodos y atributos de clase


Bien, pero como se pueden simular. Por ejemplo, Java no tiene herencia
múltiple, sin embargo la puedo simular implementando una interficie tanto en
la clase de la que simulo la herencia múltiple como en la clase que hereda
directamente, instanciando en esta última un objeto del tipo de la que
implemento y delegando sus métodos. El resultado es lo mismo¡¡¡¡... o
mejor¡¡¡¡¡ ya que no crea el problema de la herencia repetida.
Pues bien, en Foxpro seguro que habrá una técnica para crear métodos y
atributos estáticos, propios de la clase... y accesibles sin necesidad de
instanciar un objeto Seguro que alguien sabrá como hacerlo.
Un saludo


From: "Hugo M. Ranea"
Newsgroups: microsoft.public.es.vfoxpro.lenguaje
Sent: Tuesday, July 06, 2004 5:28 PM
Subject: Re: metodos y atributos de clase


Carlos Joaniquet Tamburini wrote:

>Hola. Como puedo crear en foxpro métodos y atributos de clase, es decir,
>propiedades de una clase concreta que pueda llamar sin haber instanciado


un
>objeto de esa clase, algo fundamental para programar con clases... No
>consigo averiguarlo. Se que en Java se hace mediante la clausula


"static".
>En caso de que no exista clausula similar o forma de simularlo, como
>hacerlo?
>Muchas gracias.
>
>
>
>
En VFP no existe el concepto de Metodos o Propiedades de clase.





Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.717 / Virus Database: 473 - Release Date: 08/07/2004


Carlos Joaniquet Tamburini wrote:
Hola. Como puedo crear en foxpro métodos y atributos de clase, es decir,
propiedades de una clase concreta que pueda llamar sin haber instanciado un
objeto de esa clase, algo fundamental para programar con clases... No
consigo averiguarlo. Se que en Java se hace mediante la clausula "static".
En caso de que no exista clausula similar o forma de simularlo, como
hacerlo?
Muchas gracias.



From: Carlos Joaniquet Tamburini [mailto:]
Sent: July 6, 2004 1:48 PM
To: Hugo M. Ranea
Subject: Re: metodos y atributos de clase


Perdona, Hugo. Qué quieres decir que no existe en foxpro el concepto??
Atributos y métodos de clase no es un concepto de un lenguaje


concreto, >sino
que es parte de la programación orientada a objetos Siempre ha de
existir¡¡¡¡
Gracias.
Respuesta Responder a este mensaje
#4 Hugo M. Ranea
15/07/2004 - 23:57 | Informe spam
Recien me doy cuenta que mi ejemplo quedó incompleto...

Public poForms && Si, podría ser una propiedad de _Screen, pero,
ya me referí a esto en otro mensaje aquí mismo

poForms = CreateObject('FormLauncher')
loForm = poForms.New()
loForm.Show(1)
loForms.Release(loForm)

define class FormLauncher as Custom
protected nForms = 0
public procedure New()
this.nForms = this.nForms + 1
return CreateObject('Form')
endproc
public procedure Release(toForm)
local llReturn
try
toForm.Release()
this.nForms = this.nForms - 1
llReturn = .T.
catch
llReturn = .F.
endtry
return llReturn
endproc
enddefine

Por supuesto este ejemplo es sólo para mostrarte la idea, no funcionaría
porque, por ejemplo, dependería de de que los forms se comporten
amistosamente, y siempre llamen a la funcion Release the la clase
"statica" y no directamente al propio, repito, es sólo una idea que
estaba pensando en voz alta
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida