✒️ABAP Las propiedades de la programación orientada a objetos
ABAP Las propiedades de la programación orientada a objetos
PROPIEDADES DE LA PROGRAMACIÒN ORIENTADA A OBJETOS
1.- Las propiedades de la programaciòn orientada a objetos.
- Encapsulaciòn
- Herencia
- Polimorfismo.
2.- Encapsulaciòn:
Tambièn conocida como "ocultamiento", se refiere a que todos los objetos restringen la visibilidad de sus recursos (atributos y mètodos) al resto de usuarios.
Las tres àreas de visibilidad (pùblica, protegida y privada) 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 fuera el objeto es invisible, simplemente se usa.
CLASS c1 DEFINITION.
PUBLIC SECTION.
DATA: a1 ...
METHODS: m1 ...
EVENTS: e1 ...
PROTECTED SECTION.
DATA: a2 ...
METHODS: m2 ...
EVENTS: e2 ...
PRIVATE SECTION.
DATA: a3 ...
METHODS: m3 ...
EVENTS: e3 ...
ENDCLASS.
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 interfase 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.
3.- Herencia.
Es la propiedad 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 "subclase" DEFINITION INHERITING FROM "superclase".
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".
Si no 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.
Ejemplo:
CLASS vehiculo DEFINITION.
PUBLIC SECTION.
METHODS: aumentar:velocidad,
disminuir_velocidad.
PROTECTED SECTION.
DATA km TYPE i.
ENDCLASS.
CLASS vehiculo IMPLENETATION.
METHOD aumentar:velocidad.
ADD 10 TO km.
ENDMETHOD.
METHOD disminuir_velocidad.
substract 10 FROM km.
ENDMETHOD.
ENDCLASS.
CLASS bicicleta DEFINITION INHERITING FROM vehiculo.
PUBLIC SECTION.
DATA desgaste_camara(5) TYPE c.
ENDCLASS.
Denominaremos especializaciòn a la relaciòn en donde una clase la subclase hereda todas las principales 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 PRIVADA la subclase es una rèplica 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.
Tipo de Herencia.- Existen dos tipos:
- Simple: Una clase puede tener màs de una subclase de las cuales es superclase, pero sòlo pueden tener una superclase de la cuàl 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"
Es la màs general de todas las clases posibles ya que no contiene ni un 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 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 de el àrbol de herencia.
La adiciones ABSTRACT y FINALLY, en las sentencias METHOD 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 clase, Las clases abstractas no pueden ser instanciadas; un mètod final no puede ser redefinido en una subclase, las clases finales no pueden tener subclases, son las que finalizan el àrbol de herencia.
4.- Polimorfismo: Significa que mètodos que se llaman exactamente igual pueden comportarse de manera distinta en clases en clases diferentes.
Tambièn se lo conoce como "Redifiniciò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.
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PORTECTED SECTION.
DATA count TYPE i.
ENDCLASS.
CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.
CLASS counter DEFINITION INHERITING FROM counter.
PUBLIC SECTION.
METHODS incremente REDEFINITION.
DATA count_ten(1) TYPE c.
ENDCLASS.
Cuando se redefine un mètodo no se puede cambiar su ìnterface, el mètodo mantiene el mismo nombre 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 de una subclase.
La implementaciòn de la redefiniciòn en la subclase "oculta" la imlementaciò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 incluso si la referencia fue definida con referencia a la superclase. Esto se aplica particularmente a la referencia a sì mismo "me-/".
Si por ejemplo un 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 llamda a M1 desde una instancia de la subclase harà que el mètodo redefinido M2(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 clase.
En 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, adaptado a sus propias necesidades.
En la clase VEHICULO podemos tener definido el mètodo CARGAR_NAFTA y luego en cada subclase tendremos una implementaciòn particular del mètodo, ya que no es exactamente lo mismo cargar nafta en un CAMION, en un barco O EN UN avion.
 
 
 
Sobre el autor
Publicación académica de Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta