![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Las propiedades de la programación orientada a objetos
ABAP Las propiedades de la programación orientada a objetos
![ABAP Las propiedades de la programación orientada a objetos ABAP Las propiedades de la programación orientada a objetos](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/255.jpg)
Unidad 5: La programación Orientada a Objetos
Lección 4: Las propiedades de la POO
Existen tres propiedades importantes que presentan los objetos: Encapsulación, Herencia y Polimorfismo.
La encapsulación (ocultamiento):
Se refiere a que todos los objetos restringen la visibilidad de sus recursos (atributos y métodos) al resto de usuarios.
Las 3 áreas de visibilidad (pública, privada y protegida) son la base de la encapsulación.
Cada objeto tiene una interface que determina la mantera de interactuar con él. La implementación 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 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 por una vez que se liberó la clase.
Por ej: 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, no se tiene que declarar ningún atributo público. Además de definir la visibilidad de un atributo, se puede proteger de los cambios usando la adición READ-ONLY.
La herencia:
Es la capacidad que tiene una clase de heredar propiedades y métodos de otra clase.
Esta, permite crear una nueva clase a partir de una existente, heredando la nueva clase, sus propiedades. Esto se hace añadiendo la adición INHERITING FROM a la sentencia de definición de la clase:
La nueva clase hereda todos los componentes de la ya existente. Además, la clase original se conoce como "superclase" y la nueva clase será la "subclase".
Si no se añade ninguna declaración a la subclase, esta contiene los mismos componentes que la superclase. De cualquier forma, solo 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 son 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 atributos privados de la superclase y ningún componente privado de la subclase con el mismo nombre.
Ej:
Tipos de herencia:
- Simple: una clase puede tener + de una subclase de las cuales e superclase, pero solo puede tener una superclase de la cual es subclase.
- Múltiple: una clase hereda varias superclases.
Cuando una subclase hereda de una superclase que a la vez hereda de otra superclase de la cual es subclase, se forma un árbol, en el cual el grado de especialización aumenta con cada lvl 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 arbol de herencia.
El nodo raíz de todos los árboles de herencia en los objetos es la clase predefinida vacía OBJECT.
Esta es la más general de todas las clases posibles, ya que no tiene atributos ni métodos.
Cuando se define una nueva clase, no se tiene que especificar esá clase como superclase, esta relación está definida implícitamente.
Dentro de un árbol de herencia, dos nodos adyacentes son superclase y la subclase directamente uno de otro. Las declaraciones de componentes en una subclase están distribuidas por todos los lvl superiores en el árbol de herencia.
El polimorfismo (Redefinición):
Significa que métodos que se llaman igual, pueden comportarse de forma distinta en clases diferentes. Es decir, cosiste en conseguir que un objeto de una clase se comporte como un objeto de cualquier de sus subclases, dependiendo de la forma de llamar a los métodos de dicha clase o subclases.
Todas las subclases contienen 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 cambiado nunca. Pero 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 haga una función más especializada.
EJ:
Cuando se redefine un método no se puede cambiar su interface, el método mantiene el mismo nombre y la misma interface de param., pero tiene una nueva implementación.
La declaración e implementación de un método es una superclase que 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 a si mismo me->.
Si por ej un método M1 de una superclase contiene una llamada:
Y si M2 está redefinido en una subclase, la llamada 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 harpa 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.
 
 
 
Sobre el autor
Publicación académica de Candela Estefanía Calzada, en su ámbito de estudios para la Carrera Consultor ABAP.
Candela Estefanía Calzada
Profesión: Técnica Electrónica - Argentina - Legajo: JW91W
✒️Autor de: 160 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Me encuentro estudiando la ingeniería en sistemas de información. poseo amplia experiencia en edición de videos. tengo bases entorno a la programación que quiero continuar consolidando.
Certificación Académica de Candela Calzada