domingo, 29 de julho de 2007

Orientação a objetos

Orientação a objetos é o paradigma de programação por «simulação», ou seja, em vez de o programador pensar em procedimentos ou funções, ele usa o conceito de objetos, similares aos reais, que interagem entre si.

Cada objeto tem características próprias, executa procedimentos próprios e interage de uma maneira própria. Essa técnica também é chamada «programação antropomórfica» ou «programação por personificação».

Veja que não é necessário uma linguagem ou sintaxe com suporte a orientação a objetos, apenas que o programador seja capaz de pensar orientadamente a objetos. Porém uma linguagem ou sintaxe com suporte próprio ajuda bastante.

Na abordagem tradicional procedimental o foco da programação está nos procedimentos imperativos. Na programação funcional o foco está nas funções, passagem de parâmetros e tratamento de retorno.

Já na orientação a objetos o foco está nos objetos simulados e na interação entre eles.

Por exemplo, no famoso jogo da cobrinha, a cobra seria um objeto com características – tamanho por exemplo – e procedimentos – virar à esquerda, por exemplo. Outros objetos seriam a maça e as paredes.

A própria cobra é composta de secções, que por si são objetos com características – posição – e procedimentos – mudar a posição.

O jogo surge da interação entre os objetos.

As características de um objeto são chamadas atributos e os procedimentos métodos. Algumas linguagens permitem atributos especiais que executam métodos de forma transparente. Esses atributos são chamados propriedades.

Atributos e métodos usados para interagir com outros objetos são chamados interface.

Então orientação a objetos consiste em elaborar objetos similares a coisas físicas, com características próprias e uma interface, de forma a que da interação entre os objetos surja o resultado desejado.

Sintaxe


Não… não é da sintaxe de criação, comandos class e similares que vou falar.

Quero falar de como a sintaxe de uma linguagem deve ser para incitar a orientação a objetos.

Segundo Smalltalk, para uma perfeita orientação a objetos as instruções de um programa devem ser mensagens envidas a objetos.

Para incentivar a orientação a objetos é interessante que o primeiro elemento de uma mensagem seja o objeto chamado.

Por exemplo, fatorial de 5 em Perl (procedimental):
fatorial 5


Em Smalltalk:
5 fatorial


Em Perl, procedimental, é informado um procedimento – fatorial – a ser executado e é passado a esse procedimento o parâmetro 5.

Em Smalltalk, orientada a objetos, é informado um objeto – 5 – ao qual é passada a mensagem, dizendo para ele executar um método internamente.

Observação: em Haskell, linguagem funcional, não imperativa, a sintaxe seria, no caso em questão apenas, idêntica à de Perl, mas a lógica é diferente: é informada uma função matemática que necessita de um parâmetro. Ou seja, é diferente você dizer «execute esse comando» de «o resultado dessa função é».

Sintaxe ou paradigma?


É preciso se perguntar: «estou orientado a objetos ou estou usando uma linguagem que facilita orientação a objetos para programar sequencialmente?»

Não é pela linguagem ser orientada a objetos que o programa será. Também não é pela linguagem não ser orientada que o programa não será.

Programa é a representação de um algoritmo em uma linguagem determinada; se o algoritmo for orientado a objetos o programa também será, mas se o algoritmo não for, não faz diferença se a linguagem em si é ou não.

Aliás, muitos programadores deixam de estruturar por usar uma linguagem orientada a objetos, resultando em programas sequenciais.

Gente, muito cuidado no planejamento. Não confiem na linguagem para fazer tudo pra vocês.


Bem, está aí mais um artigo conceitual.

[]'s
Cacilhas
blog comments powered by Disqus