quinta-feira, 5 de fevereiro de 2009

O que é a programação orientada por objectos??

A programação Orientada a objectos (POO) é uma forma especial de programar, mais próximo de como expressaríamos as coisas na vida real do que outros tipos de programação.
Com a POO temos que aprender a pensar as coisas de uma maneira distinta, para escrever os nossos programas em termos de objectos, propriedades, métodos e outras coisas que veremos rapidamente para esclarecer conceitos e dar uma pequena base que permita soltarmos um pouco com este tipo de programação.

Motivação

Durante anos, os programadores dedicaram se a construir aplicações muito parecidas que resolviam uma vez ou outra, os mesmo problemas.
Para conseguir que os esforços dos programadores podessem ser utilizados por outras pessoas foi criado a "POO".
Esta é uma série de normas para realizar as coisas de maneira com que outras pessoas possam utilizá-las e adiantar seu trabalho, de maneira que consigamos que o código possa ser reutilizado.
A POO não é difícil, mas é uma forma especial de pensar, às vezes subjectiva de quem a programa. A forma de fazer as coisas pode ser diferente segundo o programador. Embora possamos fazer os programas de formas distintas, nem todas elas são correctas, o difícil não é programar orientado a objetos e sim, programar bem.
Programar importante porque assim podemos aproveitar todas as vantagens da POO.

Como se pensa em objectos

Pensar em termos de objectos é muito parecido a como faríamos na vida real. Por exemplo, vamos pensar num carro para dar um modelo em um esquema de POO. Diríamos que o carro é o elemento principal que tem uma série de características, como poderiam ser a cor, o modelo ou a marca. E ainda tem uma série de funcionalidades associadas, como podem ser andar, parar ou estacionar.
Então num esquema POO o carro seria o objecto, as propriedades seriam as características como a cor ou o modelo e os métodos seriam as funcionalidades associadas como andar ou parar.
Outro exemplo, vamos ver como faríamos um modelo num esquema POO de uma fracção, ou seja, essa estrutura matemática que tem um numerador e um denominador que divide o numerador, por exemplo, 3/2.
A fracção será o objecto e terá duas propriedades, o numerador e o denominador. Logo, poderia ter vários métodos como simplificar, somar com outra fracção ou número, subtrair com outra fracção, etc.
Estes objectos poderão ser utilizados nos programas, por exemplo, num programa de matemática seria feito o uso de objectos fracção e num programa que providencie uma oficina de carros, seria utilizado o uso do objecto carro. Os programas Orientados a objectos utilizam muitos objectos para realizar as acções que se desejam realizar e eles mesmos também são objectos. Ou seja, a oficina de carros será um objecto que utilizará o objecto carro, ferramenta, mecânico, trocas, etc.

Classes em POO

As classes são declarações de objectos, também poderiam-se definir como abstracções de objectos. Isto quer dizer que a definição de um objecto é a classe. Quando programamos um objecto e definimos as suas características e as suas funcionalidades ,na verdade, o que estamos a fazer é programar uma classe. Nos exemplos anteriores, falávamos das classes carro ou fracção porque estivemos só a definir, embora por alto, as suas formas.

Propriedades das classes

As propriedades ou atributos são as características dos objectos.
Quando definimos uma propriedade normalmente especificamos seu nome e o seu tipo. Podemos ter a idéia de que as propriedades são algo assim como as variáveis onde armazenamos os dados relacionados com os objectos.

Métodos nas classes

São as funcionalidades associadas aos objectos.
Quando estamos a programar as classes, chamamos as de métodos. Os métodos são como funções que estão associadas a um objecto.

Objectos em POO

Os objectos são exemplares de uma classe qualquer.
Quando criamos um exemplar temos que especificar a classe a partir da qual sera criada. Esta acção de criar um objecto a partir de uma classe chama-se instance (que significa em inglês exemplificar).
Por exemplo, um objecto da classe fracção é por exemplo, 3/5. O conceito ou definição de fracção seria a classe, mas quando já estávamos falando de uma fracção em concreto 4/7, 8/1000 ou qualquer outra a chamamos de objecto.
Para criar um objeto temos que escrever uma instrução especial que possa ser distinta dependendo da linguagem de programação que se utilize, mas será algo parecido a isto.
meuCarro = new Carro()

Com a palavra "new" especificamos que tem que se criar uma instance da classe que continua a seguir. Dentro dos "( )" poderíamos colocar parâmetros com os quais se inicia o objecto da classe carro.

quarta-feira, 28 de janeiro de 2009

Estados em objectos

Quando temos um objecto, as suas propriedades ganham valores. Por exemplo, quando temos um carro a propriedade "cor" ganhará um valor mais concreto, como por exemplo, vermelho, cinza. O valor concreto de uma propriedade de um objecto chama-se estado.

Para aceder a um estado de um objecto para ver o seu valor ou mudá-lo, utiliza-se o operador "ponto".

meuCarro.cor = vermelho

O objecto é meuCarro, logo colocamos o operador ponto e por último o nome da propriedade a qual desejamos aceder. Neste exemplo, estamos a mudar o valor do estado da propriedade do objecto para vermelho com uma simples atribuição.

Mensagens em objectos

Uma mensagem num objecto é a acção de efectuar uma chamada a um método. Por exemplo, quando dizemos a um objecto "carro" para" andar", estamos a passar a mensagem "ande".

Para mandar mensagens a objectos, utilizamos o operador "ponto", seguido do método que desejamos utilizar.

meuCarro.andar()

Neste exemplo, passamos a mensagem andar(). Deve-se colocar "( )" assim como em qualquer chamada de uma função, onde iriam os parâmetros.

Outras coisas

Ainda há muito o que conhecer da POO, porque só fizemos referência ás coisas mais básicas. Também existem mecanismos como a herança e o polimorfismo que são umas das possibilidades mais potentes da POO.

A herança serve para criar objectos que incorporam propriedades e métodos de outros objectos. Assim, poderemos construir uns objectos a partir de outros sem ter que cria-lo todo de novo.

O polimorfismo serve para que não tenhamos que nos preocupar sobre o que estamos a trabalhar, e abstrairmos para definir um código que seja compatível com objectos de vários tipos.

São conceitos avançados que custa explicar nas linhas deste artigo. Não deve-se esquecer que existem livros inteiros dedicados à POO e aqui só pretendemos dar uma ideia a algumas coisas para que os lembrem quando tiverem que estar diante delas nas linguagens de programação que deve conhecer um programador de paginas web.