✒️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
Existen tres propiedades fundamentales que presentan los objetos. Ellas son:
Encapsulación
Herencia
Polimorfismo
2° Encapsulación:
Tambien conocido como "Ocultamiento", se refiere a que todos los objetos restrigen la visibilidad de sus recursos (Atributos y metodos) al resto de los usuarios.
Las tres areas de visibilidad (publica privada y protegida) son la base de la encapsulacion.
Cada objeto posee una interfase que determina la manera de interactuar con él, La implementacion del objeto (su interior) es encapsulada, lo que quiere decir que desde fuera el objeto es invisible, simplemente se usa.
Cuando se define una clase hay que tener mucho cuidado en el diseño de los componentes publico, intentando declarar tan pocos como sea posible. Los componentes publicos de las clases globales no pueden ser cambiados una vez que se ha liberado la clase.
Por ejemplo, los atributos publicos 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 nigun atributo publico. Ademas de definir la visibilidad de un atributo, se puede proteger tambien de los cambias usando la adicion READ-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 nueva clase a partir de una existente, heredando la nueva clase sus propiedades. Esto se realiza añadiendo la adiccion INHERITTING FROM a la sentencia de definición de la clase:
CLASS <subclass> DEFINITION INHERITING FROM <superclass>.
La nueva clase hereda todos los componentes de la clase ya existente.
lsuperclass = clase original
subclase = nueva clase.
Si no se añade ninguna declaracion a la subclase, esta contiene los mismo componentes de 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 perivados de la superclase y no ningún componente privado de la subclase con el mismo nombre.
Veamos un ejemplo:
CLASS vehiculo DEFINITION.
...........
CLASS vehiculo IMPLEMENTATION.
..............
CLASS BISICLETA DEFINITION INHERITING FROM vehiculo.
.........
Tipos de Herencia: (2)
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.
clase 1
|
clase 2 <- -> Clase 3
Multiple: una clase hereda de varias superclase
clase c1 clase c2
|
CLASE C3
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 jerarquico que se añada. A la inversa, las clases se hacen mas generales hasta que se alcanza el nodo raíz de árbol de herencia .
El nodo raíz de todos los arboles de herencia en los objetos abap es la clase predefinida vacia OBJECT.
Esta es la mas 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 explictamente esta clase como superclase, esta relacion esta definida implicitamente.
Dentro de un árbol de herencia, dos nodos edyacentes son la superclase y la subclase directamente uno de otro. Las declaraciones de componentes en una subclase estan distribuidas a traves de todos los niveles superiores en el arbol de herencia.
4° Polimorfismo:
Significa que métodos que se llaman exactamente igual pueden comportarse de manera distinta en clases diferentes. Tambien se lo conoce como Redefinicion.
Dicho de otra forma, el polimorfismo consiste en conseguir que un objeto de una clase se comparte como un objeto de cualquier de sus subclases, dependiendo de la forma de llamar a los metodos de dicha clase o sublcases.
Todas las subclases contienen los componentes de todas las clases existentes entre ellas mismas y el nodo raiz del arbol de herencia. La visibilidad de un comoponente no podemos ser cambiada nunca.
El cambio se puede usar la adicion REDEFINITION en la sentencia METHODS para redefinir un metodo publico o protegido dependiente de instancia en una subclase y hacer que realice una guncion mas especializada.
Veamos un ejemplo:
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS. set....
increment,
get....
........................
CLASS counter IMPLEMENTATION............
.......................
CLASS counter_ten DEFINITION INHERITING FROM counter.
PUBLIC SECTION
METHODS increment REDEFINITION.
......
Cuando se redefine un metodo no se puede cambiar su interface, el metodo matiene el mismo nombre y la misma interface de parametros, pero tiene una nueva implementacion. La declaracion y la implementacion de un metodo en una superclase no se ve afectada cuando se redefine un metodo en una subclase.
La implementacion de la redefinicion de la subclase "oculta" la implementación original en la superclase.
Cualquier referencia que apunte a un objeto de la subclase usa el metodo redefinido, incluso si la referencia fue definida con referencia a la superclase. Esto se aplica particularmente a la referencia a si mismo me->.
Si por ejemplo el M1 de una superclase contiene una llamada:
CALL METHOD [ME->]M2
Y M2 esta redefinido en una sublase, la llama a M1 desde una instancia de la superclase hara que el metodo original M2 sea llamado, mientras que la llamada a M1 desde la instancia de la subclase hara que el metodo redefinido M2 sea llamado (llaman
Dentro de un metodo redefinido se puede usar la referencia SUPER-> para acceder al metodo oculto. Esto permite usar la funcionalidad existente en el metodo de la superclase sin tener que codificarla de nuevo en la subclase.
------------------------------------
En caso por exelencia en donde se aplica el polimorfismo o la redefinicion es cuando tenemos una clase y una subclase y ambas tienen definido un mismo metodo, pero cada una de ellas presenta una declaracion particular del metodo, adaptado a sus propias necesidades.
Por ejemplo supongamos que tenemos la clase VEHICULO y la subclases CAMION, BARCO y AVION.
En la clase VEHICULO podemos tener definido en el mpetodo CARGAR_NAFTA y luego en cada subclase tendremos una implementacon particular del método. ya que no es exactamente lo mismo cargar nafta en el camion, en un barco o en un avion.
 
 
 
Sobre el autor
Publicación académica de Matias Giorgieff, en su ámbito de estudios para la Carrera Consultor ABAP.
Matias Giorgieff
Profesión: Programador Jr - Chile - Legajo: RA71X
✒️Autor de: 24 Publicaciones Académicas
🎓Cursando Actualmente: Master Funcional para Consultores ABAP
🎓Egresado de los módulos:
Certificación Académica de Matias Giorgieff