quarta-feira, 14 de setembro de 2011

Em poucas Palavras. Orientação à Objetos

E ai pessoal! Eu Bruno venho aqui mais uma vez para tentar desmitificar o que é a bendita Orientação à Objetos que muito de vocês sei que possuem dúvidas sobre sua verdadeira identidade.


Vamos lá!
Orientação a objeto  é um conceito que esta relacionado com a idéia de classificar , organizar e abstrair coisas. Veja a definição formal:


"O termo orientação a objetos significa organizar  o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados. "
 
Vamos falar uma linguagem mas simples para isto vamos para um ambiente que você conhece bem: A sua casa !

Agora vamos olhar a sua estante , o seu guarda-roupa , o seu armário , a sua cozinha. Em todos estes lugares você classificou coisas no seu domínio e , somente de olhar para eles você já sabe relacionar a classificação que utilizou em cada um deles e como classificou as coisas que estão neste lugares.

Na estante você agrupou e organizou os livros , no guarda roupa suas camisas, calças , meias , ternos , etc. Todos os objetos que você classificou nestes lugares foram organizados baseado em alguma concepção que você possuía sobre eles.

No contexto orientado a objeto a estante , o armário , a cozinha são chamados de classes.

No contexto de software podemos dizer que :
Uma classe é um gabarito para a definição de objetos. Através da definição de uma classe, descreve-se que propriedades -- ou atributos -- o objeto terá.
Uma classe mantém dois elementos importantes : estrutura e comportamento.
  • Uma estrutura representa os atributos que descrevem a classe.
  • Um comportamento representa os serviços que a classe suporta.
Na 'classe' do seu guarda-roupa , uma camisa amarela pode ser colocada em uma outra classe. A 'classe' camisa.
  • Cada camisa tem uma estrutura que é : a textura , a cor , o tamanho e o modelo.
  • Cada camisa tem um comportamento que é : ordenar , rasgar , desbotar .
Se você concordar que existe uma classe camisa. Vai concordar que existem diversos tipos de camisas com suas características, ou seja , existem diversos objetos camisas que podem ser criados a partir da classe camisa. Daí temos o conceito de objetos:

O conceito de orientação a objetos é abordado desta mesma maneira sempre. No contexto do software podemos então dizer que :
É através de objetos que (praticamente) todo o processamento ocorre em aplicações desenvolvidas com linguagens de programação orientadas a objetos.
  • Primeiro você classifica e abstrai os elementos no sistema para proporcionar uma certa ordem, e, ao fazer isto você define uma classe ;
  • Feita a definição da classe você pode criar objetos desta classe. (instanciar)
Vou citar aqui o exemplo clássico da planta de uma casa.

- A Classe seria um gabarito (como uma planta de uma casa)
- O objeto é concretização do gabarito (casas feitas a partir da mesma planta)

Quando levamos estes conceitos para as linguagens de programação nada se altera.

Existem alguns conceitos básicos que estão vinculados ao conceito de orientação a objetos. São eles :
  • Herança
  • Encapsulamento
  • Polimorfismo
A herança permite implementar a funcionalidade a sua classe de tomar emprestado o resto da estrutura e comportamento de classes de nível mais alto.

Pensemos na classe carro.

Esta classe define os comportamentos e atributos de um carro; E existem atributos que serão comum a todos os carros.

As rodas e o motor são atributos comuns a qualquer carro. Já uma Ferrari possui atributos que somente ela possui : valor por exemplo

A definição formal seria:

Herança é um mecanismo que permite que características comuns a diversas classes sejam agrupadas em uma classe base, ou superclasse. A partir de uma classe base, outras classes podem ser especificadas. Cada classe derivada ou subclasse apresenta as características (estrutura e métodos) da classe base e acrescenta a elas o que for definido de particularidade para ela

Encapsular significa "ocultar informações"  ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona e oculta os detalhes internos sobre como ele executa os serviços.

Quando você acelera um carro você esta enviando uma mensagem ao motor do carro usando o acelerador e o carro sabe que tem que acelerar.

Você não precisa saber como é feita a aceleração no motor você apenas pisa fundo no acelerador , a implementação de como é feita a aceleração esta encapsulada do cliente.

Polimorfismo significa muitas formas , na orientação a objetos você pode enviar uma mesma mensagem para diferentes objetos e fazê-los responder da maneira correta. Você pode enviar a mensagem de dar marcha-ré para cada objeto semelhante a um carro e cada um vai se comportar de maneira diferente para atender a sua solicitação.

Uma definição mais formal diria:

"Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse"

Nenhum comentário:

Postar um comentário

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.