Modelos de UML

É possível aplicar o estereótipo cpp_namespace a um modelo. É possível utilizar o atributo NamespaceName do estereótipo para especificar o espaço de nomes para todos os elementos no modelo.

Pacotes de UML

Os pacotes de UML se tornam pastas no projeto de destino (e, correspondentemente, pastas no sistema de arquivos).  A transformação coloca os elementos do pacote na pasta do pacote.

A transformação ignora s pacotes marcados como pacotes de análise. Um usuário marca um pacote como um pacote de análise, aplicando o estereótipo <<perspectiva>> a ele ou aplicando uma palavra-chave "análise" ou "Análise".

Semelhante aos modelos, é possível aplicar o estereótipo cpp_namespace a um pacote para especificar o espaço de nomes para todos os elementos no pacote. A transformação atualmente não suporta os espaços de nomes aninhados. O espaço de nomes especificado no pacote interno substitui o espaço de nomes especificado no pacote externo.

Se dois pacotes de UML têm o mesmo nome no mesmo nível de modelo, a transformação cria somente uma pasta no sistema de arquivos e coloca o conteúdo de ambos os pacotes de UML nessa pasta.

Classes de UML

Para as classes de UML, a transformação gera um par de arquivos: um arquivo de cabeçalho e um arquivo de corpo. Se necessário, a transformação converte o nome da classe para estar de acordo com as regras de C++ e para garantir que o nome seja exclusivo. O arquivo de corpo sempre contém a diretiva de inclusão para o arquivo de cabeçalho correspondente. Por padrão, o arquivo de cabeçalho correspondente possui o nome de arquivo <ClassName>.h e o arquivo de corpo gerado possui o nome de arquivo <ClassName>.cpp. 

Os relacionamentos de generalização e associação afetam a geração de código. Para obter informações adicionais, consulte"relações de associação de UML" e "relacionamentos de generalização de UML."

É possível aplicar os seguintes estereótipos às classes UML:

·         cpp_struct: Este estereótipo gera estrutura C++ em vez da classe.

·        cpp_union: Este estereótipo gera a união C++ em vez da classe C++. O perfil C++ permite que uma união aninhada seja anônima. Por padrão, nenhuma operação padrão é gerada para uniões.

·        cpp_typedef: Este estereótipo gera C++  typedef em vez da classe C++. Você deveria utilizar o atributo "ImplementationType" do estereótipo para especificar a assinatura do tipo que está sendo definido.

Enumerações de UML

A transformação transforma a enumeração de UML para C++ "enum". O nome da enumeração C++ é tirado da enumeração de UML. Se necessário, a transformação converte o nome da enumeração para entrar em acordo com as regras C++ e garantir que o nome seja exclusivo. A transformação gera atributos de UML como atributos de C++ e aplica os valores padrão a partir do modelo.

Diferentemente das classes UML, a transformação gera somente o arquivo de cabeçalho para as enumerações.

Interfaces UML

A transformação C++ transforma interfaces UML em classes C++. O processo de interfaces é semelhante ao processo de classes UML classes, exceto que as operações UML são geradas como puros métodos virtuais C++. O processo de operações padrão (construtor padrão, construtor de cópia, desconstrutor e operador de designação) é o mesmo tanto para interfaces como para classes.

Classes, enumerações e interfaces UML aninhadas

As classes podem ter classes, enumerações e interfaces aninhadas. A transformação gera objetos aninhados semelhantemente às suas contrapartes não aninhadas. No entanto, a transformação não cria um cabeçalho separado e arquivos de corpo para objetos aninhados; inclui no cabeçalho e arquivos de corpo da classe que os contém.

Objetos aninhados também têm essas diferenças:

·         As visibilidades dos elementos aninhados são rastreadas em seus pais

·         Inclui diretivas para os elementos aninhados que são incluídos para incluir diretivas das classes que as contêm

·         Os corpos de operação para os elementos aninhados são prefixados com os nomes das classes que os contêm

·         As definições de atributos estáticos para os elementos aninhados também incluem os nomes das classes que os contêm

Início da página

Termos de uso | Feedback
(C) Direitos Autorais IBM Corporation 2004. Todos os Direitos Reservados.