Lección 2: Definición de Clases, Atributos, Métodos y Eventos.
1.- Clases locales y globales.
Las clases globales se definen en el generador de clases, a través de la transacción SE24 en el ABAP Workbench.
Estas clases son almacenadas en el Class Pools en la librería de clases en el repositorio R/3. Todos los programas ABAP en un sistema R/3 pueden acceder a las clases globales.
Las clases locales se definen en un programa ABAP y sólo pueden ser invocadas desde el programa en el que se han definido.
Cuando se usa una clase en un programa ABAP el sistema busca primero una clase local con el nombre especificado, si no encuentra ninguna entonces busca una clase global.
2.- Definicion de clases locales.
Las clases locales son el conjunto de sentencias que están entre las sentencias CLASS...ENDCLASS.
La parte clarativa o definición de una clase esta comprendida entre las sentencias:
CLASS <class> DEFINITION.
...
ENDCLASS.
3.- Estructura y Componentes de un Clase.
La estructura de una clase se define principalmente basándose en:
- Una clase contiene componentes.
- Cada componente se asigna a una sección de visibilidad (público, protegido o privado).
- Las clases implementan métodos.
En los objetos ABAP, las clases pueden definir los siguientes componentes:
- Atributos.
- Métodos.
- Eventos.
4.- Atributos.
Son los campos de datos internos de una clase y pueden tener cualquier tipo de datos ABAP.
Hay 2 tipos de atributos:
- Dependientes de instancia - Donde el contenido de los atributos es específico de cada objeto. Se declaran usando la sentencia DATA.
- Independientes de instancia o estáticos - Donde el contenido de los atributos define el estado de la clase y es válido para todas las instancias de la clase. Se declaran usando la sentencia CLASS-DATA.
5.- Métodos.
Son procedimientos internos de una clase que definen el comportamiento de un objeto.
Los métodos pueden acceder a todos los atributos de una clase.
Los métodos poseen también una interface con parámetros que les permite recibir valores cuando son invocados y devolver valores después de la llamada. Los atributos privados de una clase sólo pueden ser cambiados por métodos de la misma clase.
Un método se define en la parte declarativa de la clase y se implementa en la parte de implementación usando las senetencias:
METHOD <meth>.
...
ENDMETHOD.
Los métodos se llaman con la sentencia CALL METHOD.
Hay 3 tipos de métodos:
- Dependientes de instancia - Se declaran con la sentencia METHODS y pueden acceder a todos los atributos de una clase y desencadenar todos los eventos de una clase.
- Independientes de instancia o estáticos - Se declaran con la sentencia CLASS-METHODS. Solo pueden acceder a los atributos estáticos y desencadenar eventos estáticos.
- Especiales - Hay 2 métodos especiales llamados CONSTRUCTOR y CLASS_CONSTRUCTOR que son automáticamente llamados cuando se crea un objeto (CONSTRUCTOR) o cuando se accede por primera vez a los componentes de la clase (CLASS_CONSTRUCTOR).
6.- Eventos.
Son acontecimientos o sucesos que utilizan los objetos o las clases para desencadenar la ejecución de un método en otro objeto o clase.
El manejador de eventos determina los eventos a los cuales tiene que reaccionar.
Los eventos de una clase pueden ser desencadenados en los métodos de la misma clase usando la senetencia RAISE EVENT.
Un método de la misma o diferente clase, se declara como método manejador de eventos con la adición FOR EVENT OF.
El vinculo de unión entre el disparador y el manejador (Trigger y Handler) es establecido dinámicamente en el programa usando la sentencia SET HANDLER.
Hay 2 tipos de eventos:
- Dependientes de instancia - Se declaran con la sentencia EVENTS y solo pueden ser desencadenados en un método dependiente de la instancia.
- Independiente de instancia o estáticos - Se declaran con la sentencia CLASS-EVENTS y todos los métodos pueden desencadenar eventos estáticos. Estos son los únicos que pueden ser desencadenados con un método estático.
7.- Tipos y Constantes.
Se pueden definir tipos de datos ABAP dentro de una clase con las sentencia TYPES. Los tipos de datos existen solo una vez para todos los objetos de la clase.
Las constantes son un tipo especial de atributos estáticos y su valor se fija cuando son declarados y no puede ser cambiado. Se declaran con la sentencia CONSTANTS. Las constante existen solo una vez para todos los objetos de la clase.
8.- Visibilidad de una clase.
La parte declarativa o definición de una clase se divide en tres áreas de distinta visibilidad:
CLASS <class> DEFINITION.
PUBLIC SECTION.
...
PROTECTED SECTION.
...
PRIVATE SECTION.
...
ENDCLASS.
Cada componente de una clase ha de ser asignado a una de estas tres secciones.