5. - Programación orientada a objetos
5.1. - Introducción a la programación orientada a objetos
5.1.1. - ¿Qué es la programación orientada a objetos?
Es un método de desarrollo de software basado en el comportamiento de los objetos en el mundo real. No es un lenguaje especifico, sino una forma de programar, una manera de plantearse las programación.
Con la POO hay que aprender a pensar las cosas de una manera distinta, para describir los programas en términos de objetos, propiedades, métodos y otros conceptos.
Los objetos en ABAP son un conjunto de sentencias orientadas a objetos que han sido introducidas dentro del lenguaje ABAP a partir de la versión 4.0.
Los conceptos de orientación a objetos de los objetos ABAP son esencialmente los mismos de otros lenguajes como C o Java. Algunos conceptos no provechosos, no se incluyeron en los objetos ABAP.
5.1.2. - ¿Cómo se piensa en la POO?
Es muy parecido a la vida real. En el ejemplo de un coche, éste es el elemento principal y tiene una serie de características, como el color, el modelo o la marca. El coche tiene una serie de funcionalidades asociadas, como ponerse en marcha o parar.
En POO el coche sería el objeto, las propiedades serían las características y los métodos serían las funcionalidades.
Los POO utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios.
5.1.3. - Conceptos clave de la POO
Objetos clave POO
1. Objeto
a. Es una porción de código fuente que contiene datos y proporciona servicios.
b. Se usan para modelar objetos o entidades del mundo real
c. Es la representación en un programa de un concepto y contiene toda la información necesaria para abstraerlo
i. Datos que describen sus atributos y operaciones que pueden realizarse sobre ellos mismos
d. Los datos constituyen los atributos del objeto.
e. Los servicios que proporciona el objeto se conoce como métodos.
i. Generalmente, los métodos operan con los datos privados del objeto, con datos que son solo visibles para los métodos del objeto
f. Los atributos de un objeto no pueden ser cambiados directamente por el usuario del objeto. Solo pueden ser cambiados por los métodos del objeto.
2. Clase
a. Es un conjunto de objetos que tienen la misma estructura y comportamiento
b. Es una serie de código que define a todos los elementos relacionados con ella.
i. La palabra “Ave” es un ejemplo de una clase, ya que define un grupo de animales con una serie de características comunes
ii. En la clase “Ave” se podrían definir todas las características que tienen las aves (pico, color, alto, ancho, patas).
1. Estas características, se denominan atributos.
iii. Las aves también tienen ciertos mecanismos específicos (comer, dormir, reproducirse).
1. Estos mecanismos se denominan métodos.
iv. Las aves reaccionan ante ciertos sucesos (peligro, atracción, defensa).
1. Estos sucesos se denominan eventos.
3. Instancia
a. Es un objeto de una clase en particular creado en tiempo de ejecución.
b. Una clase simboliza la definición de un objeto, pero no es el objeto en sí. Se necesita convertir una idea en algo, un objeto real.
c. En cada creación de una nueva instancia, ésta adquiere atributos, métodos y eventos de la clase a la que pertenezca, sin embargo, cada instancia es independiente de otras. Tiene dos ventajas:
i. Si hay cambios en la clase, todas las instancias de esta clase se actualizarán automáticamente.
1. Esto permite hacer cambios sin tener que ir a cada una de las instancias.
ii. Al ser independientes de otras instancias, se pueden dar valores diferentes sin que afecte a las demás. Aunque comparten estructura, pueden programarse individualmente dando versatilidad y flexibilidad.
5.1.4. - Principales ventajas de POO
Ventajas
1. Sistemas de software muy complejos se vuelven más simples de comprender, debido a que POO proporciona una representación más cercana a la realidad.
2. En un sistema diseñado con POO es posible realizar cambios a nivel de la clase, sin tener que realizar cambios en otro punto del sistema.
3. A través del polimorfismo y la herencia es posible la reutilización de componentes individuales.
4. La cantidad de trabajo en revisión y mantenimiento del sistema se reduce, debido a que muchos problemas pueden ser detectados y corregidos en la fase de diseño.
5. Facilita el trabajo en equipo.