✒️ABAP Las Interfaces
ABAP Las Interfaces
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.
· Las interfaces extienden el ámbito de una clase añadiendo sus propios componentes a la sección pública.
· Las interfaces junto con la herencia proporcionan uno de los pilares básico del polimorfismo, ya que permiten que un solo método con una interface se comporte distinto en diferentes clases.
DEFINICION DE UNA INTERFACE
Igual que las clases, se pueden definir o bien globalmente en el repositorio R/3 o localmente en un programa ABAP.
Sintaxis por definir Localmente:
INTERFACE <nombreinterface>.
…
ENDINTERFACE.
La definición contiene la declaración de todos los componentes (atributos, método 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, pertenecen a la sección pública de la clase en la que se implementa el interface.
Los interfaces no tienen una parte de implementación, sus métodos son implementados en la clase que implementa la interface.
IMPLEMENTACION DE INTERFACES
Los componentes de la interface se añaden al resto de 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 ella.
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 clases.
REFERENCIAS A INTERFACES
Las variables referenciadas permiten acceder a los objetos.
Se pueden crear variables referenciadas a una interface.
Estas variables referenciadas pueden contener referencias a los objetos de la clase que implementen esa interface.
Para definir una referencia a una interface:
TYPE REF TO <interface>.
NOTA: La interface que utilicemos para definir la referencia debe haber sido declarada en el programa antes de que la declaración de la referencia tenga lugar.
Conocidas como: VARIABLE REFERENCIADA A INTERFACE.
El usuario puede usarla del siguiente modo
<interface-referencia>-><componente>
Para acceder a todos los componentes visibles de la interface del objeto al cual la referencia está apuntando.
Permite acceder a todos los componentes del objeto que fueron añadidos a su definición al implementar la interface.
DIRECCIONA Y ASIGNAR OBJETOS USANDO REFERENCIAS A INTERFACES.
Para crear un objeto de la clase, primero se tiene que haber declarado una variable referenciada con referencia a la clase.
Si la clase implementa un interface, se puede usar la asignación entre la variable referencias a la clase y una referencia a interface, pera hace que la referencia a interface apunte al mismo objeto que la referencia a clase así:
<interface-referencia> = <clase-referencia>
Si la interface contiene un atributo dependiente de instancia y un modelo dependiente de instancia se puede direccionar los componentes dela interface como se describe a continuación:
Usando la variable referenciada a una clase:
Para acceder a un atributo haremos lo siguiente:
<Clase-referencia> -><interface~atributo>
Para acceder al método utilizaremos lo siguiente:
CALL METHOD <clase-referencia> -><interface~metodo>
Usando la variable referenciada a una interface:
Para acceder a un atributo utilizaremos lo siguiente:
<interface-referencia> -><atributo>
Para acceder al método utilizaremos lo siguiente
CALL METHOD <interface-referencia>-><método>
Siempre que los 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 una constante utilizaremos lo siguiente:
<interface>=><constante>
Para todos los demás componentes estáticos de una interface, solo 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 llamara a un método estático utilizaremos lo siguiente:
CALL METHOD <clase>=><interface~metodo>
EJEMPLO DE INTERFACES
Ahora veremos un ejemplo de un programa que utiliza interfaces.
Ahora declaramos la interface ESTADO y las clases CONTADOR y BICICLETA.
Dentro de la sección publica de ambas clases declaramos la interface ESTADO
INTERFACE estado.
…METHODS imprimir.
ENDINTERFACE.
CLASS contador DEFINITION.
…PUBLIC SECTION.
……INTERFACES estado.
……METHODS incrementar.
…PRIVATE SECTION.
……DATA cuenta TYPE i.
ENDCLASS.
CLASS contador IMPLEMENTATION.
…METHOD estado~imprimir.
……WRITE: / ‘La cuenta en el contador es: ‘, cuenta.
…ENDMETHOD.
…METHOD incrementar.
……ADD 1 TO cuenta.
…ENDMETHOD.
ENDCLASS.
CLASS bicicleta DEFINITION.
…PUBLIC SECTION.
……INTERFACES estado.
……METHODS manejar.
…PRIVATE SECTION.
……DATA velocidad TYPE i.
ENDCLASS
CLASS bicileta IMPLEMENTATION.
…METHOD estado-imprimir.
……WRTIE: / ‘La velocidad de la bici es: ‘, velocidad.
…ENDMETHOD.
…METHOD majear.
……ADD 10 TO velocidad.
…ENDMETHOD.
ENDCLASS.
Luego 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 llamado 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 OBJET: cuenta, bici.
…DO 5 TIMES.
……CALL METHOD: cuenta ->incrementar, bici->manejar.
…ENDDO.
…APPEND cuento TO ti_estado, bici TO ti_estado.
…LOOP AT ti_estado INTO estado.
……CALL METHOD estado->imprimir.
…ENDLOOP.
 
 
 
Sobre el autor
Publicación académica de Josep Antoni Lopez Moyano, en su ámbito de estudios para la Carrera Consultor ABAP.
Josep Antoni Lopez Moyano
Profesión: It Manager - España - Legajo: QP26P
✒️Autor de: 375 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP HCM Nivel Inicial
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial
- Máster Funcional ABAP
- Máster ABAP Orientado a Objetos
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial