Pues eso probando a construir clases sencillitas , me pasa algo que no entiendo , en el codigo de abajo cuando doy
de alta un nuevo programador me ejecutar automaticamente la funcion contenida NivelAlcanzado(), sin embargo si la llamo
expresamente obtengo nil, que hago mal?
codigo de las clases.
- Code: Select all Expand view
CLASS TPersona
DATA cName, nEdad
METHOD NEW(nombre, edad) CONSTRUCTOR
ENDCLASS
METHOD NEW(nombre, edad) CLASS TPersona
::cName:= nombre
::nEdad:= edad
RETURN Self
CLASS TProgramador FROM TPersona
DATA cLenguaje,nivel
METHOD New(nombre, edad, Lenguaje, nivel) CONSTRUCTOR
METHOD NivelAlcanzado()
ENDCLASS
METHOD New(nombre, edad, Lenguaje, nivel) CLASS TProgramador
::cLenguaje := Lenguaje
::nivel := nivel
::Super:New(nombre, edad)
Return Self
METHOD NivelAlcanzado() CLASS TProgramador
SWITCH ::nivel
CASE 9
? "Programador experto"
Exit
CASE 10
? "Programador Nivel Dios"
Exit
OTHERWISE
? "Programador en formacion"
ENDSWITCH
Return Nil
Y luego creo un programador con
- Code: Select all Expand view
LOCAL oProgram1:= TProgramador():New("Linus Torvalds",51,"Lenguaje C", 10)
? oProgram1:cName, oProgram1:NivelAlcanzado()
La salida que obtengo es :
Programador nivel Dios
Linus Torvalds, Nil
o sea parece que la funcion se ejecuta al crear el objeto. Y luego NIL ¿Porque ?
No lo entiendo, no me llevo bien con las clases.
Saludos
Jose.