
• Las Propiedades de la Programación Orientada a Objetos La Programación Orientada a Objetos (POO) en ABAP se fundamenta en tres propiedades esenciales que definen cómo se estructuran y se comportan los objetos, contribuyendo a un diseño de software robusto y flexible. Estas propiedades son la encapsulación, la herencia y el polimorfismo, que controlan la visibilidad, la reutilización y el comportamiento adaptable del código.
â—¦ Encapsulación: Una propiedad fundamental que gestiona la visibilidad de los componentes de un objeto, ocultando su implementación interna.
â—¦ Herencia: Permite a las clases nuevas adquirir características y funciones de clases ya existentes, promoviendo la reutilización del código.
â—¦ Polimorfismo: Habilita que métodos con el mismo nombre se comporten de manera particular en distintas clases, ofreciendo flexibilidad en la ejecución.
• Encapsulación La encapsulación, también conocida como "ocultamiento", se refiere a la capacidad de los objetos de restringir el acceso directo a sus recursos internos, como atributos y métodos, desde el exterior. La interacción con un objeto se realiza únicamente a través de su interfaz pública, manteniendo su implementación interna oculta. Es crucial diseñar las clases con la menor cantidad posible de componentes públicos, especialmente en clases globales, ya que estos son difíciles de modificar una vez liberados. Para una encapsulación completa, no se deben declarar atributos públicos, y la adición READ-ONLY puede proteger los atributos de cambios externos. Las tres áreas de visibilidad de una clase (pública, protegida y privada) son la base de la encapsulación.
â—¦ Secciones o áreas de visibilidad de una clase: Las divisiones (pública, protegida, privada) que determinan qué partes de la clase son accesibles desde fuera o desde clases relacionadas.
• Herencia La herencia es la capacidad de una clase de derivar una nueva clase a partir de una existente, adquiriendo automáticamente sus propiedades y métodos. La clase original se denomina superclase, y la nueva clase es la subclase. Esta relación se establece en ABAP utilizando la adición INHERITING FROM en la definición de la clase. La subclase hereda todos los componentes de la superclase, pero solo los públicos y protegidos son directamente visibles, mientras que los privados, aunque existen, no son accesibles. Cada clase gestiona sus propios componentes privados, y los métodos heredados siempre utilizan los atributos privados de su propia superclase. La herencia crea una estructura jerárquica tipo árbol, donde la especialización aumenta hacia abajo y la clase OBJECT es la raíz de todos los árboles de herencia en ABAP.
â—¦ Tipos de Herencia: Son las diferentes formas en que una clase puede adquirir propiedades de otra u otras, siendo simple o múltiple.
â–ª Simple: Una subclase solo hereda de una única superclase, aunque una superclase puede tener muchas subclases.
â–ª Múltiple: Una clase puede heredar de varias superclases, combinando sus propiedades.
• Polimorfismo El polimorfismo, también conocido como "Redefinición", permite que métodos con el mismo nombre se comporten de diferentes maneras en distintas clases. Esto significa que un objeto de una clase puede ser tratado como un objeto de cualquiera de sus subclases, y el método invocado se adaptará a la implementación específica de la subclase. Para lograr esto, un método público o protegido dependiente de instancia puede ser redefinido en una subclase usando la adición REDEFINITION. Al redefinir, la interfaz del método (nombre y parámetros) debe permanecer idéntica, pero su implementación interna es modificada para ofrecer una funcionalidad más especializada. La redefinición "oculta" la implementación original de la superclase, lo que implica que cualquier referencia que apunte a un objeto de la subclase ejecutará el método redefinido. Dentro de un método redefinido, es posible acceder a la implementación original de la superclase usando la referencia SUPER->. Un ejemplo clásico es un método CARGAR_NAFTA que se redefine para CAMION, BARCO y AVION, cada uno con su lógica específica.
â—¦ Redefinición: Proceso mediante el cual una subclase proporciona una implementación específica para un método heredado, sin cambiar su firma, para adaptar su comportamiento.