✒️ABAP Las Interfaces
ABAP Las Interfaces
Interfaces
1| Introducción a Interfaces
Las clases, sus instancias (los objetos) y el acceso a los objetos usando variables referenciadas son la base de la POO en ABAP. El uso de Interfaces nos proporcionan funcionalidades, las cuales nos dan un punto de contacto común con el usuario.
2| ¿Qué son las Interfaces? Son estructuras independientes que se pueden implementar en una clase para extender el ámbito de esa clase.
El ámbito especifico de una clase viene definido por sus componentes y sus secciones de visibilidad. Por ejemplo, los componentes públicos de una clase definen su ámbito público, ya que todos sus atributos y los parámetros de los métodos pueden ser utilizados por todos los usuarios.
Los componentes protegidos de una clase define su ámbito a lo que se refiere a sus subclase. Las interfaces extienden el ámbito de una clase eludiendo sus propios componentes a la sección pública. Esto permite a los usuarios acceder a diferentes clases por medio de un punto de contacto común.
Tips: Las interfaces permiten usar diferentes clases de una manera uniforme aprovechando las referencias a las interface, es decir el polimorfismo. Por ejemplo, las interfaces implementadas en diferentes clases amplían el ámbito público de la clase en el mismo conjunto de componentes, si la clase no tiene ningún componente público especifico de ella misma, entonces la interface describe completamente el ámbito público de la clase.
3| Definición de una Interface
Al igual que las clases, las interfaces se pueden definir globalmente en el repositorio R/3 o localmente en un programa ABAP. La definición de una interface local es el código existente entre las sentencias: INTERFACE <interface>. ….. ENDINTERFACE.
La definición contiene la declaración de todos los componentes (atributos, métodos y eventos) de la interface. Se pueden definir los mismos componentes en una interface que en una clase.
Los componentes de las interfaces no tienen que ser asignados a ninguna sección de visibilidad ya que automáticamente pertenece a la sección pública de la clase en la que la interface es implementada.
Nota: Las interfaces no tienen una parte de implementación ya que sus métodos son implementados en la clase que implementa la interface.
4| Implementación de Interfaces
Cuando se implementa una interface en una clase, los componentes de la interface se añaden al resto de los componentes de la sección pública. Un componente de una interface puede ser direccionado como si fuese un miembro de la clase bajo el siguiente nombre: <interface~componente>.
La clase tiene que implementar los métodos de todas las interfaces implementadas en ellas. La parte de implementación de la clase debe contener la implementación de cada método de la interface: METHOD <interface~metodo>. …. ENDMETHOD.
Las interfaces pueden ser implementadas por diferentes clases. Cada una de las clases es ampliada con el mismo conjunto de componentes, aunque los métodos de la interface pueden ser implementados de manera distinta en cada clase.
5| Referencias a Interfaces
Las variables referenciadas permiten acceder a los objetos. En lugar de crear variables referenciadas con referencia a una clase, la creamos con referencia a una interface.
Este tipo de variables referenciadas puede contener referencias a los objetos de las clases que implementan esa interface. Para definir una referencia a una interface utilizamos la siguiente adición: TYPE REF TO <interface>.
Nota: La interface que utilicemos para definir la referencia debe haber sido declarada en el programa antes de que esta declaración tenga lugar.
Una variable referenciada con el tipo referenciado a una interface se llama variable referenciada a una interface o referencia a interface.
Una referencia a interface usa la siguiente declaración: <ireferencia>-><componente>. Esto para acceder a todos los componentes visibles de la interface del objeto al cual la referencia está apuntando.
Esto permite al usuario acceder a todos los componentes del objeto que fueron añadidos a su definición al implementar la interface.
6| Direccionar y asignar objetos usando referencias a interfaces
Para crear un objeto de la clase, primero se tiene que haber declarado una variable referenciada a la clase.
Si la clase implementa una interface, se puede usar la siguiente asignación entre la variable referenciada a la clase y una referencia a interface, para hacer que la referencia a interface apunte al mismo objeto que la referencia a clase en: <ireferencia> = <creferencia>.
Si la interface contiene un atributo dependiente de instancia y un método dependiente de instancia se puede direccionar los componentes de la interface así:
Usando la variable referenciada a una clase:
- Para acceder a un atributo utilizaremos lo siguiente: <creferencia>-><interface~atributo>.
- Para acceder a un método utilizaremos lo siguiente: CALL METHOD <creferencia>-><interface~metodo>.
Usando la variable referenciada a una interface
- Para acceder a un atributo utilizaremos lo siguiente: <ireferencia>-><atributo>.
- Para acceder a un método utilizaremos lo siguiente: CALL METHOD <ireferencia>-><método>.
Siempre que los componentes estáticos de las interfaces estén implicados, sólo se puede usar el nombre de la interface para acceder a las constantes:
- Para acceder a una constante utilizaremos lo siguiente: <interface>=><constante>.
Para todos los demás componentes estáticos de una interface, sólo se puede usar referencias a objetos o la clase que implementa la interface:
- Para acceder a un atributo estático utilizaremos lo siguiente: <clase>=><interface~atributo>.
- Para llamar a un método estático utilizaremos lo siguiente: CALL METHOD <class>=><intf~meth>.
7| Ejemplos de Interfaces
- Se declara la interface ESTADO y las clases CONTADOR y BICICLETA. Dentro de la sección pública de ambas clases declaramos la interface ESTADO.
- Luego en el evento START-OF-SELECTION creamos los objetos CUENTA y BICI. Ejecutamos los métodosCUENTA->INCREMENTAR y BICI->MANEJAR, almacenamos los resultados en la tabla TI_ESTADO y recorremos la tabla llamando al método imprimir.
- Se muestra la salida por pantalla.
Nota: Las interfaces son tipos de objetos que se pueden definir localmente en un programa ABAP, o bien globalmente a través del repositorio R/3 en la transacción SE24 (Clases). Si se definen interfaces globalmente, estas son almacenadas en un tipo especial de programa ABAP llamado Interface Pools, el cual es del tipo J y sirve como contenedor del respectivo tipo de objeto. Cada Pools de Interface contiene la definición de una sola interface. Este programa es generado automáticamente cuando creamos la interface global. Un Pools de Interface es comparado a un Module Pools o a un grupo de funciones.
Apunte Creado OK - Iniciar Edición
 
 
 
Sobre el autor
Publicación académica de Miguel Angel Castro Lima, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Castro Lima
Profesión: Analista Programador de Sistemas - Venezuela - Legajo: XD60H
✒️Autor de: 28 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP HCM Nivel Avanzado
- Carrera Consultor en SAP HCM Nivel Inicial
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Presentación:
Consultorías, análisis y programación en sistemas con más de 30 años de experiencia
Certificación Académica de Miguel Castro