4.1 Conceitos de orientação a objetos

Orientação a objetos é um termo que descreve uma série de técnicas para estruturar soluções para problemas computacionais. No nosso caso específico, vamos falar de programação OO, que é um paradigma de programação no qual um programa é estruturado em objetos, e que enfatiza os aspectos abstração, encapsulamento, polimorfismo e herança12.

Convencionalmente, um programa tem um fluxo linear, seguindo por uma função principal (ou o corpo principal do programa, dependendo da linguagem de programação) que invoca funções auxiliares para executar certas tarefas à medida que for necessário. Em Python é perfeitamente possível programar desta forma, convencionalmente chamada de programação procedural.

Programas que utilizam conceitos OO, ao invés de definir funções independentes que são utilizadas em conjunto, dividem conceitualmente o `problema' (ou domínio13) em partes independentes (objetos), que podem conter atributos que os descrevem, e que implementam o comportamento do sistema através de funções definidas nestes objetos (métodos). Objetos (e seus métodos) fazem referência a outros objetos e métodos; o termo `envio de mensagens' é utilizado para descrever a comunicação que ocorre entre os métodos dos diferentes objetos.

Na prática, um programa orientado a objetos em Python pode ser descrito como um conjunto de classes -- tanto pré-definidas quanto definidas pelo usuário -- que possuem atributos e métodos, e que são instanciadas em objetos, durante a execução do programa. A seção seguinte concretiza estes conceitos com exemplos.



Notas de rodapé

... herança12
Mais detalhes sobre conceitos fundamentais de OO podem ser obtidos em http://en.wikipedia.org/wiki/Object-oriented_programming
...domínio13
O `problema' ou `domínio' de um software compreende o conjunto de tarefas essenciais que este deve realizar; por exemplo, o domínio de um editor de textos compreende escrever, corrigir e alterar documentos -- e um conceito fundamental, muito provavelmente modelado em uma classe OO, seria o Documento.