✒️ABAP POO Las Clases
ABAP POO Las Clases
Unidad-1-Lección-5: Clases 1) Clases locales y globales
Las clases en ABAP se pueden declarar global o localmente. Las clases globales se definen en el generador de clases a través de la transacción SE24 (Generador de Clases) 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.
Nota: Las clases locales se definen en un programa ABAP y solo pueden ser invocadas desde el programa.
Cuando se 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.
Aparte del contexto de visibilidad, no hay ninguna diferencia entre usar una clase global o una clase local. Lo que sí cambia es la manera en la cual las clases locales y globales son creadas
Si se define una clase que se va a usar en un único programa, normalmente es suficiente con definir los componentes visibles de manera que la clase se ajuste a nuestro programa. Por otro lado, las clases globales deben estar preparadas para ser usadas en cualquier parte.
2) Definición de Clases Locales
Las clases locales son el consunto se sentencias que están entre las sentencias CLASS…ENDCLASS.
Una definición de clase completa consta de:
- · Una parte declarativa: la cual se conoce como definición de clase y en la cual se definen los componentes.
- · Una parte de implementación: la cual se conoce como implementación de la clase, y en la cual se implementan estos componentes.
La parte declarativa está comprendida entre las sentencias:
CLASS <nombre> DEFINITION.
….
ENDCLASS.
Veamos el siguiente ejemplo:
CLASS VEHICULO DEFINITION.
PUBLIC SECTION.
DATA: velocidad type string,
anio_fabricacion type string.
METHODS: asignar_anio_fabricacion IMPORTING a_anio_fabricacion TYPE STRING,
disminuir_velocidad IMPORTING a_velocidad TYPE STRING.
ENDCLASS.
Esta parte declarativa contiene la declaración de todos los componentes de la clase (atributos, métodos y eventos). Cuando se definen clases locales, la parte declarativa pertenece a los datos globales del programa, por tanto se habrá de situar al principio del programa.
Si se declaran métodos en la parte declarativa de una clase, se deberá escribir también su parte de implementación, la cual está comprendida entre las sentencias:
CLASS <nombre> IMPLEMENTATION.
….
ENDCLASS.
Ejemplo:
CLASS VEHICULO IMPLEMENTATION.
METHOD asignar_anio_fabricacion.
anio_fabricacion = a_anio_fabricacion.
ENDMETHOD.
METHOD disminuir_velocidad.
velocidad = velocidad - a_velocidad.
ENDMETHOD.
ENDCLASS.
La parte de implementación contiene la implementación de todos los métodos de la clase. Esta actúa como un bloque, es decir, que cualquier sección de código que no forme parte del bloque no será accesible.
3) 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.
Estas tres áreas definen la visibilidad externa de los componentes de la clase, es decir, la interface entre la clase y el usuario.
Cada componente de una clase ha de ser asignado a una de estas tres secciones:
- · PUBLIC SECTTION (Parte Pública): Todos los componentes declarados en esta sección son accesibles para todos los usuarios y métodos de la clase y de cualquier clase heredada de ella. Los componentes públicos conforman la interface entre clase y usuario.
- · PROTECTED SECTTION (Parte Protegida): Todos los componentes declarados en esta sección son accesibles para todos los métodos de la clase y de las clases heredadas de ella. Estos componentes protegidos conforman la interface entre la clase y todas sus subclases.
- · PIVATE SECTTION (Parte Privada): Los componentes declarados en esta sección son sólo visibles en los métodos de la misma clase. Los elementos privados no forman parte de la interface externa de la clase.
AUDIO TIP 1:
Los atributos de una clase a los que un usuario externo puede acceder directamente, son los atributos públicos. Los componentes públicos de una clase se conocen como la interfaz de la clase. A la sección de visibilidad Privada también se le conoce comúnmente como la “ocultación” de la información o encapsulación. En parte, esto es para proteger al usuario de una clase, ya que se supone que los componentes privados de una clase se modificarán en algún momento, pero su interfaz será siempre la misma. Todos los usuarios externos solo pueden acceder a sus componentes a través de la interfaz de la clase, por lo que se continuará trabajando con la clase, como de costumbre, después de realizado el cambio. El usuario no se dará cuenta del cambio, ya que solo la implementación interna fue modificada. Por otra parte, si los componentes públicos de una clase son modificados de manera incompatible, cada usuario externo tendría que tomar en cuenta estos cambios. Por lo tanto, debemos utilizar los atributos públicos de una clase con mucha moderación, o bien evitar modificar los componentes públicos de nuestras clases.
4) Estructura y Componentes de una 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 (publico, protegido o privado)
- · 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 de clase.
Cuando se define una clase, cada componente es asignado a una de las tres distintas secciones de visibilidad que definen 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, sus nombres deben ser únicos dentro de la clase.
Hay dos tipos de componentes en una clase: aquellos que existen separadamente para cada objeto de una clase, y aquellos que existen sólo una vez para la clase entera, independientemente del número de instancias. Estos componentes son conocidos como dependientes de instancia o independientes de instancia (o estáticos) respectivamente.
En los objetos ABAP, las clases pueden definir los siguientes componentes:
- · Atributos
- · Métodos
- · Eventos
 
 
 
Agradecimiento:
Ha agradecido este aporte: Juan Carro
Favorito:
Está publicación ha sido agregada a sus favoritos por: Juan Carro
Sobre el autor
Publicación académica de Oscar Perez, en su ámbito de estudios para el Máster ABAP POO.
Oscar Perez
Profesión: Ingeniero de Sistemas. Consultor y Desarrollador en Peoplesoft - Canada - Legajo: FD38F
✒️Autor de: 105 Publicaciones Académicas
🎓Cursando Actualmente: Master en Programación ABAP Orientado a Objetos
🎓Egresado de los módulos:
Certificación Académica de Oscar Perez