Relacionamentos de associação de UML

A transformação transforma os relacionamentos de associação em váriaveis de membro no código C++. Para associações sem composição, a transformação inclui o sinal de ponteiro (*) para o qualificador de tipo do atributo. Se você especificar a multiplicidade e configurá-la para um número específico (com os mesmos intervalos altos e baixos) a transformação inclui uma especificação de matriz para o atributo.

A transformação utiliza as seguintes propriedades da extremidade de associação para gerar o código: 

Propriedade

C++

Nome

Cria uma nova variável de membro com o nome especificado (executa a validação do nome)

Visibilidade

Determina a visibilidade da variável do membro gerado

Relacionamentos de generalização de UML

Por padrão, a transformação gera a herança pública para o destino do relacionamento de generalização de UML. A transformação automaticamente inclui o arquivo de cabeçalho para o destino no arquivo de cabeçalho gerado. A transformação C++ suporta múltiplas heranças. 

É possível aplicar o estereótipo cpp_generalization para especificar a visibilidade (pública, protegida, paticular e padrão) de determinado relacionamento de generalização. 

Relacionamentos de "Uso" de UML

Normalmente, um relacionamento de "Uso" indica a referência para a classe ou a enumeração. Por padrão, um relacionamento de uso se transforma em uma referência de redirecionamento no arquivo de cabeçalho gerado e uma diretiva de "inclusão" no arquivo de corpo. 

Se você aplicar o estereótipo cpp_dependency e configurar seu atributo isInclusionInHeader como true, a transformação gera a diretiva de inclusão no cabeçalho. 

É possível utilizar um relacionamento de "Uso" para indicar relacionamentos de "amizade" entre classes, aplicando o estereótipo cpp_friend no relacionamento. A transformação inclui a cláusula "amigo" no arquivo de cabeçalho gerado (por exemplo, "classe de amigo Class1;"). A transformação não gera um stub de corpo para as funções "amigas" e inclui automaticamente uma dependência na classe amiga do código gerado. 

Um caminho de inclusão com uma tag <<TBD ...>> semelhante ao seguinte pode ocorrer: 

#incluir "../<<caminho do verdadeiro projeto de TBD>>/..." 

Esta tag mais provavelmente ocorre porque a transformação utiliza um elemento a partir de um modelo de UML diferente. A tag <<TBD ..>> deve ser substituída pelo verdadeiro caminho do projeto no arquivo utilizado como referência.

Parâmetros de gabarito de UML

A transformação transforma uma classe UML com parâmetros de gabarito em uma classe de gabarito.

Relacionamentos de "Ligação" de UML (classes instanciadas)

A transformação considera uma classe UML com um relacionamento de "Ligação" com um destino de Class1 como uma instanciação da Class1 da classe de gabarito. A transformação utiliza a substituição de parâmetro que o relacionamento de ligação especifica para resolver parâmetros formais em parâmetros verdadeiros.

Um aviso é exibido se uma classe tem mais de um relacionamento de "Ligação". Se uma classe tem mais de um relacionamento de ligação, a transformação utiliza o primeiro para gerar o código.

A transformação inclui tipos de dados de verdadeiros parâmetros para a lista de inclusão da classe instanciada.

A seguinte figura ilustra o relacionamento de instanciação que a transformação suporta em que uma classe é uma classe parametrizada e outra classe é uma classe instanciada.

A transformação não suporta padrões de uso mais complexo das classes de gabarito, incluindo variáveis estáticas nos gabaritos e classes parametrizadas que são utilizados como parâmetros formais.

Início da página

Termos de uso | Feedback
(C) Copyright IBM Corporation 2004. Todos os direitos reservados.