UMA ABORDAGEM SOBRE A EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO COM ÊNFASE EM ORIENTAÇÃO A OBJETO E ORIENTAÇÃO A ASPECTO

0
0
5
6 months ago
Preview
Full text

  

UMA ABORDAGEM SOBRE A EVOLUđấO DAS

LINGUAGENS DE PROGRAMAđấO COM ÊNFASE EM

ORIENTAđấO A OBJETO E ORIENTAđấO A ASPECTO

  

Anderson dos Santos Ferraz¹, Claudete Werner¹

  ¹Universidade Paranaense (Unipar) Paranavaí – PR – Brasil

  

ander_sferraz@hotmail.com

claudete@unipar.br

Resumo

  . Este artigo constitui uma abordagem sobre a evolução das

linguagens de programação, apresentando algumas informações relevantes

sobre os principais paradigmas existentes ao longo dos anos. A ênfase maior

estará nos paradigmas Orientado a Objeto e Orientado a Aspecto onde serão

discorridos uma quantidade maior de informações, além de uma comparação

de ambos os paradigmas.

1. Introdução

  Para que o computador execute um algoritmo, o mesmo deve ser escrito de uma forma que o processador esteja apto a executá-lo. A linguagem de programação entendida pelo computador é composta somente por números também conhecida como linguagem de máquina, desta forma, seria um trabalho extremamente difícil para o programador escrever algoritmos nesta linguagem, sendo assim, novas linguagens de programação foram sendo desenvolvidas ao longo dos anos para facilitar o processo de programação e escrita desses algoritmos. [MEDINA, 2005].

  As primeiras linguagens utilizadas no processo de desenvolvimento de software foram às linguagens Assembly também conhecida por linguagens de baixo nível devido a sua proximidade com a linguagem de máquina. Com o passar dos anos as linguagens não estruturadas foram ganhando espaço graças a sua semântica mais genérica e principalmente por permitir a portabilidade nos sistemas desenvolvidos com elas, porém, mesmo com todas essas vantagens existia a necessidade de linguagens de mais alto nível e com vários outros recursos.

  Surgem então às linguagens procedurais também consideradas de alto nível por se assemelhar com a linguagem natural, elas representaram um salto gigantesco no processo de desenvolvimento de software devido aos recursos oferecidos por elas, mas, como a busca pelo aperfeiçoamento da tecnologia da computação é um processo constante, as linguagens orientada a objeto vieram de encontro a essa realidade.

  Mesmo com inúmeras vantagens as linguagens orientada a objeto, ainda são ineficiente em determinadas situações. E para tentar solucionar esses problemas, surgem então as linguagens orientada a aspecto, não com o objetivo de substituir as linguagens orientada a objeto mais sim aperfeiçoá-las.

  Neste artigo abordaremos a evolução das linguagens de programação com um foco maior nos paradigmas orientado a objeto e orientado a aspecto, além de apresentar os resultados obtidos através do desenvolvimento de uma mesma aplicação em ambos

  2. Linguagens de Programação

  Abaixo serão apresentados os principais tipos de linguagens de programação:

  

Linguagens de Baixo Nível: São linguagens muito próximas da linguagem de máquina

  que é enviado ao processador para que o mesmo execute uma tarefa. Existem para cada processador pelo menos uma linguagem de baixo nível diferente e este conjunto de linguagens é conhecido de uma maneira geral por “Linguagem Assembly”. [GUDWIN, 1997]

  Devido ao fato de sua proximidade com a linguagem de máquina ser muito grande, para o programador era uma tarefa extremamente complexa e exigente, desenvolver sistemas que buscavam resolver problemas muito complexos.

  

Linguagens Não-Estruturadas: As linguagens Não-Estruturadas apresentam um

  grande avanço em relação às linguagens de baixo nível, pois os seus comandos não estão vinculados ao processador e sistema utilizados, permitindo desta forma seu uso em diferentes plataformas. Como sua semântica tornou-se mais genérica, permite ao programador realizar operações mais sofisticadas que são emuladas por seqüência de instrução mais simples em linguagem de máquina. [GUDWIN, 1997]

  Mesmo sendo superior a linguagem de baixo nível, este tipo de linguagem foi perdendo espaço com o aparecimento de linguagens mais sofisticadas como as linguagens procedurais, funcionais e orientada a objeto. Podemos citar como exemplo deste tipo de Linguagem o Cobol e o Basic.

  

Linguagens Procedurais: Essas linguagens de alto nível também são conhecidas como

  linguagens “estruturadas”, pois, ao contrario das linguagens Não-Estruturadas, as linguagens procedurais possuem estruturas de controle que entre outras coisas permitem o teste de condição (if – then – else), controle de repetição de blocos de código (for- while – do), fazem a seleção de alternativas (switch, case) e dividem o código do programa em módulos conhecidos também por funções ou procedimentos. [GUDWIN, 1997]

  As linguagens estruturadas são caracterizadas por possuir uma seqüência de chamada de procedimentos definida nos seus algoritmos. Três exemplos de linguagens procedurais são: C, Pascal, Fortan.

  Mesmo com todos esses recursos existia ainda a necessidade de uma linguagem que explorasse a máximo do potencial das novas tecnologias que viam surgindo na época, além da crise de software no final da década de 60 que buscava um linguagem que permitisse o desenvolvimento de sistemas complexos de uma forma confiável, tendo baixo custo na produção e manutenção caso houvesse necessidade.

  Neste Contexto surgem às linguagens orientada a Objeto assunto que abordaremos na próxima seção.

  3. Linguagens Orientada a Objeto

  Desenvolvida a partir do esforço de várias pessoas, a orientação a objetos não surgiu de uma hora para outra como a conhecemos atualmente e sim foi sendo aperfeiçoada ao longo dos anos pelo trabalho de inúmeros profissionais da área que se empenharão em projetar um paradigma de programação que solucionassem os problemas existentes no desenvolvimento de software da época que eram construir sistemas complexos de forma confiável com baixo custo de desenvolvimento e manutenção. [PAGE-JONES, 1997]

3.1 Principais conceitos da programação orientada a objeto

  A proposta deste paradigma é representar o mais fielmente possível às situações do mundo real nos sistemas computacionais, onde os softwares não são como uma coleção estruturada de processos e sim como uma coleção de objetos que interagem entre si. [FARINELLI, 2007]

  Para entendermos como essa representação acontece, precisamos conhecer os conceitos utilizados por este paradigma, sendo assim apresentaremos a seguir a definição dos principais conceitos da programação orientada a objeto:

  

Objeto: Esse termo segundo Farinelli é usado para representar um determinado

  elemento do mundo real. Um objeto é criado quando ele possui uma relevância para a solução de um determinado problema. Desta forma um objeto pode ser definido também como sendo um elemento do mundo real que merece representação para o ambiente estudado.

  Os objetos são instancias de classes, e são elas que possuem as informações que um objeto contém e quais os seus comportamentos. [FARINELLI, 2007] Podemos citar como exemplo de objetos um livro, animal, carro, cliente, vendedor entre outros.

  

Classes: Uma classe segundo o conceito de Farinelli representa um conjunto de objetos

  que possuam características e comportamentos em comum. Os objetos são criados a partir das características definidas pela classe, sendo eles atributos e métodos. Para entendermos melhor podemos tomar como exemplo um cachorro onde seus atributos seriam: nome, raça, cor dos pelos, cor dos olhos, tamanho, peso etc.

  Farinelli ainda que os métodos ou serviços são as ações que um determinado objeto pode realizar. Continuando com o exemplo do cachorro seriam: latir, correr, comer, dormir e assim por diante. Herança: Herança é um mecanismo que presente na orientação o objeto que permite a reutilização de uma estrutura e comportamento de uma classe para criar uma nova classe. [SOUZA, 2006]. Nesse caso a ajuda a não acontecer redundância de informação no código. Proporcionar a economia de código e tempo é uma vantagem muito marcante deste paradigma de programação.

  As linguagens orientada a objeto tornaram o processo de desenvolvimento de software muito mais prático, permitindo a implementação de sistemas complexos de uma forma mais confiável, porém existem determinadas situações em que a orientação a objeto, acaba não sendo a melhor opção de linguagem, pois as aplicações apresentam um grande entrelaçamento de código e um grau modularidade insatisfatório, sendo assim, como uma maneira de solucionar esse problema surgem as linguagens orientada a aspecto, que exploraremos mais na próxima seção.

4. Linguagens Orientada a Aspecto

  Desenvolvida no final da década de 1990, mais precisamente em 1997 em Palo Alto, nos laboratórios da Xerox a orientação a aspecto teve como um de seus objetivos, cumprir as promessas pendentes feitas pela orientação a objetos. A orientação a aspecto é um paradigma que estende a orientação a objeto, implementando e acrescentando novas abstrações ou recursos a fim de suprir deficiências na capacidade de representação de algumas situações. [GOETTEN, 2006]

  Esse paradigma foi desenvolvido com o objetivo de aperfeiçoar os conceitos, técnicas e recursos presentes na orientação a objeto, buscando torna-lo uma opção viável nas ocasiões em que a orientação a objeto deixar de atender as expectativas de

4.1 Composição de um Sistema Orientado a Aspecto

  

Linguagem de componente: A linguagem de componente deve permitir ao

  programador escrever programas que desenvolvam as funcionalidades básicas do sistema, ao mesmo tem que não provêem nada sobre do que deve ser implementado na linguagem de aspecto. [IRWIN, 1997] Ou seja, essa linguagem é voltada para resolver os problemas referentes ao negócio.

  

Linguagem de aspecto: A linguagem de aspecto proporciona o desenvolvimento de

  módulos com funcionalidades pra resolver problemas de infra-estrutura (arquitetônico) da aplicação. [HUGO, 2005] Essa linguagem é voltada totalmente para a parte de aspecto que será implementada, definindo o comportamento desses aspectos e também o momento em que eles são necessários.

  

Programas de componentes: é o arquivo fonte escrito em uma determinada linguagem

  de programação, onde o programador codifica as regras do negócio em classes, conforme analisadas na análise do projeto do software que está sendo desenvolvido. [HUGO, 2005] Nesses programas são implementados somente o que diz respeito ao negócio da aplicação.

  

Um ou mais programas de aspecto: é um arquivo fonte codificado em uma linguagem

  de aspecto. Existem algumas linguagens de aspecto voltadas a preocupações específicas, sendo assim, devem ser utilizadas múltiplas linguagens de aspecto, sendo uma para cada preocupação. [HUGO, 2005] Nestes arquivos fontes é que se encontram o comportamentos dos aspectos e a ocasiões em que eles são necessários.

  

Combinador de aspecto: A função deste componente é fazer a combinação entre os

  programas que contém as regras de negócio implementadas com os programas escritos em linguagem de aspecto. [HUGO, 2005] Ele realiza uma junção e combinação de ambos os códigos.

  5. Orientação a Objeto X Orientação a Aspecto

  Com a finalidade da realização de uma analise comparativa, foi desenvolvida uma aplicação computacional, submetida a ambos os paradigmas de programação, sendo eles a orientação a objeto e a orientação a aspectos.

  Através disso, observarmos que todas as funcionalidades de um software desenvolvidas utilizando as linguagens orientada a aspecto, podem também ser implementadas com as linguagens orientada a objeto, porém, podemos perceber que houve uma diminuição nas linhas de código e principalmente uma redução no entrelaçamento do código fonte de determinadas funcionalidades do sistema, fato que facilitará em futuras manutenções caso haja necessidade.

  Outro ponto que podemos observar é que o sistema em ambos os paradigmas manteve a mesma quantidade de classes, porém o software desenvolvido com a orientação a aspecto teve o acréscimo no numero de métodos e recursos próprios da linguagem como pointcuts, join points, aspectos entre outros.

  A escolha do paradigma de programação a ser utilizado no momento da implementação, está ligado aos resultados esperados para o sistema, se existe a necessidade de um código com um grau de modularidade melhor implementado, a orientação aspecto é mais indicado para o desenvolvimento do software.

  6. Metodologia

  Para a realização deste trabalho foram realizado pesquisa em livros, artigos científicos e sites que ofereciam conteúdo referente ao tema estudado.

7. Conclusão

  Ao desenvolvermos uma aplicação computacional nos paradigmas orientado a objeto e orientado a aspecto, percebemos que além da diminuição das linhas de código, o sistema passa a possuir um código fonte menos entrelaçado em determinadas funcionalidades. Outro fato que podemos observar é que em ambas as aplicações o numero de classes continua o mesmo, porém na orientação a aspecto o código ganha características próprias da linguagem como pointcuts, join points, aspectos entre outros.

  Quando um sistema a ser implementado exige um grau de modularidade melhor projetado e com pouco entrelaçamento do código fonte, a utilização de uma linguagem orientada a aspecto se faz uma ótima aliada do programador.

  São muitas as linguagens de programação existentes na área da computação e é fato que cada um possui características e particularidades, por isso, é necessário estudá- las e conhecê-las para que, no momento de decidir qual linguagem utilizar na hora de desenvolver um projeto, possamos fazer a melhor escolha.

  Referências MEDINA, Marco, FERTIG, Cristina Algoritmo e Programação: Teoria e Prática. 1.

  ed. São Paulo: Novatec, 2005. GUDWIN, Ricardo R. Linguagens de Programação. 1997. Disponível em: <ftp://ftp.dca.fee.unicamp.br/pub/docs/ea877/lingpro.pdf> Acessado em 13 abr 2013.

  PAGE-JONES, Meilir., FECCHIO, Mario M. O que todo Programador deveria saber

  sobre Projeto Orientado a Objeto. 1. ed. Sao Paulo: Makron Books, 1997

  SOUZA, Cleidson. Conceitos de Orientação a Objetos. 2006. Disponível em: <http:// www.ufpa.br/cdesouza/teaching/es/3-OO-concepts.pdf> Acessado em 07 mai 2013. FARINELLI, Fernanda. Conceitos básicos de programação orientada a objetos.

  2007. Disponível em:

  <http://sistemas.riopomba.ifsudestemg.edu.br/dcc/materiais/1662272077_POO Acessado em 14 mai 2013. GOETTEN, Vicente Junior, WINCK, Diogo V. AspectJ - Programação Orientada a Aspectos com Java. 1. ed. São Paulo: Novatec Editora, 2006. HUGO, Marcel., GROTT, Marcio Carlos. Estudo de caso aplicando programação

  orientada a Aspecto. 2005. Disponível em:

  < http://www.noginfo.com.br/arquivos/CC_TEC_07a.pdf > Acessado em 04 abr. 2013

  IRWIN, John, et al. Aspect – Oriented Programming. Proceeding of ECOOP’97, Finland: Springer - Verlag,1997.

Novo documento

RECENT ACTIVITIES

Tags