✒️ABAP Las propiedades de la programación orientada a objetos
ABAP Las propiedades de la programación orientada a objetos
LAS PROPIEDADES DE LA PROGRAMACION ORIENTADA A OBJETOS
Encapsulación: también conocida como "ocultamiento". 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 tiene una interface que determina la manera de actuar con él. La implementación del objeto es encapsulada, es decir, que desde fuera el objeto es invisible, simplemente se usa. En la definición de una clase, hay que tener cuidado en el diseño de 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 tiene que declarar ningún atributo público. También se puede proteger de los cambios usando “READ-ONLY”.
Herencia: Es la capacidad que tiene una clase de heredar las propiedades y métodos de otra clase. Permite crear una nueva clase a partir de una existente, heredando la nueva clase sus propiedades. Se realiza añadiendo “INHERETING FROM” en la sentencia de definición de la clase. La nueva clase, subclase, hereda todos los componentes de la clase padre, superclase. Si no se añade contenido a la subclase, ésta contendrá los mismos componentes que la superclase. Solo los componentes públicos y protegidos de la superclase son visibles a la subclase, mientras que los privados no son visibles. Cada clase trabaja con sus propios componentes privados, por lo que la subclase puede contener los mismos nombres en sus componentes privados que los componentes privados de la superclase. Los métodos heredados usan atributos privados de la superclase, no utilizan ningún componente privado de la subclase con el mismo nombre.
NOTA: Especialización: Relación en donde una clase, la subclase, hereda todas las principales características de otra clase, la superclase. Si se invierte el punto de vista, la superclase hereda las características de la subclase, se hablará de generalización. Si la superclase no tiene parte privada, la subclase es una réplica de la superclase. Se pueden 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 puede tener una superclase de la cual es subclase.
- Múltiple: Una clase hereda de varias superclases.(No se usa en ABAP)
El nodo raíz de todos los arboles de herencia en los objetos es la clase predefinida vacía OBJECT. Es la más general de todas ya que no contienen ni atributos ni métodos. Cuando se define una nueva clase no se tiene que especificar explícitamente esta clase como superclase, 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.
NOTA: Una clase abstracta es un tipo especial de clase que no se puede instanciar. Solo se puede crear una instancia de las subclases de la clase abstracta, si éstas no son abstractas. Una clase abstracta no se puede instanciar. En la definición de la clase, con la palabra clave “ABSTRACT” se define una clase abstracta. Una clase final es la última en el árbol de clases y no puede tener herencia. Para indicar a una clase que no se puede heredar de ella, se indica en la definición de la clase la palabra “FINAL”.
Polimorfismo: o "redefinición": son métodos que se llaman exactamente igual, pueden comportarse de manera distinta en clases diferentes. 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 de herencia. La visibilidad de un componente no puede ser cambiada nunca. Se puede usar la palabra clave “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, mantiene todo y cambia la implementación. Declaración e implementación no se ven afectadas cuando se realiza una redefinición. 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 a la referencia a sí mismo “me->”. Si el método M1 de una superclase contiene una llamada “CALL METHOD [ME->]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. 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 Felipe Estepa Quintero, en su ámbito de estudios para la Carrera Consultor ABAP.
Felipe Estepa Quintero
Profesión: Tecnologo en Gestion Logistica - Colombia - Legajo: QH16V
✒️Autor de: 118 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Felipe Estepa