Amigos,
Alguien que pueda aclararme el uso de constructor en la definicion del metodo new()
Gracias de antemano
Saludos
méxico.sureste
Amigos,
Alguien que pueda aclararme el uso de constructor en la definicion del metodo new()
Gracias de antemano
Wlliam
Esto escribió Manu Expósito en un .doc sobre POO (19/10/2000)
Hay unos métodos especiales que conviene conocer y tener en cuenta ya que existen en casi todos los Sistemas Orientados al Objeto:
-los CONSTRUCTORES para hacer una reserva de memoria, en ellos se les dan valores por defecto a las DATAS, Variables de Instancia, Atributos ó Propiedades, como se quieran llamar, cada clase deberÃa tener al menos uno. Normalmente se le da el nombre New, Init, Start, etc... siempre devuelven Self o sea al propio objeto.
Y esto Rafa Carmona (28/02/2001)
1.- CONSTRUCTOR
METHOD New() CONSTRUCTOR
Y esto que hace ? Simplemente hace que este metodo se retorne a si mismo.
Es el famoso Self. Aunque tu pongas RETURN NIL , Objects lo cambiara a
Return Self.
Porque ? Porque si no , esto de la POO se viene para abajo, porque no
podras acceder a ningun sitio, si no tienes sitio donde acceder ![]()
Alguien por el Foro Pregunto que de donde sale Qself().
QSelf() lo monta el Prepo para que todos los metodos puedan acceder
al objecto, si no, como puedes acceder al objeto si no sabes donde esta ?
Pos Qself() te da el objeto de si mismo del cual estas.
Verdaderamente no se como funciona, pero por ahi van los tiros.
Saludos
CLASS miclase1
DATA uno
DATA dos
DATA tres
METHOD new() CONSTRUCTOR
METHOD alerta()
ENDCLASS
CLASS miclase2
DATA uno
DATA dos
DATA tres
METHOD new()
METHOD alerta()
ENDCLASS
FUNCTION main()
oCl1 := miclase1()
oCl1:new()
oCl1:alerta()
oCl2 := miclase2()
oCl2:new()
oCl2:alerta()
RETURN NILMETHOD new CLASS miclase1Creo que hay mejores programadores POO que nos pueden responder.
Ya que lo mio es muy limitado, trato de usar POO mas que nada para leer las clases de los fuentes FWH
En mi experiencia lo que puedo agregar es que:
Si en un .prg hay una clase no es necesario escribir (o sea ratifico lo que expresaste);
METHOD mimetodo() CLASS TMICLASS
puedo expresar
METHOD mimetodo()
...
return( self )
y lo que involuntariamente descrubrà es que si no pasas parámetros tambien podes escribir
METHOD mimetodo
...
return( self )
Lo otro es que si no pongo un New() CONSTRUCTOR, pongo cualquier método como primero y llamo a la clase, tampoco se queja.
obj:= TMICLASS():Mimetodo()
MarioG,
Precisamente por eso la inquietud, para que lo hagamos de la manera correcta.
Los tiempos en aplicaciones finales son muy importantes.
Gracias y seguimos investigando