• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2019

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

Copied!
5
0
0

Texto

(1)

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.

(2)

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)

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]

(4)

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.

(5)

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ê-estudá-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.pdf> 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

Referências

Documentos relacionados

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

Fita 1 Lado A - O entrevistado faz um resumo sobre o histórico da relação entre sua família e a região na qual está localizada a Fazenda Santo Inácio; diz que a Fazenda

Apesar dos esforços para reduzir os níveis de emissão de poluentes ao longo das últimas décadas na região da cidade de Cubatão, as concentrações dos poluentes

Os métodos clássicos de determinação dos coeficientes, que possuem boa qualidade de estimativa e grande estabili- dade, têm alto custo computacional no problema de super-resolução;

Plantio: Março (sementes), outubro e novembro (estacas) Característica botânica: Planta subarbustiva, perene.. Os ramos são

O fato da contagem total de hemócitos no experimento com o agroquímico Talcord não ter sido diferente significativamente entre o controle e os dois tratamentos onde os

Após a colheita, normalmente é necessário aguar- dar alguns dias, cerca de 10 a 15 dias dependendo da cultivar e das condições meteorológicas, para que a pele dos tubérculos continue

Para preparar a pimenta branca, as espigas são colhidas quando os frutos apresentam a coloração amarelada ou vermelha. As espigas são colocadas em sacos de plástico trançado sem