✒️ABAP Las Interfaces
ABAP Las Interfaces
1-Introducción a interfaces
Las clases, sus infancias (los objetos ) y el acceso a los objetos usando variables reverenciadas con la base de la programación orientada a objetos en ABAP. Hay veces que es necesario para clases similares proporcionar funcionalidad similares pero que están codificadas diferentes a cada clase, las cuales dan un punto de contacto común con el usuario.
EJ: podríamos tener dos clases similares, cuanta corriente y cuanta de ahorro, las cuales tiene un método de calcular las comisiones del año. Las interfaces y los nombres de los métodos son los mismos pero la implementación es diferente.
El usuario de las clases y las instancias tienen que ser capaces de ejecutar el método para todas las cuentas sin preocuparse del tipo de cada cuenta individual. Con objetos ABAP esto es posible mediante el uso de las interfaces.
2- Que son las interfaces?
Son estructuras ende independientes que se pueden implementar en un clase para extender el amito de esa clase.
Lo especifico de una clase viene definido por sus componentes y sus secciones de visibilidad. Ej los componentes públicos de una clase definen un á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 definen su ámbito en lo que se refiere a subclase, la interface entienden 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 básicos del polimorfismo, ya que permite que solo 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 la interfaces, 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 específico de ella misma entonces la interface describe completamente el ámbito púbico de la clase.
3-Definicion de una interface
Las interfaces se pueden definir bien 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 siguientes:
INTERFACE <interface>.
.....
ENDINTERFACE.
La definición contiene la declaración de todos los componentes (atributos , métodos y eventos) de la interface. S pueden definir los mimos 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 pertenecen a la sección publica de la clase en la que la interface es implementada.
Las interfaces no tienen un 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 componentenes de la sección publica. Un componente de una interface puede ser direccionando 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 ella, la parte de implementación de la clase debe contera la implementación de cada método de la interface:
METHOD <interface metodo>.
.....
ENDMETHOD.
Las interfaces puede 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 puedan ser implementados de manera distinta en cada clase.
5- Referencias a Interfaces
Las variables reverenciadas permiten acceder a los objetos, en lugar de crear variables reverenciadas con referencia a una clse se pueden crear con referencia a un interface.
Este tipo de variables reverenciadas puede contener referencias a los objetos de las clases que implementen esa interface.
Para definir una referencia a una interface:
TYPE REF TO <interface>
La interface que utilizamos para definir la referencia debe haber sido declarada en el programa antes que esta declaración tenga lugar.
Una variable referenciada con el tipo reverenciado a un interfase se llama variable reverenciada a un interface, o referencia a interface simplemente.
<ireferencia>-><componente>
Para acceder a todos los componentes visibles de la interface del objeto al cual la referencia esta apuntado. Esto permite al usuario acceder a todos los componentes del objetivo que fueron añadidos a su definición al implementar la interface.
6- Direcciones y asignar objetivos usando referencias a interfaces
Para crear un objeto de la clase primero se tiene que haber declarado una variable de referenciada con la referencia a la clase. Si la clase implementa una interface, se puede usar la siguiente asignación entre la variable reverenciada a la clase una referencia a interface, para hacer que la referencia a interface apunte a un mismo objeto que la referencia a clase.
<ireferencia> = <creferencia>
Si la interface contiene un atributo dependiente de instancia y un método dependiente de instancia se puede direcciones los componentes de la interface.
Para acceder a un atributo
<creferencia<-><interface atributo>
Para acceder al método utilizaremos
CALL MTHOD <creferencia>-><interface metodo>
Siempre que lo componentes estáticos de las interfaces estén implicados, solo se puede usar el nombre de la interface para acceder a las constantes.
Para acceder a las constantes utilizamos:
<interface>=><constante>
Para todos los demás componentes estáticos de una interface, solo se pueden usar refreíais a objetos o la clase que implementa la interface.
Para acceder a un atributo estático utilizamos.
<clase>=><interface atributo>
Para llamar a un método estático utilizaremos:
CALL METHOD <class>=><intf meth>
7-Ejemplo de interface
A continuación veremos un Ejemplo de una programa ABAP que utiliza interfaces. Aquí declaramos la interface ESTADO y las clases CONTADOR y BICICLETA. Dentro de la sección pública de ambas clases declaramos la interface ESTADO.
INTERFACE estado IMPLEMENTATION
INTERFACE estado.
METHODS imprimir.
ENDINTERFACE. "estado IMPLEMENTATION
CLASS contador DEFINITION
CLASS contador DEFINITION.
PUBLIC SECTION.
INTERFACES estado.
METHODS incrementar.
PRIVATE SECTION.
DATA cuenta TYPE i.
ENDCLASS. "contador DEFINITION
CLASS contador IMPLEMENTATION
CLASS contador IMPLEMENTATION.
METHOD estado~imprimir.
WRITE: / 'La cuenta en el contador es: ', cuenta.
ENDMETHOD. "estado~imprimir
METHOD incrementar.
ADD 1 TO cuenta.
ENDMETHOD. "incrementar
ENDCLASS. "contador IMPLEMENTATION
CLASS bicicleta DEFINITION
CLASS bicicleta DEFINITION.
PUBLIC SECTION.
INTERFACES estado.
METHODS manejar.
PRIVATE SECTION.
DATA velocidad TYPE i.
ENDCLASS. "bicicleta DEFINITION
CLASS bicicleta IMPLEMENTATION
CLASS bicicleta IMPLEMENTATION.
METHOD estado~imprimir.
WRITE: / 'La velocidad de la bicicleta es: ', velocidad.
ENDMETHOD. "estado~imprimir
METHOD manejar.
ADD 10 TO velocidad.
ENDMETHOD. "manejar
ENDCLASS. "bicicleta IMPLEMENTATION
Luego dentro del evento START-OF-SELCTION creamos los objetos CUENTA y BICI. Ejecutamos los métodos CUENTA->INCREMENTAR y BICI->MANEJAR, almacenamos los resultados en la tabla TI_ESTADO y recorremos la tabla llamando al método IMPRIMIR.
DATA: cuenta TYPE REF TO contador,
bici TYPE REF TO bicicleta,
estado TYPE REF TO estado,
ti_estado TYPE TABLE OF REF TO estado.
START-OF-SELECTION.
CREATE OBJECT: cuenta, bici.
DO 5 TIMES.
CALL METHOD: cuenta->incrementar,
bici->manejar.
ENDDO.
APPEND: cuenta TO ti_estado,
bici TO ti_estado.
LOOP AT ti_estado INTO estado.
CALL METHOD estado->imprimir.
ENDLOOP.
La salida por pantalla del programa será:
Interfaces en ABAP
La cuenta es el contador es: 5
La velocidad de la bicicleta es: 50
Las interfaces son tipos de objeto que se pueden definir localmente en un programa ABAP, o globalmente en un programa a través del repositorio R/3, en la Transacción SE24, tal como veremos más adelante en detalle para las clases. Si se definen interfaces globalmente entonces estas son almacenadas en un tipo especial del programa ABAP llamado INTERFACE POOL, el cual es de tipo J y sirve como contenedor del respectivo tipo de objeto. Cada pool de interface contiene la definición de una sola interface. Este programa es generado automáticamente cuando creamos la interface global. Un pool de interfaces es comparable a un modo 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 implícitamente incluida en la definición de la clase.
 
 
 
Sobre el autor
Publicación académica de Juan Carlos Pavicich, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Carlos Pavicich
Profesión: Técnico Informático - Argentina - Legajo: VR91L
✒️Autor de: 116 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Tengo el agrado de dirigirme a ud/s con el objeto de mencionar mi experiencia y conocimientos técnicos necesarios para desarrollar actividades en el rubro de su empresa.
Certificación Académica de Juan Pavicich