METHOD
Declara un METHOD (método) para una clase en la cabecera de la clase
- Syntax
-
- METHOD <NombreMétodo>( [<params,...>] ) [ CONSTRUCTOR ]
- METHOD <NombreMétodo>( [<params,...>] ) INLINE <Code,...>
- METHOD <NombreMétodo>( [<params,...>] ) BLOCK <CodeBlock>
- METHOD <NombreMétodo>( [<params,...>] ) EXTERN <FuncName>([<args,...>])
- METHOD <NombreMétodo>( [<params,...>] ) SETGET
- METHOD <NombreMétodo>( [<params,...>] ) VIRTUAL
- METHOD <NombreMétodo>( [<param>] ) OPERATOR <op>
- METHOD <NombreMétodo>( [<params,...>] ) CLASS <ClassName>
- Arguments
-
- <NombreMétodo> Nombre del método a definir
- <params,...> Lista opcional de parametros
- Description
-
- Los Métodos son "funciones de clase" y hacen el trabajo de la clase. Todos los métodos pueden ser definidos en la cabecera entre los comandos CLASS y ENDCLASS. Si el cuerpo de un método no esta totalmente definido aqui, el cuerpo completo es escrito debajo del comando ENDCLASS usando esta sintaxis:
- METHOD <NombreMétodo>( [<params,...>] ) CLASS <NombreClase>
- Los Métodos pueden referenciar al objeto actual usando la palabra clave "Self:" ó su versión más corta "::"
- CLAUSULAS:
- CONSTRUCTOR Define un método especial de la clase: el método Constructor, usado para crear objetos. Este es usualmente el método New(). Los constructores siempre retornan el objeto New().
- INLINE Rápido y fácil de codificar, INLINE le permite definir el código para el método inmediatamente después de la definición de la clase. Cualquier método no declarado INLINE ó BLOCK debe ser completamente definido después del comando ENDCLASS. El <Codigo,...> siguiente a INLINE recibe un parametro de Self. Si se necesita recibir más parámetros, use la cláusula BLOCK en su lugar.
- BLOCK Use esta cláusula cuando desee declarar rápidos métodos 'inline' que necesiten parámetros. El primer parámetro a <CodeBlock> debe ser Self, como en:
- METHOD <NombreMétodo> BLOCK {|Self,<arg1>,<arg2>,...,<argN>|...}
- EXTERN Si una función externa hace lo que el método necesita, use esta cláusula para hacer una llamada optimizada a esa función directamente.
- SETGET Para datos calculados. El nombre del método puede ser manipulado como un elemento de DATA para establecer (Set) u obtener (Get) un valor.
- VIRTUAL Métodos que no hacen nada. Utiles para Clases de Base donde la Clase hija definirá el comportamiento del método, ó cuando Ud. esta creando y probando una Clase.
- OPERATOR Operador de Sobrecarga para las Clases. Vea el ejemplo ../Tests/TestOp.prg para detalles
- CLASS <ClassName> Use esta sintaxis solamente para definir un método completo después del comando ENDCLASS.
Examples
CLASS TWindow
DATA hWnd, nOldProc
METHOD New( ) CONSTRUCTOR
METHOD Capture() INLINE SetCapture( ::hWnd )
METHOD End() BLOCK { | Self, lEnd | If( lEnd := ::lValid(),;
::PostMsg( WM_CLOSE ),), lEnd }
METHOD EraseBkGnd( hDC )
METHOD cTitle( cNewTitle ) SETGET
METHOD Close() VIRTUAL
ENDCLASS
METHOD New( ) CLASS TWindow
local nVar, cStr
... ...
... ...
RETURN Self
Tests
TestOp.prg
- Status
- Ready
- Compliance
-
- METHOD es una extensión de Harbour.
- Platforms
-
- Todas
- See Also