quinta-feira, 15 de novembro de 2007

AULA 2 PROGRAMAÇÃO ORIENTADA A OBJETO.....

Aula 2 – Programação Orientada à Objetos

Esta aula tem como objetivo apresentar os benefícios, os componentes e as técnicas da Programação Orientada à Objetos (POO).

2.1 – Benefícios

Dentre os benefícios da POO podemos indicar o aumento da produtividade e a extensão do ciclo de vida do projeto.

2.1.1 – Produtividade

Conforme se estende o tempo de vida do projeto é cada vez mais notável como a produtividade aumenta. Dentre as principais características da POO para aumentar a produtividade podemos citar:

2.1.1.1 – Reutilização de código

Com certeza a principal vantagem da POO é poder beneficiar-se da reutilização de código, uma vez escrito nunca será reescrito, no máximo modificado com o polimorfismo (explicação ainda nessa aula).

2.1.1.2 – Agregação de módulos prontos

Módulos podem ser agregados ao longo do projeto, mesmo tendo seu desenvolvimento separado do mesmo, simplesmente importamos suas funcionalidades e os utilizamos como se fossem implementados no mesmo.

2.1.1.3 – Servir de base à modelagem da base de dados

É considerada outra vantagem da programação orientada à objetos, tido que as modelagens são similares hoje em dia muitos projetos simplesmente persistem os objetos na base de dados.

2.1.1.4 – Menor custo de desenvolvimento

Como pudemos notar com essas técnicas podemos desenvolver cada vez mais por cada vez menos. Ao longo do tempo, muitos módulos já prontos serão agregados à novos projetos e muito código já escrito será reutilizado, aumentando assim a produtividade com o custo de desenvolvimento cada vez menor.

2.1.2 – Ciclo de vida maior

A POO oferece também técnicas para aumentar o ciclo de vida do projeto, dentre elas descanse:

2.1.2.1 – Expansividade

Com o poder de agregar módulos prontos ao projeto, torna-se notável o quesito de expansividade do mesmo, tornando assim maior seu ciclo de vida.

2.1.2.2 – Manutenção

Aqui está uma das maiores, se não a maior vantagem da POO, todos sabemos que os maiores custos de um projeto estão diretamente ligados com os custos de manutenção, mas na POO isso pode mudar drasticamente levando-se em conta que todas as técnicas da mesma se preocupam com esse critério.

2.2 – Componentes

Abaixo serão apresentadas os componentes que a POO implementa, com seus conceitos e alguns exemplos simples para melhor assimilação.

2.2.1 – Classe

Primeiramente vamos definir o conceito de Classe: generalização de atributos e ações de um grupo de objetos. Confuso não?

Por isso vamos fazer uma analogia de que uma classe nada mais é do que uma receita com os ingredientes e o modo de preparo para se fazer um bolo. Quando o bolo se torna feito, então teremos um Objeto. Outro exemplo de classe bastante usado é o de uma Pessoa, onde os atributos serão suas características e os métodos suas ações.

2.2.1.1 – Atributo

Tem-se como atributo uma característica da classe, lugar onde o objeto vai guardar informação. Seguindo a idéia da receita, são os ingredientes. Já na pessoa temos, por exemplo, nome, data de nascimento e sexo.

2.2.1.2 – Método

São as ações realizadas pela classe, o modo de preparo do bolo. Por exemplo, a classe pessoa temos os métodos andar, falar, sorrir.

2.2.2 – Objeto

É a instancia de uma classe, o bolo pronto. Outro exemplo bastante usado é o de uma pessoa, onde pessoa seria a classe e João o objeto.

2.2.3 – Interface

É um modelo para a classe. Voltando a nossa analogia da receita, poderíamos dizer que é uma receita sem os ingredientes, ou seja, uma classe somente com as declarações (nomes) dos métodos, que por sua vez serão implementados nas classes.

2.3 – Técnicas

Por fim as técnicas que propiciam à POO todos os seus benefícios.

2.3.1 – Herança

Herança é a capacidade de uma classe herdar as funcionalidades de outra. Vamos tomar como exemplo um sistema bancário, temos as classes Pessoa e Cliente.

O Cliente tem as mesmas funcionalidades de Pessoa, porém com algumas funcionalidades a mais. Sendo assim ao invés de reescrevermos todo o código de Pessoa em Cliente, simplesmente herdamos suas funcionalidades e poderemos usá-las normalmente, como se pertencessem à Cliente.

2.3.2 – Polimorfismo

Polimorfismo é a capacidade de métodos com mesmo nome tem de realizar rotinas diferentes devido à sua assinatura. Por exemplo, alguns métodos getEndereco da classe Pessoa.

Pessoa.getEndereco(Rua);

Pessoa.getEndereco(Rua, Numero);

Pessoa.getEndereco(Rua, Numero, Bairro);

Os três métodos têm o mesmo nome, porém com assinaturas diferentes, sendo assim quando chamarmos o método Pessoa.getEndereco(assinatura), a Java interpretará qual método chamar devido à sua assinatura (parâmetros).

2.3.3 – Encapsulamento

Encapsulamente consiste básicametne em restringir a visibilidade dos atributos para privado, ou seja, somente a classe poderá ver seus atributos, não sendo acessíveis à classes externas, as mesmas deverão somente acessar os métodos.


OBS: PROXIMA AULA SEMANA QUE VEM!!!