![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Las Interfaces
ABAP Las Interfaces
![ABAP Las Interfaces ABAP Las Interfaces](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/86.jpg)
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 programación orientada a objetos en ABAP.
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. Los componentes públicos de una clase definen su ámbito público, ya que sus atributos y 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 las 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 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 tienen ningún componente público específico de ella misma, entonces la interface describe el ámbito público de la clase.
3.-Definición de una Interface.
Al igual que las clases, se pueden definir globalmente en el repositorio R/3 o localmente en un programa ABAP.
La definición de una interface local:
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 pertenecen 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.
3.-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 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 cada método de la interface:
METHOD <interface~metodo>.
. . .
ENDMETHOD.
5.-Referencia a Interfaces.
Las variables referenciadas permiten acceder a los objetos. En lugar de crear variables 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 implementen esa interface.
Para definir una referencia a una interface:
TYPE REF TO <interface>
NOTA: La interface que utilicemos para definir la referencia sebe 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, o referencia a interface simplemente.
Una referencia a interface permite al usuario usar la siguiente declaración:
<ireferencia> -> <componente>
Para acceder a todos los componentes visibles de la interface del objeto al cual la referencia está apuntando.
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 con referencia 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 como describimos a continuación:
Usando la variable referenciada a una clase:
- Para acceder a un atributo utilizaremos los siguiente:
- <creferecnia> -> <interface~atributo>
- Para acceder al método utilizaremos lo siguiente:
- CALL METHOD <creferencia> -> <interface~metodo>
Usando la variable referenciada a una interface:
- Para acceder a un atributo
- <ireferencia> -> <atributo>
- Para acceder al método utilizaremos lo siguiente
- CALL METHOD <ireferencia> -> <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
- <interface>=><constante>
- Para todos los demás componentes estáticos de una interface, solo se pueden 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>
7.-Ejemplo de Interfaces.
A continuación, vemos un ejemplo que utiliza interfaces. 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.
METHODS imprimir.
ENDINTERFACE.
CLASS contador DEFINITION.
PUBLIC SECTION.
INTERFACES estado.
METHODS incremnentar.
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 IMPLEMENTATION.
METHOD estado~imprimir.
WRITE: / ‘La velocidad de la bicicleta es: ‘, velocidad.
ENDMETHOD.
METHOD manejar.
ADD 10 <
 
 
 
Sobre el autor
Publicación académica de Juan Hernández, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Hernández
Profesión: Programador Informático - España - Legajo: XQ15K
✒️Autor de: 125 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: PartTime