
Lección: Definición de Clases, Atributos, Métodos y Eventos
• Clases locales y globales
â—¦ Descripción: Las clases en ABAP pueden ser declaradas globalmente o localmente, lo que impacta su accesibilidad y administración en el sistema.
â—¦ Clases globales: Se definen y gestionan mediante la transacción SE24 en el ABAP Workbench y son accesibles desde cualquier programa ABAP. Se almacenan en los Class Pools en la librería de clases en el Repositorio R/3.
â—¦ Clases locales: Se definen dentro de un programa ABAP específico, entre las sentencias CLASS...ENDCLASS, y solo pueden ser invocadas desde ese mismo programa. Cuando se usa una clase en ABAP, el sistema busca primero una clase local con el nombre especificado; si no la encuentra, busca una global.
â—¦ Estructura de la definición: Una definición de clase completa consta de una parte declarativa (o definición), donde se definen los componentes, y una parte de implementación, donde se implementan los métodos. La parte declarativa en clases locales debe situarse al principio del programa, en los datos globales.
• Estructura y Componentes de una Clase
â—¦ Descripción: La estructura de una clase se define por sus componentes, la asignación de cada componente a una sección de visibilidad (pública, protegida o privada), y la implementación de sus métodos.
â—¦ Declaración de componentes: Todos los componentes se declaran en la parte declarativa y definen los atributos de los objetos de esa clase.
â—¦ Visibilidad y unicidad: Todos los componentes dentro de una clase son visibles entre sí y deben tener nombres únicos dentro de la clase.
â—¦ Tipos de componentes: Pueden ser dependientes de instancia (existen por separado para cada objeto) o independientes de instancia o estáticos (existen una única vez para toda la clase, sin importar el número de instancias).
â—¦ Componentes de Objetos ABAP: En Objetos ABAP, las clases pueden definir Atributos, Métodos y Eventos.
• Atributos
â—¦ Descripción: Son los campos de datos internos de una clase que determinan el estado de un objeto y pueden ser de cualquier tipo de datos ABAP.
â—¦ Dependientes de instancia: Su contenido es específico para cada objeto y se declaran usando la sentencia DATA.
â—¦ Independientes de instancia o estáticos: Su contenido define el estado de la clase para todas sus instancias y se declaran usando la sentencia CLASS-DATA. Existen una única vez para la clase y los cambios en un objeto son visibles en todos los demás objetos de la misma clase.
• Métodos
â—¦ Descripción: Son procedimientos internos de una clase que definen el comportamiento de un objeto y pueden acceder y modificar el contenido de sus atributos. Tienen una interfaz con parámetros para recibir y devolver valores, similar a los módulos de funciones.
â—¦ Declaración e implementación: Se definen en la parte declarativa de la clase y se implementan en la parte de implementación.
â—¦ Dependientes de instancia: Se declaran con METHODS y pueden acceder a todos los atributos y desencadenar todos los eventos de una clase.
â—¦ Independientes de instancia o estáticos: Se declaran con CLASS-METHODS y solo pueden acceder a atributos estáticos y desencadenar eventos estáticos.
â—¦ Especiales: Incluyen CONSTRUCTOR (llamado automáticamente al crear un objeto) y CLASS_CONSTRUCTOR (llamado automáticamente al acceder por primera vez a los componentes de la clase).
• Eventos
â—¦ Descripción: Son acontecimientos o sucesos que los objetos o las clases utilizan para desencadenar la ejecución de un método en otro objeto o clase.
â—¦ Declaración: Se declaran en la parte declarativa de una clase o en una interfaz. Pueden especificar parámetros de salida (EXPORTING) que se pasan al manejador.
â—¦ Tipos de Eventos:
â–ª Dependientes de instancia: Se declaran con EVENTS y solo pueden ser disparados por un método dependiente de instancia. Contienen el parámetro implícito SENDER.
â–ª Independientes de instancia o estáticos: Se declaran con CLASS-EVENTS y pueden ser desencadenados por todos los métodos, incluidos los estáticos.
â—¦ Métodos manejadores: Son los métodos que se ejecutan cuando ocurre un evento, declarados con la adición FOR EVENT OF.
â—¦ Unión dinámica: La conexión entre el disparador (trigger) del evento y su manejador (handler) se establece dinámicamente en tiempo de ejecución utilizando la sentencia SET HANDLER. Los manejadores se ejecutan de forma sincrónica y en el orden en que se registran. Para evitar bucles infinitos, los eventos solo pueden anidarse 64 niveles.
• Tipos y Constantes
â—¦ Tipos: Las clases pueden definir tipos de datos ABAP locales dentro de una clase con la sentencia TYPES. Estos tipos no son específicos de cada instancia y existen una sola vez para todos los objetos de la clase.
â—¦ Constantes: Son un tipo especial de atributos estáticos declarados con CONSTANTS. Su valor se fija al ser declaradas y no puede ser modificado. También existen una sola vez para todos los objetos de la clase.
• Visibilidad de una Clase
â—¦ Descripción: La parte declarativa de una clase se divide en tres áreas de visibilidad que determinan qué componentes son accesibles externamente.
â—¦ PUBLIC SECTION (Parte Pública): Los componentes aquí son accesibles para todos los usuarios y métodos de la clase, y para cualquier clase que herede de ella, formando la interfaz externa de la clase.
â—¦ PROTECTED SECTION (Parte Protegida): Los componentes en esta sección son accesibles para todos los métodos de la clase y de las clases que heredan de ella, conformando la interfaz entre una clase y sus subclases.
â—¦ PRIVATE SECTION (Parte Privada): Los componentes declarados aquí solo son visibles para los métodos de la misma clase y no forman parte de su interfaz externa. La encapsulación se basa en estas tres áreas de visibilidad, ocultando la implementación interna del objeto.