Definição de Programação Orientada A Objectos
No mundo da programação, orientação a objetos, trata-se de um novo paradigma no conceito de desenvolvimento de software. Deixa-se de lado a programação procedural, e passa-se a diagramar a aplicação no nível de interpretação. Esta metodologia introduz uma série de novas abordagens na programação, tais como atributos e classes, dentre outras diversidades que tornam por otimizar o nível de produção e manutenabilidade do desenvolvimento de sistemas.
Empecilho De Gerações Anteriores
Os primeiros estudos de POO (Programação Orientada a Objetos) se deram início na década de 60 no Instituto de Tecnologia de Massachusetts (MIT), Estados Unidos. A primeira linguagem de programação, diga-se orientada a objetos, chamada de Simula 67 fora desenvolvido por Kristen Nygaard e Ole-Johan Dahl. A ideia de associar elementos do sistema como objetos viriam a definitivamente mudar a era da programação.
Ainda assim, por muito tempo, a programação procedural perpetuou no desenvolvimento de software, já que muitas linguagens da época não ofereciam recursos da orientação a objetos. Além do mais, a tecnologia caminhava nos anos dourados enquanto nerds se preocupavam apenas em enriquecer seus bolsos no fenômeno conhecido como “bolha” no mundo dos negócios. O programador da época, diga-se de passagem, era considerado louco a ter que conviver horas vidrado no computador.
Não muito diferente nos dias de hoje, mas com alguns destaques a ignorar, tivemos aí diversos avanços no aperfeiçoamento ao que se diz na produção de códigos-fonte. Hoje, o desenvolvedor se depara com uma infinidade de ferramentas (IDEs) que integram fortemente a programação orientada a objetos. Além disso, surgiram novos recursos, como depuradores e testes unitários, que permitiram programar com mais segurança.
Figura 1 – Chacota dos programadores de décadas passadas.
Associação De Objetos Do Mundo Real Para Programação
Se no mundo real conseguimos distinguir um enumerado de coisas, tal como casa, carro, pessoa, árvore e por aí vai, concorda comigo que isso poderia ser perfeitamente adequado à programação? É neste propósito que se fundamenta a orientação a objetos. Damos características e meios de se obter informações destes objetos. Isso torna a lógica de programação intuitiva. Vamos nos divertir com esse pequeno estudo de caso:
Figura 2 – Características dos nossos objetos.
Certamente no mundo real não veríamos por aí um cachorro escritor, muito menos da cor amarela, mas isto nos serve de exemplo para dar continuidade neste artigo. Temos aqui um objeto animal que se difere em dois tipos: cachorro e ovelha. Por mais que cada um tenha suas particularidades, tal como um saber escrever e o outro não, ambos continuam sendo animais, e isso se denominariam o conceito de herança na orientação a objetos. Quais seriam as características destes animais? Podemos identificar a cor como característica base destes animais, entretanto, saber escrever já seria uma especialidade do nosso objeto cachorro. Tais características revelam o conceito de atributos, ou seja, propriedades de nossos objetos. Estamos indo bem! Já que os nossos objetos cachorro e ovelha, em nível de programação, se tratam de uma extensão do objeto animal, ambos podem correr correto? Implicitamente, uma das especialidades do cachorro é latir e da ovelha berrar. Todas estas atividades, que chamaremos a partir de então de operações, tratam se de métodos na orientação a objetos. Ok! Conseguimos identificar informações suficientes para criar este pequeno diagrama de objetos:
Figura 3 – Representação do nosso diagrama de classe.
Brincando De Programar
Como observado na figura 3, um cachorro automaticamente possui um atributo cor, além disso, ele pode correr, mas não pode berrar já que não se trata de um objeto ovelha. Da mesma forma, a ovelha não possui um atributo de saber escrever, mas possui um método de poder correr mais rápido que originalmente o objeto animal pode oferecer. Isto nos revela o conceito de sobrescrita de método na orientação a objetos.
Partindo para a lógica de programação, cada objeto se tornaria uma classe:
Figura 4 – Classe animal.
Figura 5 – Classe cachorro.
Figura 6 – Classe ovelha.
Não vamos entrar em muito detalhe na linguagem de programação utilizada, já que o conceito de orientação a objetos é aplicável a qualquer linguagem, mas aos curiosos, foi Java! Voltando ao ponto, nas classes desenvolvidas encontramos um novo conceito abrangido pela orientação a objetos: escopo de acesso aos atributos e métodos.
O acesso se classifica em três tipos:
- Privado: somente a classe original poderá acessar tais atributos e métodos.
- Protegido: além da classe original, classes herdadas poderão manipular também.
- Público: qualquer classe poderá manipular estes atributos e métodos.
Isso significa que se mudássemos o acesso do atributo cor de protected para private, tanto o objeto cachorro como ovelha, passariam a não manipular mais esta propriedade.
Por fim, poderíamos interpretar o seguinte código abaixo:
Figura 7 – “Instâncias” dos objetos ovelha e cachorro.
Fenomenal!
Por Onde Começar?
Como dito no tópico anterior, o conceito de orientação a objetos é comum à qualquer linguagem de programação. Se você chegou até aqui, parabéns! Você pode se aprofundar melhor nesta ótima metodologia de desenvolvimento clicando aqui.
Ainda assim, cada linguagem terá suas particularidades. O PHP, por exemplo, atualmente na versão 5.3, ainda não dá suporte a sobrescrita de método. Ou seja, independente de você entender o conceito de orientação a objetos, sempre, deverá ler a documentação da linguagem a respeito para saber melhor sobre como ela trabalha nesta questão.
Existem linguagens 100% orientada a objetos. É o caso do Java e do C#.
Já os frameworks, sempre serão orientados a objetos!
Configura alguns links que abordam a orientação a objetos das seguintes linguagens:
PHP
http://br.php.net/manual/pt_BR/language.oop5.php
C#
http://msdn.microsoft.com/pt-br/vcsharp/aa336809.aspx
Java
http://java.sun.com/docs/books/tutorial/java/concepts/
Phyton
http://docs.python.org/reference/
Ruby
http://www.ruby-doc.org/docs/ProgrammingRuby/
Considerações Finais
Sabemos que este artigo é pouco para abordar profundamente a orientação a objetos, mas isto é apenas uma introdução do que lhe espera, enfim, esperamos que este quinto artigo da série “ABC” lhe tenha sido útil. Lembramos que o foco dessa série é apenas conceituar os temas, artigos mais especializados do assunto surgirão na medida do possível. Sugestões, críticas e comentários sempre serão bem vindos!
Próximo artigo: Design Patterns, a chave dos seus problemas.
Referências Bibliográficas
The History of Object Oriented Programming.
http://www.exforsys.com/tutorials/oops/the-history-of-object-oriented-programming.html
Object-oriented sheep, running around in Ruby Shoes .
http://www.restafari.org/object-oriented-sheep-running-in-ruby-shoes.html
Object-oriented programming.
http://en.wikipedia.org/wiki/Object-oriented_programming
2 Responses
muito boa explicação para quem ta procurando entender POO..Obrigado.
Aí Flavio,o Robertinho me pediu para fazer um trabalho de PDF, usei seu comentário nele valeu !