✒️ABAP La definición de Clases, Atributos, Métodos y Eventos
ABAP La definición de Clases, Atributos, Métodos y Eventos
Unidad 5: La programación Orientada a Objetos
Lección 2: La definición de Clases, Atributos, Métodos y Eventos
Las clases locales y globales:
Las clases se definen en el generador de clases, por la trans SE24, en el ABAP Workbench. Y son almacenadas en el Class Pools en la librería de clases en el Repositorio R/3. Todos los programas ABAP en un sist. R/3 puede acceder a las clases globales.
Las clases locales se definen en un programa y solo pueden ser invocadas desde el programa en el que se definieron.
Cuando se usa una clase en un programa, el sist. busca 1ro una clase local con el nombre especificado. Si no lo encuentra, buscará una global.
Además visualmente, ambas se ven igual.
Si se define una clase que se usará en un único programa, es suficiente con definir los componentes visibles de forma que la clase se ajuste al programa.
Las clases globales pueden estar preparadas para ser usadas en cualquier parte.
Definición de clases locales:
Las clases locales son el conjunto de sentencias que están entre las sentencias CLASS... ENDCLASS.
En la definición, se definen los componentes y también hay una parte de implementación, en la que se implementan los componentes.
La parte declarativa:
- Está comprendida entre las sentencias:
- Ej:
- Esta parte contiene declaraciones de todos los componentes de la clase (atributos, métodos y eventos).
Cuando se definen las clases locales, la declaración pertenece a los datos globales del programa, por ende, se tiene que situar al principio del programa. - Si se declaran métodos, se deberá escribir también su parte de implementación. Esta es la que va incluida entre las sentencias:
Ej:
La parte de implementación contiene la implementación de todos los métodos de la clase. Esta parte actúa como un bloque, es decir, que cualquier sección de cód. que no forme parte del bloque no será accesible.
La estructura y los componentes de una clase:
La estructura de una clase de define basándose en: Una clase contiene componentes, Cada componente se asigna a una sección de visibilidad (público, protegido o privado) y Las clases implementan métodos.
Los componentes de una clase representan sus contenidos. Todos los componentes son declarados en la parte declarativa de la clase. Los componentes definen los atributos de los objetos en una clase.
Cuando se define una clase, cada componente es asignado a una de las tres distintas secciones de visibilidad que definan la interface externa de la clase. Todos los componentes de una clase son visibles dentro de la clase. Además todos comparten el mismo espacio, por ende, los nombres deben ser únicos.
Hay dos tipos de componentes en una clase: los que existen separadamente de cada objeto de una clase; y los que existen sólo una vez para la clase entera, independientemente del nro. de instancias.
Estos son conocidos como dependientes de instancio o independientes de instancia (o estáticos) respectivamente.
En los objetos, las clases pueden definir los componentes: Atributos, Métodos y Eventos.
Atributos:
Son campos de datos internos de una clase y pueden tener cualquier tipo de datos ABAP.
El estado de un objeto se determina por el contenido de sus atributos.
Un tipo de atributo son las variables referenciadas; estas permiten crear y acceder a los objetos, de forma que si se definen en una clase, permiten acceder a otros objetos desde dentro de la clase.
Hay dos tipos de atributos:
- Dependientes de instancia: el contenido de los atributos es específico de cada objeto. Se declaran con la sentencia DATA.
- Independientes de instancia o estáticos: el contenido de los atributos define el estado de la clase y es válido para todas las instancias de la clase.
Existen solo una vez para la clase y se declaran con la sentencia CLASS-DATA.
Son accesibles desde todo entorno de ejecución de la clase. Todos los objetos de una clase pueden acceder a sus atributos estáticos.
EJ:
Métodos:
Son procedimientos internos de una clase que definen el comportamiento de un objeto.
Estos pueden acceder a todos los atributos de una clase, lo que les permite cambiar el contenido de los atributos de un objeto.
También poseen una interface con param. que les permite recibir valores cuando son invocados y devolver valores luego de la llamada. Los atributos privados de una clase solo pueden ser cambiados por métodos de la misma clase.
La definición e interface de un método son similares a las de los MF. Un método se define en la parte declarativa de la clase y se implementa en la parte de implementación usando las sentencias:
Ej:
Se pueden declarar tipos de datos locales y objetos en los métodos de la misma forma que en cualquier otro procedimiento. Los métodos se llaman por la sentencia CALL METHOD.
Hay tres tipos de métodos:
- Dependientes de instancia: se declaran con la sentencia METHODS. Pueden acceder a todos los atributos de una clase y pueden 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 dos método especiales "CONSTRUCTOR" y "CLASS_CONSTRUCTOR", que son automáticamente llamados cuando se crea un objeto (CONSTRUCTOR) o cuando se accede por 1ra vez a los componentes de la clase (CLASS_CONSTRUCTOR).
Eventos:
Son acontecimientos o sucesos que usan los objetos o las clases para desencadenar la ejecución de un método en otro objeto o clase.
Estos se llaman métodos que manejan eventos.
En una llamada normal a un método, este puede ser llamado por cualquier nro. de usuarios. Cuando un evento es desencadenado, cualquier nro. de estos métodos puede ser llamado.
La unión entre el disparador del evento "trigger" y el manejador del evento "handler" no es establecida de antemano, si no que entorno de ejecución. En las llamadas normales a métodos, el programa que llama determina los métodos a los que quiere llamar.
El manejador de eventos determina los eventos a los cuales tiene que reaccionar. No tiene porqué existir un método manejador de eventos registrado para cada evento. Los eventos de una clase pueden ser desencadenados en los métodos de la misma clase usando la sentencia RAISE EVENT.
Un método de la misma o diferente clase, se declara como método manejador de eventos, usando la adición FOR EVENT OF.
Los eventos solo tienen una interface de param. de salida. Los param. son pasados por el disparador (RAISE EVENT) al método manejador de eventos el cual los recibe como param. de ent.
El vínculo de unión entre el disparador y el manejador (trigger y handler) es establecido dinámicamente en el programa por la sentencia SET HANDLER. El disparador y manejador pueden ser objetos o clases, dependiendo si hay eventos dependientes de instancia o eventos estáticos y métodos manejadores de eventos.
Cuando un evento es disparado, el correspondiente método manejador de eventos es ejecutado en todas las clases registradas para ese manejador.
Existen dos tipos de eventos:
- Dependientes de instancia: declarados con la sent. EVENTS. Solo se pueden ser desencadenados en un método dependiente de instancia.
- Independientes de instancia o estáticos: declarados con la sent. CLASS-EVENTS. Todos los métodos pueden desencadenar eventos estáticos. Estos eventos son el único tipo de eventos que puede ser desencadenado por un método estático.
Ej:
Los tipos y las constantes:
Podemos definir tipos de datos dentro de una clase, con la sent. TYPES. Los tipos de datos no son específicos de cada instancia y existen una sola vez para todos los objetos de la clase.
Las constantes son un tipo especial de atributos estáticos. Su valor se fija cuando son declaradas y no puede ser cambiado. Se declaran con la sent. CONSTANTS. Las constantes existen una sola vez para todos los objetos de la clase.
La visibilidad de una clase:
La parte declarativa o definición de una clase se divide en tres áreas de distinta visibilidad:
Estas 3 áreas definen la visibilidad externa de los componentes de la clase (la interface entre la clase y el usuario).
Cada componente de una clase ha de ser asignado a una de estas tres secciones:
- PUBLIC SECTION: todos los componentes declarados acá, son accesibles para todos los usuarios de la clase y para todos los métodos de la clase y de cualquier clase que ha heredado de ella. Los componentes públicos conforman la interface entre la clase y el usuario.
- POTECTED SECTION: los componentes declarados acá son accesibles para todos los métodos de la clase y de las clases que heredan de ella. Los componentes protegidos conforman la interface entre una clase y sus subclases.
- PRIVATE SECTION: los componentes declarados acá, son visibles en los métodos de la misma clase. Los componentes privados no forman parte de la interface externa de la clase.
 
 
 
Sobre el autor
Publicación académica de Candela Estefan?a Calzada, en su ámbito de estudios para la Carrera Consultor ABAP.
Candela Estefan?a Calzada
Profesión: T?cnica Electr?nica - Argentina - Legajo: JW91W
✒️Autor de: 160 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Me encuentro estudiando la ingenier?a en sistemas de informaci?n. poseo amplia experiencia en edici?n de videos. tengo bases entorno a la programaci?n que quiero continuar consolidando.
Certificación Académica de Candela Calzada