Estereótipos do Perfil de Transformação UML-para-C++

O perfil de transformação UML-para-C++ contém estereótipos que podem ser aplicados a parâmetros, propriedades, documentação, relacionamentos específicos, classes, pacotes e modelos. Cada estereótipo tem um conjunto de atributos e tipos válidos definidos.

Este conteúdo aplica-se à versão 7.5.4 ou posterior. A tabela a seguir lista os estereótipos do perfil e suas propriedades e tipos relacionados.

Estereótipo Aplica-se a Propriedades Tipo
«cpp_assignment» Operações isInline Booleano com um valor padrão de false
«cpp_body_comment» Comentários que você deseja que apareçam no código-fonte, tais como comentários para funções e variáveis estáticas    
«cpp_constructor» Operações isExplicit, isInline Booleano com um valor padrão de false
memberInitializers Cada cadeia especifica a lista inicializadora do construtor de uma classe. A lista especifica os valores iniciais dos atributos da classe ou da classe pai.
Por exemplo, especifique a seguinte cadeia para gerar uma lista inicializadora para um método de construtor de uma classe chamada Class1 que tenha um atributo de inteiro denominado attribute1 e um atributo de cadeia denominado name1:
attribute1(10),name1("Class1")
Não coloque a cadeia entre aspas simples. A transformação gera o seguinte construtor:
Class1::Class1() :
attribute1(10),name1("Class1")
{
//TAREFA A FAZER Stub de método gerado automaticamente
}
«cpp_copy_constructor» Operações isExplicit, isInline Booleano com um valor padrão de false
memberInitializers Cada cadeia especifica a lista inicializadora do construtor de uma classe. A lista especifica os valores iniciais dos atributos da classe ou da classe pai.
Por exemplo, especifique a seguinte cadeia para gerar uma lista inicializadora para um método de construtor de uma classe chamada Class1 que tenha um atributo de inteiro denominado attribute1 e um atributo de cadeia denominado name1:
attribute1(10),name1("Class1")
Não coloque a cadeia entre aspas simples. A transformação gera o seguinte construtor:
Class1::Class1() :
attribute1(10),name1("Class1")
{
//TAREFA A FAZER Stub de método gerado automaticamente
}
«cpp_dependency» Relacionamentos de dependência isForwardReference Booleano com um valor-padrão de false; se o valor for configurado como true, ele gera uma declaração de encaminhamento do tipo de fornecedor no arquivo de cabeçalho da classe do cliente
Mesmo se você definir essa propriedade para true, a transformação não gera uma referência de encaminhamento nas seguintes situações:
  • Se o fornecedor é um typedef, tipo aninhado ou enumeração
  • Se a classe do cliente contiver quaisquer tipos de não referência ou não ponteiro que sejam do tipo do fornecedor
isInclusionInHeader Booleano com um valor padrão de false; se o valor for configurado como true, ele gera uma diretiva #include no arquivo de cabeçalho da classe do cliente
«cpp_destructor» Operações isVirtual, isInline Booleano com um valor padrão de false
«cpp_enum» Enumerações isAnonymousEnum Booleano com um valor padrão de false; se o valor for configurado como true, a transformação gerará uma enumeração anônima
«cpp_external_inclusion» Classes, interfaces includeType Enumeração com valores que especificam como a transformação gera diretivas de inclusão quando a classe importada não faz parte da origem de transformação
relativeToFolderInput Cadeia; obrigatório se você especificar o valor Gere diretivas de inclusão que sejam relativas a essa pasta na propriedade includeType
specificFileNameInput Cadeia; obrigatório se você especificar o valor Gere uma diretiva de inclusão que contenha o seguinte nome de arquivo na propriedade includeType
«cpp_friend» Relacionamentos de dependência   Gera uma diretiva #include no arquivo de cabeçalho e declara a classe do fornecedor como um amigo da classe do cliente
«cpp_generalization» Relacionamentos de generalização, relacionamentos InterfaceRealization GeneralizationKind Enumeração com valores público, protegido, privado e padrão (0-público, 1-protegido, 2-privado, 3-padrão)
isVirtual Booleano com um valor padrão de false; indica heranças virtuais
«cpp_internal_inclusion» Classes, interfaces includeType Enumeração com valores que especificam como a transformação gera diretivas de inclusão quando a classe de importação e a classe importada fazem parte da origem de transformação
relativeToFolderInput Cadeia; obrigatório se você especificar o valor Gere diretivas de inclusão que sejam relativas a essa pasta na propriedade includeType
specificFileNameInput Cadeia; obrigatório se você especificar o valor Gere uma diretiva de inclusão que contenha o seguinte nome de arquivo na propriedade includeType
«cpp_namespace» Pacotes NamespaceName Cadeia
«cpp_operation» Operações isInline Booleano com um valor padrão de false; se o valor for configurado como true, gerará a operação como seqüencial e incluirá o corpo da operação no arquivo de cabeçalho correspondente
isVirtual Booleano com um valor padrão de false; se o valor for configurado como true, gerará a operação como uma função virtual
isFriend Booleano com um valor padrão de false; se o valor for configurado como true, gerará uma operação amigável
isGlobal Booleano com um valor padrão false; se o valor for definido como true, irá gerar uma função global
«cpp_properties» Classes, interfaces, enumerações bodyFileExtension Arquivo de corpo C++ com a extensão especificada
headerFileExtension Arquivo de cabeçalho C++ com a extensão especificada
Por exemplo, para gerar código para uma classe de modelo C++ em um arquivo de cabeçalho que tenha .inc como uma extensão de nome de arquivo, você pode aplicar esse estereótipo à classe e configurar esta propriedade como ".inc".
Nota: Você deve associar a extensão de nome de arquivo .inc a um arquivo de cabeçalho C++ para que o C/C++ Development Tools reconheça .inc como uma extensão de nome de arquivo C++ válida.
«cpp_struct» Classes    
«cpp_type» Propriedades, parâmetros arrayDimensions Essa é uma cadeia que é normalmente utilizada para especificar matrizes multidimensionais que o UML 2.0 não suporta.

Por exemplo, utilize essa cadeia para especificar uma matriz para uma propriedade: [10][20]; ou para um parâmetro do tipo sem retorno: [][10]

InitializerKind Essa é uma enumeração com valores de construtor e de designação (0-construtor).

Se a propriedade InitializerKind for definida como 0, a transformação gerará um inicializador de construtor.

Se a propriedade InitializerKind for definida como 1, a transformação gerará uma instrução de designação no construtor.

Consulte o Exemplo de como a transformação UML-para-C++ transforma elementos com o estereótipo «cpp_type» aplicado.

isAuto, isMutable, isRegister, isVolatile Booleano com um valor padrão de false
qualifier Essa é uma cadeia que contém a parte de um tipo C++ que não pode ser modelada no UML, e que aparece antes do nome da variável a após o tipo, como ** e &.
Por exemplo, const int **a[12][33] pode ser representado por estes itens:
  • Uma propriedade UML nomeada a
  • Propriedade de estereótipo isReadOnly definida como true
    Nota: A propriedade isReadOnly gera a palavra-chave const
  • O estereótipo «cpp_type» aplicado
  • Propriedade de estereótipo qualificador configurada como **
  • Propriedade de estereótipo arrayDimensions configurada como [12][33]
Atributos isGlobal Booleano com um valor padrão false; se o valor for definido como true, irá gerar uma variável global
«cpp_typedef» Classes arrayDimensions Cadeia
ImplementationType Essa cadeia especifica o tipo ao qual o typedef se refere; pode ser um tipo primitivo ou definido pelo usuário.

Os tipos definidos pelo usuário podem ser completos ou não. Se um nome de tipo não for completo, o escopo do typedef será aplicado ao tipo definido pelo usuário.

qualifier Essa cadeia especifica tipos de ponteiro, constantes etc.
Por exemplo, a transformação gera const int **Typedef1[12][13] para um elemento UML da seguinte descrição:
  • Uma classe nomeada Typedef1, estereotipada como «cpp_typedef»
  • ImplementationType int
  • arrayDimensions[12][13]
  • Const. de qualificador **
«cpp_union» Classes isAnonymousUnion Booleano com um valor padrão de false

Exemplo de como a transformação UML-para-C++ transforma elementos com o estereótipo «cpp_type» aplicado

Neste exemplo, uma classe UML nomeada Class1 contém os seguintes atributos:
  • Um atributo de inteiro denominado attribute1 com um valor padrão 5; a propriedade InitializerKind é definida como 0
  • Um atributo booleano denominado attribute2 com um valor padrão true; a propriedade InitializerKind é definida como 1
O estereótipo «cpp_type» é aplicado a ambos os atributos. A configuração de transformação UML-para-C++ é configurada para gerar construtores e nenhuma opção de rastreabilidade está ativada. A tabela a seguir lista o código C++ que é gerado pela transformação.
Elemento UML Saída da Transformação
Esta imagem ilustra a classe descrita no exemplo. Class1.cpp:
#include "Class1.h" 
//Iniciar seção para o arquivo Class1.cpp
//TAREFA A FAZER: Incluir definições preservadas
//Encerrar seção para o arquivo Class1.cpp


//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
Class1::Class1() : 
attribute1(5)
{
    //TAREFA A FAZER Stub de método gerado automaticamente
    attribute2 = true;
}

Feedback