You are on page 1of 18

O paradigma de Orientao a Objetos

Em geral, na POO, ns criamos programas a partir de um ou mais objetos. Cada objeto pode se comunicar com outros objetos para prover a lgica e a funcionalidade complexas que os programas de hoje requerem. Esta forma de comunicao objeto-a-objeto denominada de troca de mensagens.

Mandar uma mensagem, na prtica ativar os mtodos dos objetos. Cada um destes mtodos, tipicamente, altera o estado interno de um objeto. O estado de um objeto representado pelas variveis definidas na prpria classe.

Os objetos so criados de acordo com os mtodos e as variveis definidos em uma determinada classe. Uma classe como um modelo para seus objetos, e todos os objetos que so construdos a partir de certa classe compartilham as mesmas caractersticas bsicas.

Entretanto, cada objeto mantm seu prprio estado; dois objetam da mesma classe so independentes entre si. Fazendo-se uma analogia: Se voc criar duas variveis inteiras x e y, ambas compartilham as mesmas caractersticas bsicas. Entretanto, embora compartilhem as mesmas caractersticas bsicas, no so as mesmas.

Mudando-se o valor de x, nada acontece como o valor de y. So variveis separadas com seus prprios valores particulares, embora sejam da mesma natureza bsica (tipo inteiro). Para um objeto o conceito exatamente o mesmo: todos os objetos so baseados em um tipo particular (uma definio de classe).

Um exemplo so objetos da classe String: todos tm as mesmas caractersticas (so seqncias de caracteres) e compartilham do mesmo comportamento (converter todos os caracteres para maisculos ou minsculos, pesquisar a acorrncia de substrings, etc). Todo este comportamento comum definido na classe String; contudo, pode certamente haver dois objetos String na memria com valores completamente diferentes.

Objetos do Mundo-Real O conceito de objetos e classes na programao bastante similar ao que acontece no mundo real. O mundo est cheio dos tipos de coisas, tais como lmpadas, cadeiras, e livros. Estes so conceitos abstratos porque so somente um tipo de coisa.

Naturalmente, o mundo est tambm cheio de exemplos particulares desses tipos. com estes exemplos particulares dos tipos abstratos que ns interagimos diariamente. Afinal, no na idia de cadeira que voc se senta; em uma realizao efetiva de uma cadeira!

Olhe em torno de si e ter vrios exemplos: um livro, uma cadeira, uma lmpada... voc mesmo... todos podem ser considerados objetos particulares. Cada objeto uma entidade nica com caractersticas especficas; cada um deles tem um conjunto de aes associadas a ele. Aquelas aes so anlogas aos mtodos que voc cria em uma definio de classe em Java.

Considere uma lmpada... Como voc descreveria uma lmpada a algum que no a conhece? Voc pode dizer o que a compe: um bulbo, um invlucro, uma base, um cabo de fora, e um interruptor. Voc pode descrever o que ela faz: fornece luz quando o interruptor este ligado.

Esta no uma definio perfeita, mas captura a composio bsica de uma lmpada e d uma idia simples de sua finalidade. Considere agora a sua lmpada: ela compartilha a maioria das caractersticas da lmpada genrica, mas (por exemplo), esse lmpada tem potncia de 50W, um invlucro transparente, uma base cermica, um bulbo three-way, etc. Esses detalhes especficos so o estado de sua lmpada, que provavelmente diferente do estado de outras lmpadas.

As lmpadas particulares so instncias diferentes do mesmo tipo abstrato. Na linguagem Java, o tipo abstrato da lmpada seria uma definio da classe: a lmpada A e a lmpada B, com seu prprio estado particular, seriam objetos diferentes baseados na classe lmpada.

Diferena importante: Uma classe um tipo abstrato; um objeto uma realizao desse tipo. Os objetos, uma vez criados, so independentes uns dos outros.

Cada objeto est ligado a uma referncia particular (basicamente o endereo de memria desse objeto).

Alterar o estado de um objeto no altera o estado de todos os objetos da mesma classe porque cada referncia est apontando um objeto diferente.

Outro ponto dessa analogia: Considere sua lmpada: como ela trabalha? Como a eletricidade chega ao filamento do bulbo? Como o filamento produz a luz? Como o interruptor controla o fluxo da eletricidade? Embora sejam questes interessantes, voc no necessita saber todos esses detalhes para operar a lmpada.

Se voc deseja ligar a lmpada do quarto voc encontra o interruptor, e pronto! A questo : o funcionamento interno da lmpada no indispensvel para seu uso. A lmpada esconde de voc os detalhes de funcionamento e prov uma interface padro simples, que permite que voc a use.

Objetos de software tambm escondem detalhes. Estes, em geral, podem ser vistos como "caixas pretas" porque os detalhes de como o objeto funciona no so evidentes. Ao invs disso, chama-se um mtodo, e esse mtodo cuida dos detalhes. Uma classe bem projetada fornece uma interface padro, composta dos mtodos pblicos que voc invoca.

Tudo o que acontece em seguida a essa invocao concerne ao objeto. O objeto tem autonomia de processamento. O que importa para voc so os resultados da chamada do mtodo, no como ele trabalha. Este conceito chamado encapsulamento. Encapsulamento tambm referido como ocultao de informao, e uma parte essencial de um bom projeto de objetos.

You might also like