Programación orientada a objetos

Programación orientada a objetos (POO) es programación enfocada a los datos, siendo de notar que los datos y el comportamiento están vinculados indisolublemente entre si. Los datos juntamente con el comportamiento constituyen una clase, y los objetos son instancias de clases.

Los componentes de la programación orientada a objetos son los siguientes:

POO considera los cálculos como el modelado del comportamiento. Lo que se modela es un objeto representado por las abstracciones computacionales. Supongamos que queremos escribir el juego muy conocido a todos "Tetris", para eso tenemos que aprender a modelar la aparición de una figura aleatoria compuesta por cuatro cuadrados unidos juntos por sus bordes. Además, hace falta regular la velocidad de caída de esta figura, definir las operaciones de rotación y desplazamiento. En una pantalla los movimientos de figuras están limitados con los márgenes del área de juego, este requisito también debe ser modelado. Aparte de eso, las líneas completas deben desaparecer del vaso y hay que llevar la cuenta de puntos obtenidos durante el juego.

De esa manera, un juego tan fácil de comprender requiere la creación de varios modelos: modelo de pieza, modelo de vaso, modelo de movimiento dentro del vaso, etc. Todos estos modelos son unas abstracciones representadas por los cálculos en el ordenador. Para describir estos modelos se utiliza el concepto de tipo de dato abstracto, TDA (o tipo de dato compuesto). Hablando en rigor, el modelo de movimiento de una "figura" en el "vaso"  no es un tipo de datos, sino un conjunto de operaciones con los datos de tipo "figura" que utilizan limitaciones de datos de tipo "vaso".

Los objetos son variables de clase. Programación orientada a objetos permite crear y usar TDA de una manera fácil. Programación orientada a objetos utiliza el mecanismo de herencia. La ventaja de herencia consiste en el hecho de que se permite la obtención de tipos derivados de los tipos de datos ya definidos por el usuario. Así que, para crear figuras en tetris, para empezar, es más cómodo crear la clase base Shape, a base de la cual se obtienen los tipos derivados de siete posibles figuras de tetris. El comportamiento de las figuras está determinado en la clase base, mientras que en las derivadas se concreta la realización del comportamiento de cada una de las figuras.

En POO los objetos se hacen responsables de su comportamiento. El programador de TDA debe incluir en él un código para describir cualquier comportamiento que normalmente se puede esperar de los objetos correspondientes. El hecho de que el mismo objeto se responsabilice de su comportamiento facilita considerablemente la tarea de programación para cada usuario de este objeto.

Si queremos dibujar una figura en la pantalla, hemos de saber dónde va a estar su centro y cómo dibujarla. Si una figura separada entiende perfectamente como dibujar a si misma, el programador, al usar esta figura, solo debe enviar al objeto el mensaje "dibujar".

El lenguaje MQL5 es parecido al C++, y también dispone del mecanismo de encapsulación para implementación de TDA. Encapsulación reune en sí, por una parte, los detalles internos de implementación de un tipo en particular, y por otra parte, las funciones accesibles desde fuera que puedan influir sobre los objetos de este tipo. Los detalles de implementación pueden ser inaccesibles para el programa que utilice este tipo.

Un conjunto de conceptos tiene relación con el concepto de POO, incluyendo los siguientes:

  • Simulación de acciones del mundo real
  • Disponibilidad de tipos de datos definidos por el usuario
  • Ocultación de detalles de implementación
  • Posibilidad de usar el código varias veces gracias a la herencia
  • Interpretación de la llamada a la función durante la ejecución

 

Algunos de estos conceptos son bastante vagos, algunos son abstractos, otros son de carácter general.