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.

 

Análise

 

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.

 

 

 

 

Projeto

 

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.

 

Porque C++?

 

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

 

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.