Paradigma da Orientação a Objetos
Paradigma de Objetos
A Orientação a Objetos é uma evolução da Análise e
Programação Estruturada e se estabeleceu como novo modelo de desenvolvimento de
software. A diferença entre as duas abordagens é, na verdade, uma mudança de
paradigma que envolve análise, projeto e programação. O paradigma da Orientação
a Objetos tem suas bases conceituais e origem no campo de estudo da cognição. A
forma de pensar e modelar, um problema e sua solução, migra de um modelo
baseado em processos para um modelo baseado em componentes.
Conforme Morris e Brandon (1994),
“Os paradigmas influenciam nossa percepção, ajudando a organizar e coordenar a
maneira como olhamos o mundo.” Quando dizemos que houve uma mudança de
paradigma, queremos dizer, literalmente, que houve a necessidade de alterar a
forma como traduzíamos os problemas do mundo real para aplicativos de software
(SCHEID, Silvana Furlan. POO – Paradigma da Programação. <http://infmtcdeolho.blogspot.com.br/2013/02/poo-paradigma-da-programacao.html>.
Acesso em 23 de fevereiro de 2013).
A grande dificuldade em se compreender a Orientação a
Objetos é a diferença de abordagem do problema. Um exemplo bastante difundido sobre
isso é a análise da frase: O navio atraca no porto e descarrega sua
carga. Analisando de forma estruturada, pensamos nas ações que estão sendo
realizadas e em como transformá-las em procedimentos: atracar no porto e
descarregar a carga - ou seja, pensamos
nos verbos. Analisando de forma orientada a objetos pensamos primeiro nos
objetos: o navio, o porto e a carga; ou seja, pensamos nos substantivos, como
eles seriam, quais os seus comportamentos e como eles interagiriam.
Na análise estruturada a ênfase está nos verbos; na análise
orientada a objetos, a ênfase está nos substantivos. Essa mudança aparentemente
simples é, de início, um grande desafio para os desenvolvedores experientes que
tem de migrar da análise estruturada a para a orientação a objetos. Têm-se que
esquecer anos de prática analisando problemas de forma estruturada para
reaprender a analisá-los de forma orientada a objetos.
Na orientação a objetos funções e dados estão juntos,
formando os objetos. Esse conceito acompanha todo o clico de desenvolvimento de
software.
Vantagens da Orientação a Objetos
A criação deste novo modelo foi motivada pela crescente
complexidade e dificuldade de manutenção dos softwares. Como uma evolução da
Análise Estruturada, a Orientação a Objetos mantêm alguns conceitos da Análise
e Desenvolvimento Estruturado mas implementa nova abordagem e novos conceitos e
ferramentas que trazem várias vantagens. Entre elas:
1.
Reduz a complexidade no desenvolvimento de
software: componentes complexos podem ser construído a partir de componentes já
existentes;
2.
Aumenta a produtividade: a criação de
bibliotecas torna efetivo o compartilhamento e a reutilização de código;
pode-se utilizar bibliotecas de terceiros especialmente desenhadas para dar
suporte a programadores menos sofisticados.
3.
Fornece sensível redução de custo na manutenção
de software - onde reside o maior custo do software: a independência entre as
classes ajuda no processo de manutenção;
4.
Reduz o gap
semântico: é mais fácil pensar e falar em objetos do que em funções e procedimentos,
pois o conceito de objetos está mais próximo do mundo real. Isso facilita a
conversa entre o analista e o usuário. Além disso, análise, projeto e
implementação usam o mesmo paradigma.
5.
Torna possível o desenvolvimento e a manutenção
eficiente de software mais complexos: a complexidade cada dia maior dos
sistemas, levou a um ponto em que, programas muito complexos tornam-se
impossíveis de se manter dentro do paradigma estruturado;
Isso não significa, contudo, que a análise estruturada tenha
sido abandonada. Existe muito código ainda desenvolvido em linguagens
estruturadas como: C; Cobol; Pascal, etc. Além disso, para problemas mais
simples, a análise estrutura é mais adequada que a análise orientada a objetos.
Problemas na Orientação a Objetos
A Orientação a Objetos carrega alguns problemas:
1.
Os fundamentos teóricos da OO não são simples.
Vemos, na prática, muito código escrito de forma estruturada dentro de
linguagens orientadas a objetos justamente pela dificuldade que os
desenvolvedores tem de desenvolver as habilidades de análise, projeto e
programação orientados a objetos.
2.
A maioria dos bancos de dados não são orientados
a objetos. Dentre aqueles que se dizem orientados a objetos a maioria não é
totalmente orientada a objetos, implementando apenas alguns conceitos como a
herança.
3.
As abordagens de OO podem ser múltiplas; fazendo
com não haja um padrão.
4.
Algumas vezes não é possível decompor problemas
do mundo real em uma hierarquia de classes. Negócios e pessoas têm frequentemente
regras de operações sobre objetos que desafiam uma hierarquia limpa e uma
decomposição orientada a objetos. O paradigma de objetos não trata bem de
problemas que requerem limites nebulosos e regras dinâmicas para a
classificação de objetos.
Futuro
Um dos aspectos mais fascinantes da informática é que se
está sempre buscando novas formas de melhorar e facilitar o desenvolvimento de
software. A Xerox percebeu alguns problemas na Programação Orientada a Objetos
e seu engenheiro Gregor Kiczales, junto com sua equipe, elaborou uma nova
evolução: A Programação Orientada a Aspecto ou POA (veja um pouco mais em: http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_orientada_a_aspecto).
Mas deixemos esse assunto para um outro post.
Referências e Bibliografia
MORRIS, Daniel;
BRANDON, Joel. Reengenharia: reestruturando sua empresa. São Paulo: Makron,
1994.
ORIENTAÇÃO A OBJETOS. In: WIKIPÉDIA, a enciclopédia
livre. Flórida: Wikimedia Foundation, 2013. Disponível em: <http://pt.wikipedia.org/w/index.php?title=Orienta%C3%A7%C3%A3o_a_objetos&oldid=34180773>.
Acesso em: 24 fev. 2013.