En los últimos años la frase “orientada
a objetos”, se ha vuelto muy popular, escuchándose a cada momento frases como
sistemas “operativos orientados a objetos”, “lenguajes orientados a objetos”,
“programación orientada a objetos” (POO), etc. Sin embargo, el concepto ya tiene un tiempo de aproximadamente 25 años.
En esta parte se dará a conocer los principales conceptos más íntimamente
relacionados con la POO, así como la forma de implementarlos en C++.
Se hará mención de los conceptos
generales más utilizados en el modelo orientado a objetos, los cuales son: abstracción, encapsulación y modularidad. Y con respecto a
programación, son: objeto, clase,
método, envío y recepción de mensajes, herencia y polimorfismo.
*ABSTRACCIÓN:
Es una descripción o especificación
simplificada de un sistema que hace énfasis en algunos detalles significativos
y suprime los irrelevantes.
La abstracción debe enfocarse más en
qué es un objeto y qué hace antes, de pensar en la implementación. Por ejemplo,
un automóvil puede abstraerse como un objeto que sirve para desplazarse a mayor
velocidad, sin importar cómo lo haga.
*ENCAPSULAMIENTO:
Típicamente, la
información acerca de un objeto está encapsulada por su comportamiento. Esto significa que un objeto mantiene datos acerca de
cosas del mundo real a las que representa en su sentido verdadero.
Típicamente a un
objeto se le debe “pedir” o “decir” que cambie sus propios datos con un
mensaje, en vez de esperar que tales datos de procesos extremos cambien la
naturaleza de un objeto.
*MODULARIDAD:
*CLASES Y
OBJETOS:
El estado de un objeto abarca todas
las propiedades o características distintivas del mismo y los valores de cada
una de estas propiedades. En términos de programación, puede decirse que las
propiedades son las variables que sirven para describir tal objeto.
El
comportamiento es la forma como actúa o reacciona un objeto en términos de
cambio de estado, envío y recepción de
mensajes. Está formado por la definición de las operaciones (funciones y
procedimientos) que puede realizar este objeto. Los tipos más comunes de
operaciones, o en POO métodos, son: modificar, seleccionar, iterar, construir y
destruir. El conjunto de operaciones que un objeto puede realizar sobre otro,
se conoce como protocolo.
*HERENCIA:
La herencia es la contribución más importante de la POO, pues
mediante este mecanismo es posible lograr la principal meta de la POO que es la
reutilización de código.
La herencia permite proporcionar una
jerarquía de clases. En tal jerarquía, algunas clases son subordinadas a otras
llamadas subclases, o como en C++, clases derivadas. Una subclase define el
comportamiento de un conjunto de objetos que heredan algunas de las
características de la clase padre, pero adquieren características especiales no
compartidas por el padre, en este sentido se dice que la subclase es una
especialización de la clase padre.
*POLIMORFISMO:
Otro de los mecanismos
aportados por la POO es el de polimorfismo,
el cual es la capacidad de tener métodos con el mismo nombre pero que su
implementación sea diferente. En la vida
diaria se presenta el siguiente ejemplo de polimorfismo: al tratar de frenar
un vehículo siempre se debe oprimir el pedal del lado izquierdo y el vehículo
se detendrá sin importar si los frenos son de tambor o de disco.