✒️ABAP Las Interfaces
ABAP Las Interfaces
INTERFACES
Introducción interfaces: Las clases, sus instancias y el acceso a los objetos usando variables referenciadas son la base de la POO. Hay veces en las que es necesario para las clases similares proporcionar funcionalidades similares pero que están codificadas en cada clase, las cuales dan un punto de contacto común con el usuario. En dos clases similares la interfaces y nombres de los métodos son los mismos pero la implementación es diferente. El usuario de las clases y las instancias tiene que ser capaz de ejecutar el método para todas las clases sin preocuparse del tipo de cada clase individual. Mediante interfaces se puede realizar esto.
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. 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. En componentes protegidos de una clase definen el ámbito añadiendo sus propios componentes a la sección pública. 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 puno de contacto común. Las interfaces junto con la herencia proporcionan uno de los pilares básicos del polimorfismo, ya que permiten que un solo método con una interface se comporte distinto en diferentes clases.
NOTA: Las interfaces permiten usar diferentes clases de una manera uniforme aprovechando las referencias a las 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úblico de la clase.
Definición interface: Se pueden definir globalmente en el repositorio R/3 o localmente. La definición de una interface local se realiza mediante la palabra reservada: “INTERFACE<nombre_interface> …. ENDINTERFACE.”. La definición contiene la declaración de todos los componentes de la interface. Se pueden definir los mismos componentes en una interface que en una clase. Los componentes no tienen que ser asignados a ninguna sección de visibilidad ya que automáticamente pertenecen a la sección pública de la clase. Las interfaces no tienen parte de implementación, ya que sus métodos son implementados en la clase que implementa la interface.
Implementación de interfaces: Cuando se implementa una interface en una clase, los componentes de la interface se añaden al resto de componentes de la sección pública. Un componente de la interface puede ser re direccionado como si fuese un miembro de la clase bajo el siguiente nombre: "<interface~component>". 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 clase.
Referencias a interfaces: Las variables referenciadas permiten acceder a los objetos. En lugar de crear variables referenciadas con referencia a una clase, se pueden crear con referencia a una interface. Este tipo de variables referenciadas puede contener referencias a los objetos de las clases que se implementen esa interface. La definición se realiza con “TYPE REF TO <interface>”. La interface que utilizaremos para definir la referencia debe haber sido declarada en el programa antes que esta declaración tenga lugar. Una variable referenciada con el tipo referenciado a una interface se llama variable referenciada a una interface. Una referencia a interface permite usar la declaración “<ireferencia>-><componente>” y acceder a todos los componentes visibles de la interface.
Direccionar 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 una interface, se puede usar la asignación “<ireferencia> = <creferencia>”, entre la variable referenciada a la clase y una referencia a la interface, para hacer que la referencia a interface apunte al mismo objeto que la referencia a la clase. Si la interface contiene un atributo dependiente de instancia y un método dependiente de instancia, se puede direccionar los componentes de la interface de las siguientes formas:
- Usando la variable referenciada a una clase:
- Para acceder a un atributo: <creferencia>-><interface~atributo>
- Para acceder al método: CALL METHOD <creferencia>-><interface~método>
- Usando la variable referenciada a una interface:
- Para acceder a un atributo: <ireferencia>-><atributo>
- Para acceder al método: CALL METHOD <irefenrecia>-><método>
- Solo se puede usar el nombre de la interface para acceder a las constantes, componentes estáticos estén implicados
- Para acceder a una constante: <interface>=><constante>
- Demás componentes estáticos de una interface, solo usar referencias a objetos o la clase que implementa la interface
- Para acceder a un atributo estático: <clase>=><interface~atributo>
- Para llamar a un método estático: CALL METHOD <class>=><intf~meth>
Ejemplo de interface:
- Se declara la interface ESTADO y las clases CONTADOR y BICICLETA. Dentro de la sección pública de ambas clases se declara la interface ESTADO.
- En el evento STAST-OF-SELECTION se crean los objetos CUENTA y BICI. Si se ejecuta los métodos CUENTA->INVREMENTAR y BICI-MANEJAR el resultado se almacena en la tabla TI:_ESTADO y se recorre la tabla con el método IMPRIMIR.
- En la salida se muestra la cuenta del contador y la velocidad de la bicicleta.
NOTA: Las interfaces se pueden definir localmente (en el programa ABAP) y globalmente (tx SE24). Si se definen interfaces globalmente, son almacenadas en un tipo especial de programa llamado “INTERFACE-POOL”, que es del tipo J y sirve como contenedor del respectivo tipo de objeto. Cada pool de interfaces, contiene la definición de una sola interface. El programa es generado automáticamente cuando se genera la interface global. Un pool de interfaces es comparable a un module pool o 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 incluida en la definición de la clase.
 
 
 
Favorito:
Está publicación ha sido agregada a sus favoritos por: Francisco Ortega Aguilar
Sobre el autor
Publicación académica de Felipe Estepa Quintero, en su ámbito de estudios para la Carrera Consultor ABAP.
Felipe Estepa Quintero
Profesión: Tecnologo en Gestion Logistica - Colombia - Legajo: QH16V
✒️Autor de: 118 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Felipe Estepa