✒️ABAP Las Interfaces
ABAP Las Interfaces
1.- Introducción a Interfaces.
Las clases, sus instancias(objetos) y el acceso a los objetos usando variables referenciadas son la base de la prograamación orientada a objetos en ABAP.
Es necesario para las clases similares proporcionar funcionalidades similares pero que están codificadas diferentes en cada clase, las cuales dan un punto de contacto común con el usuario.
Ejemplo: Tenemos 2 clases similares Cuentas Corriente y Cuenta de Ahorro, las cuales tienen un método para calcular las comisiones del año. Las interfaces y nombres de los métodos son los mismo pero la implementación es diferente.
2.- Qué son las Interfaces.
Son estructuras independientes que se pueden implementar en una clase para extender el ámbito de esa clase.
- El ámbito específico de una clase viene definido por sus componentes y sus secciones de visibilidad.
- Ejemplo: Los componentes públicos de una clase definen que sus atributos y los parámetros de los métodos pueden ser utilizados por todos los usuarios.
- Los componentes protegidos de una clase definen su ámbito en lo que se refiere a sus subclases.
- Las interfaces extienden el ámbito de una clase añadiendo 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.
Las interfaces junto con la herencia proporcionan uno de los pilares del polimorfismo. ya que permiten que un sólo método con una interface se comporte distinto en diferentes clases.
Las interfaces permiten usar diferentes clases de una manera uniforme, aprovechando las referencias a las interfases, es decir, el polimorfismo, EJEMPLO: Las interfaces implementadas en diferentes clases amplian 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 Interfase.
Las interfases al igual que las clases se pueden definir globalmente en el Repositorio R/3 ó localmente en un programa ABAP.
- El código entre estas sentencias es una interface local: INTERFACE <interface>... interface_local ..... ENDINTERFACE.
- En 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 sección de visibilidad ya que automaticamente son parte de la sección pública de la clase en la que la interface es implementada.
- Las interfaces no tienen una parte de IMPLEMENTACION ya que sus métodos con 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 compoenntes de la sección pública. Para direccionar a un componente de una interface como si fuese miembro de la clase, se usa la clausula:
<interface~componente>.
- La clase tiene que implementar los métodos de todas las interfaces implementadas en ella.
- La sección de IMPLEMENTACION de la clase debe contener la implementación de cada método de la interface.
METHOD <interface~componente>. ...... 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 pueden ser diferentes en cada clase.
5.- Referencias e Interfases.
- Las variables referenciadas permiten acceder a los objetos.
- En lugar de crear variables referenciadas con referencia a una clase, se pueden referenciar a una interfase.
- Este tipo de variables referenciadas puede contener referencias a los objetos de las clases que implementen esa interface. Para definir una referencia a una interfase se usa la siguiente adición:
TYPE REF TO <interface>
La interface que utilicemos oara definir la referencia debe haber sido declarada en el programa antes que de esta declaración tenga lugar.
Una variable referenciada con el tipo refernciado a una interface se llama: "variable referenciada a una interface", ó "referencia a interfase". y se usa la adición:
<ireferencia>-><componente>
Accedemos a TODOS los componentes visibles de la interface del objeto al cual la referencia está apuntando.
Permite al usuario acceder a todos los componentes del objeto que fuerón añadidos a su definición al implementar la interface.
6.- Direccionar y asignar objetos usando referencias e interfases.
- Para crear un objeto de la clase, primero, se tiene que haber declarado una variable referenciada con referncia a la clase.
- Si la clase implementa una interface, se hace una asignación entre la variable referenciada a la clase y una referncia a interface, para hacer que la referencia a la interface apunta al mismo objeto que la referencia a clase en:
<ireferencia> = <creferencia>
- Si la interface contiene: un atributo y un método dependiente de instancia, se puede direccionar los componentes de la interface, de la siguiente manera:
Usando la variable referenciada a una clase:
- Para acceder a un atributo utilzamos lo siguiente: <creferencia>-><interface~atributo>
- Para acceder a un método utilizamos lo siguiente: CALL METHOD <creferencia>-><interface~metodo>
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 utlizaremos lo siguiente: <interface>=><constante>
Para todos los demás componentes estáticos de una interface, sólo se pueden usar referencias a objetos o la clase que implementa la interface:
- Para acceder a un atributo, se usa los siguiente: <clase>=><interface~atributo>
- Para llamar a un método estático utilizaremos lo siguiente: CALL METHOD <class>=><intf~meth>
7.- Ejemplo de Interfaces.
- Declaramos la interface ESTADO.
- Declaramos las clases CONTADOR y BICICLETA.
- Dentro de la sección PUBLICA de ambas clases declaramos la interface ESTADO.
- Dentro del evento START-OF-SELECTION creamos los objetos CUENTA y BICI.
- Ejecutamos los métodos CUENTA->INCREMENTAR y BICI->MANEJAR,
- Almacenamos los resultados en la tabla TI_ESTADO.
- Recorremos la tabla llamando al método IMPRIMIR.
Las interfaces son tipos de objetos que se pueden definir localmente en un programa ABAP o bien globalmente a tráves del repositorio R/3 en la transacción SE24 . Si se definen interfaces globalmente entonces estas son almacenadas en un tipo especial del programa ABAP llamado INTERFACE_POOL, el cual es del tipo J y sirve como contenedor del respectivo tipo de objeto, cada POOL de INTERFACES contiene la definición de una sola interfase, este programa es generado automaticamente cuando creamosla interface global, un POOL de INTERFACES es comparable a un MODUL POOL o a un grupo de funciones. Los POOL de INTERFACES no contienen ninguna sentencia ejecutable, cuando se implementa una interface en una clase la definición de la interface queda implicitamente incluida en la definición de la clase.
 
 
 
Sobre el autor
Publicación académica de Gustavo Alberto Ramirez Franco, en su ámbito de estudios para la Carrera Consultor ABAP.
Gustavo Alberto Ramirez Franco
Profesión: Ingeniero en Sistemas Computacionales - Mexico - Legajo: TA38Q
✒️Autor de: 38 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Gustavo Ramirez