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



Documentos relacionados
1.1. Definição do Problema

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

Algoritmos e Programação II

Qualidade de Produto. Maria Cláudia F. P. Emer

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Montadores e Compiladores

O SOFTWARE LIVRE COMO FERRAMENTA DE ENSINO

Programação de Computadores - I. Profª Beatriz Profº Israel

Introdução. Qualidade de Produto. Introdução. Introdução ISO/IEC Normas

Linguagens e Técnicas de Programação II

Linguagens de Programação:

Programação de Computadores I. Linguagem C Função

LINHAS MESTRAS; FASES; DISCIPLINAS; PRINCÍPIOS E MELHORES PRÁTICAS.

SISTEMA DE CONTROLE DE MOVIMENTAÇÃO DE COLABORADORES

Backup. O que é um backup?

TESTANDO MAIS PARA DEPURAR MENOS: OS BENEFICIOS DOS TESTES PARA O DESENVOLVIMENTO DE SOFTWARE

PESQUISA OPERACIONAL: NA TOMADA DE DECISÕES ADMINISTRATIVA

Interpretações de Qualidade de Software. Interpretações de Qualidade de Software. Aspectos Importantes das Definições de Qualidade

Processo de Desenvolvimento de Software

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

UTILIZAÇÃO DE ARQUITETURA EM CAMADAS BASEADA NO MODEL VIEW CONTROLLER, EM APLICAÇÕES WEB

2 MATERIAL E MÉTODOS

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo 6 - Threads

ATENDIMENTO. Item 2.4- Concorrência:

NORMA TÉCNICA E PROCEDIMENTOS PARA REALIZAR ALTERAÇÕES NO BANCO DE DADOS CORPORATIVO

Engenharia de Software. Ciclos de Vida do Software. 1. Sistemas

GESTÃO DA MANUTENÇÃO

Linguagens e Paradigmas de Programação

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

Termo genérico que se aplica a vários tipos de diagramas que enfatizam interações de objetos.

Capítulo 3: Qualidade de Produto e a ISO 9126

Requisitos de Software

de rede são comumente utilizadas nos dias de hoje. Um dos grandes desafios para a tecnologia de redes sem fio no momento é o handoff vertical, onde

O SOFTWARE R EM AULAS DE MATEMÁTICA

Avaliação da Satisfação do Cliente de Informática

7. Defina encapsulamento. R.: Encapsular é ocultar. Criar uma cápsula ao redor da classe, para proteger o que está dentro dela.

Orientação a Objetos

INE 5323 Banco de Dados I

COMPUTAÇÃO. O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD:

Título : B1 INTRODUÇÃO. Conteúdo : INTRODUÇÃO

2. Tipos Abstratos de Dados

Projeto Integrador Gestão em TI II Gestão em Pessoas. Organograma DIRETOR DEPARTAMENTO DE T.I ANALISTA TÉCNICO

INTRODUÇÃO A CONTABILIDADE

PROGRAMAÇÃO ORIENTADA A OBJETOS -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

BANCO DE DADOS. Professor: André Dutton

Algoritmo e Pseudo-código

Programação em JAVA. Subtítulo

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Tipos de Banco de Dados - Apresentação

Herança. Prof. Leonardo Barreto Campos 1

Guia de Procedimentos Bloco C (SPED PIS/COFINS) Introdução... 2

Público Alvo: Empresas de micro e pequeno porte do setor de Tecnologia da Informação.

Programação Orientada a Objetos

Curso de Sistemas de Informação 8º período Disciplina: Tópicos Especiais Professor: José Maurício S. Pinheiro V

Fundamentos de Arquitetura e Organização de Computadores

3. Numerar a coluna da direita conforme a da esquerda 1) Classe (2) :Aluno 2) Um dado objeto (3) oaluno:aluno 3) Objeto (1) Aluno

Programação Orientada a Objetos

Jornada do CFO 2015 A caminho da transparência

FUNÇÃO DESENVOLVER PESSOAS:

LÓGICA E ROBÓTICA PRIMEIRAS IMPRESSÕES

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Algoritmo e Lógica de Programação. Conceitos de Linguagens de Programação

Gerenciamento de Integração. Prof. Anderson Valadares

Introdução a Banco de Dados. INTRODUÇÃO

Documento de Requisitos do Sistema SISFOTO Sistema de gerenciamento de eventos fotográficos Versão 1.0

CTIC - Centro de Pesquisa e Desenvolvimento em Tecnologias. Digitais para Informação e Comunicação CHAMADA DE PROJETOS. Computação em Nuvem

Universidade Paulista

Arquitetura de Computadores Sistemas Operacionais I

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Informática na Educação

Avaliação dos serviços da Biblioteca Central da UEFS: pesquisa de satisfação do usuário

3 Informações para Coordenação da Execução de Testes

BIBLIOTECA PARA CAPTURA DE PACOTES VISANDO ANÁLISE DO NÍVEL DE APLICAÇÃO

APOSTILHA AULA 4 O CICLO DE VIDA DO PROJETO

Formação WEB com PHP. Subtítulo

Exemplo, ao invés de você ter centenas de funções no mesmo contexto para atividades diferentes, você agrupa em objetos com comportamentos semelhantes

Seminário - Qualidade de Software/Testes de Software

TEORIA DAS FILAS COMO TÉCNICA MATEMÁTICA PARA REPRESENTAR O COMPORTAMENTO DE UMA SOLUÇÃO DE INTEGRAÇÃO EMPRESARIAL 1

SUMÁRIO PARTE I. Princípios de Projeto, a Linguagem de Modelagem Unificada (Unified Modeling Language, ou UML) e Projeto em Nível de Código

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Sistemas Distribuídos Apresentação da disciplina e proposta didática Prof. MSc Hugo Vieira L. Souza

Documento de Processo

Exame de Equivalência à Frequência do Ensino Secundário

Sistemas de Tempo Real

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

BANCO DE DADOS I AULA 2. Willamys Araújo willamysaraujo7@gmail.com

OpenPDV: Sistema aberto para gerenciamento de restaurantes

Plataforma Mercer 360

Relatório Técnico: Descrição do algoritmo para pesquisa automática dos egressos do curso de Ciência da Computação

Linux e Computação Científica

MODELAGEM MATEMÁTICA DE UM SISTEMA DE DISTRIBUIÇÃO DE ENERGIA ELÉTRICA EM MÉDIA TENSÃO 1. Gabriel Attuati 2, Paulo Sausen 3.

Sistemas de Informação para Bibliotecas

SUAS E AS DESIGUALDADES REGIONAIS: GESTÃO E FINANCIAMENTO REGIÃO CENTRO-OESTE. RIO VERDE, 03 e 04 de abril de 2013

Transcrição:

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 as linguagens.

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 (forwhile 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 seus usuários.

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.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 IRWIN, John, et al. Aspect Oriented Programming. Proceeding of ECOOP 97, Finland: Springer - Verlag,1997.