Conceptos básicos ABAP Orientado a Objetos #2

Empezamos con los conceptos básicos de la programación orientada a objetos en ABAP, y como vimos, las 3 piezas claves de este modelo de programación son las siguientes:

  • Clase: definición del tipo de objeto que queremos crear. Es una especie de plantilla que reune los diferentes atributos y métodos que la definen. Mediante la creación de un objeto a través de su método de creación estamos instanciando dicha clase.
  • Atributos: propiedades, características que representan a nuestro objeto. Si nuestra clase se llama Vehículo, un atributo podría ser el color, la marca, motor, etc.
  • Métodos: porción de código que realizará una modificación en nuestro objeto o consultara información de algunas de sus propiedades. También pueden disparar eventos en otros objetos del sistema.

No hay mejor forma de entender un modelo de programación nuevo que programando, asi que vamos a ello.

Lo primero que haremos será crear una nueva clase que llamaremos ZOO_EJEM_01 mediante la herramienta Eclipse con el ADT. También se pueden crear y mantener clases desde SAPGUI en la transacción se24 o se80. No obstante, este blog basará las explicaciones mediante el entorno Eclipse.

Botón derecho sobre el paquete, New → Other ABAP Repository Object. En el dialogo, seleccionamos la opción Source Code Library → ABAP Class.

Creación de una ABAP Class

Le asignamos un nombre y una descripción e indicamos una orden de transporte. Finalmente, pulsamos en Finalizar.

Creación de una ABAP Class

Una vez creada la clase, nos aparecerá un código autogenerado con la siguiente estructura:

CLASS zcl_ejemplo_pedido DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS zcl_ejemplo_pedido IMPLEMENTATION.
ENDCLASS.

Como podemos observar, tenemos dos secciones claramente diferenciadas: definición de clase e implementación de la clase.

La definición de la clase permitirá, como su nombre indica, definir todos aquellos atributos, métodos y eventos que sean necesarios para la clase. La implementación de la clase será la sección donde implementaremos los métodos y eventos de nuestra clase.

En este primero código autogenerado ya podemos ver algunas cosas interesantes que debemos de saber:

Clase básica ABAP

La clases de tipo FINAL no pueden ser heredadas, es decir, no pueden tener subclases. Se pueden definir como FINAL clases o métodos, impidiendo en el caso de los segundos, que una clase heredada pueda acceder a dicho método. Esto lo veremos de manera extensa cuando hablemos de herencia.

Uno de los conceptos básicos e indispensable para poder desarrollar siguiendo el modelo orientado a objetos es entender los diferentes tipos de visibilidad. La visibilidad de una clase o un método puede ser de tres tipos: Public, Protected y Private.

Encapsulación: Visibilidad de clases y métodos

Cuando hablamos de encapsulación en programación OO nos referimos a la visibilidad que tienen los métodos, atributos de una clase ( y la propia clase ) respecto a otras clases o desarrollos en el servidor de aplicaciones.

Existen tres tipos de encapsulamiento cuando hablamos de programación orientada a objetos.

  • Public : todos los atributos, tipos, constantes o métodos que se definen en la sección publica se pueden utilizar fuera de la clase en cualquier desarrollo del servidor de aplicaciones.
  • Protected: todos los atributos, tipos, constantes o métodos que se definen en la sección protegida se pueden utilizar en la misma clase donde se definen y aquellas clases que hereden de esta clase.
  • Private: todos los atributos, tipos, constantes o métodos que se definen en la sección privada solo pueden ser utilizados en la clase donde se definen.

En la definición de la clase, podemos indicar también si es publica, protegida o privada. El método predefinido ‘CREATE PUBLIC’ permite la creación de instancias fuera de la clase.

Tipos de atributos

Existen dos tipos de atributos que se pueden definir en las clases:

  • Atributos de instancia: son aquellos atributos específicos de cada objetos y se declaran con la sentencia DATA.
  • Atributos estáticos: son aquellos atributos que definen el estado de una clase y es igual para todas las instancias de esta. Se declaran mediante la sentencia CLASS-DATA y pueden ser accedidos por cualquier objeto de la clase. Si se modifica el valor de un atributo estático en una instancia de la clase, se verá reflejado en el resto de instancias de la clase.
CLASS zcl_ejemplo_pedido DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
  
  DATA: lv_num_pedido type ebeln,
        lv_cliente_pedido type kunnr.
        
  class-data sociedad type bukrs.
  
  PROTECTED SECTION.
  
  PRIVATE SECTION.
ENDCLASS.

En el próximo artículo, continuaremos con los tipos de métodos y realizaremos ejemplos de acceso a los diferentes tipos de atributos y métodos dependiendo de su visibilidad.

Deja un comentario