Hola amigos:
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.
Y luego creo un programador con
La salida que obtengo es :
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.
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.
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 NilY luego creo un programador con
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.
Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64