✒️ABAP Las propiedades de la programación orientada a objetos
ABAP Las propiedades de la programación orientada a objetos
LAS PROPIEDADES DE LA PROGRAMACIÓN ORIENTADA A OBJETOS
Existen tres propiedades fundamentales que presentan los objetos. Ellas son:
- Encapsulación
- Herencia
- Polimorfismo
LA ENCAPSULACIÓN
También conocido como "ocultamiento" se refiere a que todos los objetos restringen la visibilidad de sus recursos (atributos y métodos) al resto de los usuarios.
Las tres áreas de visibilidad (pública, privada y protegida) son la base de la encapsulación.
Cada objeto posee una interfase que determina la manera de interactuar con él. La implementación del objeto (su interior) es encapsulada, lo que quiere decir que desde afuera el objeto es invisible, simplemente se usa.
Cuando se define una clase hay que tener mucho cuidado en el diseño de los componentes públicos, intentando declarar tan pocos como sea posible. Los componentes públicos de las clases globales no pueden ser cambiados una vez que se ha liberado la clase.
Por ejemplo, los atributos públicos son visibles externamente y forman parte de la interface entre un objeto y sus usuarios. Si se quiere encapsular el estado de un objeto completamente no se tiene que declarar ningún atributo público. Además de definir la visibilidad de un atributo, se puede proteger también de los cambios usando la adición READ-ONLY.
LA HERENCIA
Es la capacidad que tiene una clase de heredar las propiedades y métodos de otra clase.
La herencia permite crear una nueva 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 GROM (superclass).
La nueva clase hereda todos los componentes de la clase ya existente.
La clase original se conoce como la superclase de la nueva clase que será la subclase.
Sino se añade ninguna declaración a la subclase, esta contiene los mismos componentes que la superclase. De cualquier manera, sólo los componentes públicos y protegidos de la superclase son visibles a la subclase. Aunque los componentes privados de la superclase existen en la subclase, no son visibles.
Se pueden declarar componentes privados en una subclase que tengan los mismos nombres que 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 características de otra clase, la superclase. Si invertimos el punto de vista, es decir, la superclase hereda las características de la subclase entonces hablaremos de Generalización. Si la superclase no tiene una sección a parte 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 está introduciendo un nuevo nivel de especialización.
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.
- MÚLTIPLE: 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 nivel jerárquico que se añada. A la inversa, las clases se hacen más generales hasta que se alcanza el nodo raíz del árbol de herencia.
El nodo raíz de todos los árboles de herencia en los objetos ABAP es la clase predefinida vacía OBJECT.
Esta es la más general de todas las clases posibles ya que no contiene ni atributos ni métodos.
Cuando se define una nueva clase no se tiene que especificar explícitamente esta clase como superclase, esta relación está definida implícitamente.
Dentro de un árbol de herencia, dos nodos adyacentes son la superclase y la subclase directamente uno de otro. Las declaraciones de componentes en una subclase están distribuidas a través de todos los niveles 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 class. Las clases abstractas no puede ser instanciadas, un método final no puede ser redefinido en una subclase. Las clases finales no pueden tener subclases, son las que finalizan el árbol de herencia.
EL POLIMORFISMO
Significa que métodos que se llaman exactamente igual pueden comportarse de manera distinta en clases diferentes. También se lo conoce como "Redefinición".
Dicho de otra forma, el polimorfismo consiste en conseguir 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 árbol de herencia. La visibilidad de un componente no puede ser cambiada nunca.
En cambio se puede usar la adición REDEFINITION en la 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. La declaración y la implementación de un método en una superclase no se ve afectada cuando se redefine un método en una subclase.
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. Esto se aplica particularmente a la referencia en sí mismo me.
Si por ejemplo un método M1 de una superclase contiene una llamada:
CALL METHOD (ME -Z)M2.
Y M2 está redefinido en una subclase, la llamada a M1 desde una instancia de la superclase hará que el método original M2 sea llamado, mientras que la llamada a M1 desde una instancia de la subclase hará que el método redefinido M2 sea llamado (llaman a "distintos" métodos aunque tengan el mismo nombre).
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.
El caso por excelencia en donde se aplica el polimorfismo o la redefinición es cuando tenemos una clase y una subclase y ambas tienen definido un mismo método, pero cada una de ellas presenta una declaración particular del método, adaptando a sus propias necesidades.
 
 
 
Sobre el autor
Publicación académica de Ducelvis Lolimar Arcia Cova, en su ámbito de estudios para la Carrera Consultor ABAP.
Ducelvis Lolimar Arcia Cova
Profesión: Tsu Relaciones Industriales (rrii) - Argentina - Legajo: WX74T
✒️Autor de: 125 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP FI Nivel Inicial
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Mi principal objetivo al comenzar esta gran experiencia educativa en programación abap es adquirir los conocimientos y competencias necesarias para incorporarme en el ámbito laboral en esta área.
Certificación Académica de Ducelvis Arcia