Programação Orientada a Objetos

Programação orientada a objetos (OOP) é programar basicamente focada em dados, enquanto dados e comportamento estão inseparavelmente ligados. Juntos, dados e comportamento, constituem uma classe, enquanto objetos são instâncias de classe.

Os componentes da abordagem orientada a objetos são:

OOP considera computação como modelagem de comportamento. O item modelado é o objeto representado pelas abstrações computacionais. Suponha que nós quiséssemos escrever "Tetris", um jogo bem conhecido. Para fazer isso, nós devemos aprender como modelar a aparência de uma forma aleatórias compostas de quatro quadrados ligados nas bordas. Também nós precisaríamos regular a velocidade de queda das figuras e definir operações de rotação e deslocamento. A movimentação das formas na tela é limitada pelas bordas da peça, este requerimento também deve ser modelado. Além disso, linhas preenchidas de cubos devem ser destruídas e pontos conseguidos devem ser contados.

Assim, este jogo de fácil entendimento requer a criação de vários modelos - modelo de forma, modelo de peça, modelo de movimentação da figura, e assim por diante. Todas estes modelos são abstrações, representadas por cálculos no computador. Para descrever estes modelos, o conceito de Tipo de Dados Abstratos, ADT (tipo de dados complexos), é usado. Estritamente falando, o modelo do movimento das "formas" no jogo não é um tipo de dado, mas é um conjunto de operações sobre o tipo de dado "forma", usando as restrições do tipo de dado "peça".

Objetos são variáveis de classe. A programação orientada a objetos permite a você facilmente criar e usar ADT. A programação orientada a objetos usa o mecanismo de herança. O benefício da herança está no fato de permitir obter tipos derivados a partir de tipos de dados já definidos por um usuário.

Por exemplo, para criar formas Tetris, é conveniente primeiro criar uma classe base Forma. As outras classes representando todos os sete possíveis tipos de forma podem ser derivadas desta base. O comportamento das figuras é definido na classe base, enquanto que a implementação do comportamento de cada figura separada é definida em classes derivadas.

Em OOP, objetos são responsáveis por seu comportamento. O desenvolvedor de ADT deve incluir um código para descrever qualquer comportamento que normalmente seria esperado dos objetos correspondentes. O fato do objeto ser responsável por seu comportamento, simplifica enormemente a tarefa de programação deste objeto pelo usuário.

Se quiséssemos desenhar uma figura na tela, precisaríamos conhecer onde o centro desta figura estaria e como desenhá-la. Se um forma separada sabe como se desenhar, o programador deve enviar uma mensagem de "desenhe" ao usar tal forma.

A linguagem MQL5 é semelhante ao C++, e ela também tem mecanismos de encapsulamento para a implementação de ADT. Por um lado, o encapsulamento esconde os detalhes internos da implementação de um tipo particular, e por outro lado, torna acessível externamente funções que podem influenciar objetos deste tipo. Detalhes de implementação podem ser inacessíveis a um programa que usa este tipo.

 

O conceito de OOP tem um conjunto de conceitos relacionados, incluindo o seguinte:

  • Simulação de ações do mundo real
  • Tipos de dados definidos pelo usuário
  • Ocultamente de detalhes de implementação
  • Possibilidade de reutilização de código através de herança
  • Interpretação de chamadas de função durante execução

Alguns destes conceitos são bastante vagos, alguns são abstratos, outros são gerais.