Universidade Federal de Santa Catarina
Centro Tecnológico
Departamento de Informática e Estatística
Sistemas de Informações
Prof. Antônio Augusto Fröhlich
Graduandos: Anna Carla Verner
Helder
Eugenio dos Santos Puia
Multi-paradigmas
em C++.
Florianópolis, 11 de Março
de 2002.
Multi-paradigmas
em C++
A maioria dos software comercializado hoje são orientado a objetos. Porém no mundo real nem tudo é objetos. A maioria dos projetos tem componentes não triviais que não são orientados a objetos.
Multi-paradigmas tem muito de orientação a objetos, mas as metas são em âmbitos diferentes.
A escolha da
linguagem C++ é que esta apresenta uma série de características que vão além do
paradigmas de objetos. Mais a frente veremos tais características.
Engenharia de domínio
é uma disciplina de projeto de software que focaliza nas abstrações de um
domínio com intenção de projetar artefatos de reuso. Usando técnicas que levam
ao bom reuso, a extensibilidade e manutembilidade sobre o tempo.
O projeto
multi-paradigmas focaliza primeiramente o entendimento das comunalidades e
variabilidades.
Comunalidade e
variabilidade são o coração da maioria das técnicas de projetos.
Com a análise da
comunalidade e variabilidade podemos formar grupos com características comuns,
chamados de famílias, que podem ser módulos, classes, funções, objetos entre
outros. Usamos a análise da
comunalidade para formar as famílias e a analise da variabilidade para
identificar as características que diferenciam cada membro.
Projeto orientado a
objetos encontra objetos enquanto que a análise de domínio encontra famílias.
Podemos considerar o projeto orientado a objetos como sendo um caso especial de
encontrar famílias. As classes são famílias de objetos e a hierarquia são
famílias de classes.
A importância do
projeto multi-paradigmas é que ele usa outros critérios, além dos orientados a
objetos, para encontrar outras importantes famílias (não orientado a objetos).
O segundo foco do
projeto consiste na engenharia de aplicação que combina essas comunalidades e
variabilidades a estrutura de tecnologia de implementação, tal como classes,
funções, templates, hierarquias de classes e estrutura de dados.
Em resumo a análise do domínio é um jogo de técnicas para identificar famílias de um software e engenharia de aplicação é um jogo de técnicas para implementar e manipular famílias. A análise de domínio e a engenharia de aplicação juntas formam a disciplina chamada engenharia de domínio.
Multi-paradigmas e
engenharia de domínios revisão os primeiros princípios de abstração ampliando o
espaço da solução além do paradigma de objeto.
A análise pode ser
definida em dois âmbitos: Análise de domínio e análise da solução. A análise do
domínio é a análise tradicional do espaço do problema e análise da aplicação
engloba a abstração de formalismo e ferramentas.
O uso de algum
paradigma de projeto durante a análise prejudica a implementação. O objetivo de
não usar um paradigma específico é não contaminar a análise com preconceitos do
projeto. Entretanto o não uso de nenhum paradigma não prevê uma implementação,
para solucionar esse impasse multi-paradigma propõe o uso de todos os
paradigmas na análise.
O projeto deve levar
a uma implementação fácil de entender e construir.
O projeto engloba a arquitetura e a implementação.
A arquitetura é a
primeira saída do projeto. É a articulação das “coisas” de interesses do
sistema e seus relacionamentos.
A implementação é a
segunda saída do projeto.
Muitos métodos
contemporâneo vêem o projeto como uma fase intermediária entre arquitetura e
implementação, em vez de ver a arquitetura e o código como sendo produtos do
projeto. Não se pode separar projeto de arquitetura e implementação por que o
projeto é a atividade que dá estrutura a solução e a arquitetura está sobre a
estrutura bem como boa parte do código.
C++ dá suporte a
todas as características apresentadas em multi-paradigmas. A linguagem C++
possui sobrecarga de funções, templates e outras características que expressam
outras espécies de comunalidade e variabilidade mais amplo que o paradigmas de
objetos.
Projeto multi-paradigmas é uma técnica de análise do domínio que característica simultaneamente a análise da solução e o domínio da solução.
Encontra os
relacionamentos entre as comunalidades e variabilidades e com essas aplicações
de domínio seleciona qual técnica da solução aplicar a qual parte do problema.