segunda-feira, 12 de dezembro de 2011

Conceitos da Programação Orientada a Objetos (POO)

As linguagens orientadas a objetos são baseadas em 3 conceitos fundamentais: encapsulamento, herança e polimorfismo. Embora se possa escrever código em Delphi sem entender as características principais da POO, para dominar perfeitamente este ambiente eles são imprescindíveis. 

Classes e Objetos

Classe: é um tipo de dado definido pelo usuário que possui um estado e algumas operações. Sendo assim é possível descrever as características genéricas e também o comportamento de objetos que sejam semelhantes.

Objeto: é uma instância de uma classe ou uma variável do tipo de dado definido pela classe.
No Delphi, parte da POO é implementada pelo ambiente de desenvolvimento visual, pois para cada formulário criado, é definida automaticamente uma nova classe. Além disso, todo componente incluído visualmente no formulário é um objeto de um tipo de classe.
Por exemplo, considere a tela do Windows como um conjunto de objetos. O formulário do ambiente Delphi é um conjunto de objetos (componentes). Dessa forma, a barra de status, a barra de ferramentas, os botões e as janelas são objetos.

Propriedades, Eventos e Métodos

Em nível de programação, os objetos existentes no ambiente Delphi:

Propriedades: Conjuntos de características do objeto tanto em nível de aparência quanto em estado. Por exemplo, a janela tem como propriedade estar maximizada ou minimizada.

Eventos: São os comportamentos ou ações que o objeto pode vir a sofrer. Por exemplo, um formulário pode ser criado, mostrado, clicado, fechado, arrastado e etc.

Métodos: Definem as habilidades dos objetos. A ação só ocorre quando o método é invocado através do objeto, podendo ser um procedimento ou uma função. Os métodos em uma classe são apenas definições. 

Herança, Polimorfismo e Encapsulamento

Herança: é a característica de herdar ou aproveitar, por exemplo, os métodos de uma classe em outra classe. A utilização de herança faz com que se evite a repetição de código de programa, ou seja, pode-se definir um novo tipo de classe a partir de uma classe já existente.

Polimorfismo: é a capacidade que um objeto tem de assumir outras formas. Desta maneira, é possível fazer que uma mesma variável faça referência a vários objetos de classes diferentes.

Encapsulamento: é o recurso que separa a forma de fazer da interface. Por exemplo, em um carro, certo fabricante decide alterar como os faróis são ligados, alterando algumas características internas a fim de obter um menor consumo de energia. Entretanto é conveniente ainda manter o botão no painel do veículo para ligar estes faróis. Desta forma as modificações feitas pelo fabricante não irão prejudicar a interface entre o motorista (usuário) e os faróis. Este exemplo ilustra a idéia de encapsulamento, você deixa visível apenas os aspectos externos do objeto, possibilitando alterar os detalhes da implementação do objeto, a fim de uma melhor performance, a qualquer momento do projeto não interferindo em nada nos programas que utilizam este mesmo objeto.

Nenhum comentário:

Postar um comentário