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