✒️ABAP Las propiedades de la programación orientada a objetos
ABAP Las propiedades de la programación orientada a objetos
1.- Las Propiedades de la Programación Orientada a Objetos.
Los objetos presentan 3 propiedades fundamentales, estas son:
- Encapsulación.
- Herencia.
- Polimorfismo.
2.- Encapsulación u Ocultamiento.
- Se refiere a que todos los objetos restringen la visibilidad de sus recursos (atributos y métodos) al resto de los usuarios.
- 3 áreas de visibilidad son la base de la encapsulación (pública, privada y protegida).
- Cada objeto posee una interfase que determina la manera de interactuar con él.
- La implementación del objeto (su interior) es encapsulada, es decir, que desde fuera el objeto en invisible, simplemente se usa.
- CLASS c1 DEFINITION.
- PUBLIC SECTION.
- DATA: a1...
- METHODS: m1...
- EVENTS: e1..
- PROTECTED SECTION.
- DATA: a2...
- METHODS: m2...
- EVENTS: e2..
- PUBLIC SECTION.
- DATA: a3...
- METHODS: m3...
- EVENTS: e3..
- ENDCLASS.
- Cuando definamos una clase, debemos tener cuidado en el diseño de los componentes públicos, intentando declarar los menos posibles.
- Los componentes públicos de las clases globales NO pueden ser cambiados una vez que se ha liberado la clase.
- Los atributos públicos son visibles externamente y forman parte de la interface entre un objeto y sus usuarios.
- Para encapsular el estado de un objeto completamente NO se declara ningún atributo público.
- Además de definir la visibilidad de un atributo, también podemos protegerlo de modificaciones usando la adición RED-ONLY.
3.- Herencia.
Es la capacidad que tiene una clase de heredar las propiedades y métodos de otra clase.
La herencia permite crear una clase a partir de una existente, heredando la nueva clase sus propiedades. Esto se realiza añadiendo la adición INHERITING FROM a la sentencia de definición de la clase:
CLASS <subclass> DEFINITION INHERITING FROM <superclass>.
Aquí la NUEVA clase HEREDA TODOS los componentes de la clase ya existente.
- La clase original se conoce como la SUPERCLASE.
- La nueva clase que será la SUBCLASE.
- Si no se especifica ninguna declaración a la subclase, esta contiene los mismos componentes que la superclase.
- Sólo los componentes públicos y protegidos de la superclase son visibles a la subclase.
- Los componentes privados de la superclase existen en la subclase, pero, NO SON VISIBLES. Por esto mismo se podrán declarar componentes privados en la subclase con los mismo nombre que los componentes privados de la superclase.
- Cada clase trabaja con sus propios componentes privados.
- Los métodos que una subclase hereda de una superclase usan los atributos privados de la superclase y no ningún componente privado de la subclase con el mismo nombre.
Denominaremos especialización a la relación en donde una clase la "subclase" hereda todas las principales características de otra clase "la superclase", si lo vemos en sentido inverso, es decir, "la superclase" hereda las características de la subclase, entonces hablaremos de generalización.
Si la superclase no tiene una sección privada, la subclase es una replica exacta de la superclase, de todos modos podemos añadir nuevos componentes a la subclase, esto permite convertir a la subclase en una versión especializada de la superclase, si una subclase es ella misma una superclase de otras clases se esta introduciendo un nuevo nivel de especialización.
Existen 2 Tipos de Herencia:
- Simple: Una clase puede tener más de una "subclase" de las cuales es "superclase", pero sólo puede tener una "superclase" de la cual es "subclase."
- Multiple: Una clase hereda de varias superclases.
Cuando una subclase hereda de una superclase que a su vez hereda de otra superclase de la cual es subclase, se forma una estructura de árbol en la cual el grado de especialización aumenta con cada nível jerarquico que se añade. A la inversa, las clases se hacen más generales hasta que se alcanza el nodo raíz del árbol de la herencia.
El nodo raíz de todos los árboles de herencia en los objetos ABAP es la clase predefinida vacía OBJECT.
- OBJECT: Esta es la más general de todas las clases posibles ya que no contiene ni atributos ni metodos.
- Cuando definimos una nueva clase no es necesario especificar explicitamente que es es una superclase implictamente esta definida como una superclase.
- En un árbol de herencia, dos nodos adyacentes son la superclase y la subclase directamente uno de otro. Las declaraciones de componentes en una subclase, serán distribuidas en todos los níveles superiores en el árbol de herencia.
Las adiciones ABSTRACT y FINALLY en la sentencia methods y class permiten definir métodos o clases abstractas y finales. Un método abstracto se define en una clase abstracta y no puede ser implementado en esa clase, tiene que ser implementado en una subclase de la clase. Las clases abstractas no pueden ser instanciadas en un método final no puede ser redefinido en una subclase, las clases finales no pueden tener subclase son las que finalizan el árbol de herencia.
4.- Polimorfismo.
Los mètodos se llaman exactamente igual y pueden comportarse de manera distinta en clases diferentes, al concepto también se le conoce como "Redefinición"
- Polimorfismo: Consiste en hacer que un objeto de una clase se comporte como un objeto de cualquiera de sus subclases, dependiendo de la forma de llamar a los métodos de dicha clase o subclases.
- Todas las subclases contienen los componentes de todas las clases existentes entre ellas mismas y el nodo raíz del arbol de herencia. La visibilidad de un componente no puede ser cambiada nunca.
- La adición REDEFINITION se usa en las sentencia METHODS para redefinir un método público o protegido dependiente de instancia en una subclase y hacer que realice una función más especializada.
- Cuando se redefine un método no se puede cambiar su interface, el método mantiene el mismo nombre y la misma interface de parámetros, pero tiene una nueva implementación. Cuando se redefine un método en una subclase, las declaraciones e implementaciones no se ven afectados en un método de una superclase.
- La implementación de la redefinición en la subclase 'oculta' la implementación original en la superclase.
- Cualquier referencia que apunte a un objeto de la subclase usa el método redefinido, incluso si la referencia fue definida con referencia a la superclase. También aplica para la referncia a sí mismo me->.
- Llamada al método M2 utilizando la auto referencia ME: CALL METHOD [ME->]M2.
- Dentro de un método redefinido se puede usar la referencia SUPER-> para acceder al método 'oculto'. Esto permite usar la funcionalidad existente en el método de la superclase sin tener que codificarla de nuevo en la subclase.
 
 
 
Sobre el autor
Publicación académica de Gustavo Alberto Ramirez Franco, en su ámbito de estudios para la Carrera Consultor ABAP.
Gustavo Alberto Ramirez Franco
Profesión: Ingeniero en Sistemas Computacionales - Mexico - Legajo: TA38Q
✒️Autor de: 38 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Gustavo Ramirez