W Pub: ABAP Curso SE 24

La OOP (Oriented Object Programming) o POO (Programacin Orientada a Objetos) no es ms que una forma natural de programar, y al decir natural entendemos la sencillez de reconocer que las rutinas o procedimientos pueden llegar a tener una vida propia. Entendemos como vida en que un objeto puede ser creado y destruido a voluntad, puede ser descendiente o tener descendencia, as como utilizar mtodos o atributos de sus predecesores. Llamamos o entendemos como OBJETO a la CLASE generada.

Partimos de la base de que todo se define mediante una definicin de clase, ah es donde nace todo, por ello vamos a utilizar un ejemplo bien sencillo, nosotros mismos.

Nosotros, somo las clase "HUMANO" que a su vez podra estar englobada con la clase "MAMFEROS" que a su vez est englobada con en la clase "ANIMALES"
                        ANIMAL 
                           |
                    +----------+-----+...
                    |          |
                MAMIFEROS   INSECTOS                   
                    |          |
              +-----+--...    ...
              |
           HUMANOS

Esta sera una definicin sencilla de clases y nosotros somo el objeto final, y como tales disponemos de lo que llamaremos atributos. Los atributos pueden depender directamente de una clase o de una subclase, asi pues podemos decir que todos los animales disponen de "ojos" (ok! no todos, pero no vamos a entrar en polmicas!). No obstante tambin hay ciertos atributos que poseen ciertas clases, por ejemplo muchos de los animales acuticos disponen de branquias en vez de pulmones, por ello las branquias y los pulmones son atributos dependientes de la clase.

Si nos concentramos en la clase humana, podemos definir con tan solo mirarnos al espejo una multitud de atributos, que pueden ser comunes para clases superiores, en caso de que as fuera, esos atributos perteneceran a la clase superior, mientras que nosotros adopataramos por "herencia" dichos atributos.

Los mtodos no son ms que las acciones que pueden realizar las clases, por ello al disponer de los atributos pulmones poner tambin disponer de los mtodos inspirar y expirar, que no ser otra cosa que meter aire a los pulmones y luego sacarlo. Otro ejemplo de mtodo podra ser caminar, colocar un pie delante del otro o unos centmetros por delante de la posicin de donde se encuentra consiguiendo mantener el equilibrio sera tambin llamado mtodo.

Y Por ltimo disponemos de los eventos o disparadores, que no son ms que las acciones automticas que realizamos, por ejemplo una de las acciones ms comunes y que es casi refleja es contestar a un saludo o cerrar los ojos al estornudar. Son acciones que dependen de otras acciones.

Todo esto parece bien sencillo, pero de se puede complicar mucho ms haciendo diferentes visibilidades con los atributos, los mtodos y los objetos. As pues una atributo pblico sera el color de nuestros ojos, ya que todo el mundo puede observarlo. Otra visibilidad sera la protegida, aquella que slo compartimos con otros objetos y con nosotros mismos, por ejemplo dar nuestro nmero de telfono o ser llamados por l. Y por ltimo tenemos una visibilidad privada que slo nosotros somos dueños, por ejemplo lo que hacis en el baño (eso os lo dejo a vuestra imaginacin).

class humano definition.
section public.
   data: ojos type n,
         color_ojos type i,
         dedos type n.
   methods: caminar importing avance
                    exporting status.
section protected.
   data: telefon(10) type n.
   methods: dar_telefono exporting numero.
section private.
	methods: morder_unyas.
endclass

class humano implementation.
  method caminar.
* (...)
  endmethod.
endclass.

Esto sera la implementacin en forma ABAP, pero afortunadamente todo esto lo podemos realizar con un pequeño interface que nos facilita la definicin de la clase, la implementacin deberemos hacerlas como siempre.

Vemos que con una serie de pestañas, igual que si se tratase de funciones propias de SAP, as la definicin de las secciones as como sus atributos y sus mtodos se pueden definir fcilmente, luego incluso podremos modificar el cdigo fuente generado como si del programa principal se tratase.

Hasta el momento, slo hemos definido las clases y en si, las clases no son ms que definiciones. Si se quieren utilizar y rendir al mximo las clases deben convertirse en objetos en tiempo de ejecucin. Por ello ser necesario crear los objetos con la instruccin CREATE OBJECT, como el siguiente ejemplo:

data: my_raza type ref to humano Ver clase definida con anterioridad

create object: my_raza.

call method my_raza-&gtcaminar exporting 20 importing status.

(...)

Por supuesto el uso de objetos queda reservados a complejas aplicaciones o a modestas pero racionales siendo su forma de trabajar al mas puro estilo conversacional.