Sunday, February 24, 2013

Paradigma da Orientação a Objetos


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


LASKOSKI, Jackson; Programação Orientada a Objetos. Em:  http://www.jack.eti.br/www/arquivos/apostilas/java/poo.pdf
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.

Search This Blog

About Me

My photo
Cristão, apaixonado por Deus. Consultor em Tecnologia da Informação