A tabela a seguir lista quais elementos UML são transformados em quais elementos C#.
| Elemento UML | Elemento C# |
|---|---|
| Modelo | Projeto C# |
| Pacote no Modelo de Mapeamento | Pasta com o mesmo nome no projeto C# |
| Pacote no modelo | Espaço de nomes C# |
| Pacote no modelo com a palavra-chave «analysis» ou «Analysis» | Ignorado |
| Atributo | Campo C# |
| Atributo com «CSharp Field» | Campo C# |
| Atributo com estereótipo «CSharp Event» | Evento C# O estereótipo «CSharp Event» possui uma propriedade booleana accessors que indica se o evento possui ou não os acessadores (incluir e remover) especificados. Um valor true indica que os acessadores incluir e remover estão especificados explicitamente e false indica que os acessadores do evento estão implícitos. |
| Atributo com estereótipo «CSharp Property» | Membro da classe de propriedade C#, com o atributo field_name do tipo String. |
| Atributo com estereótipo «CSharp Property» e propriedade de acessadores do estereótipo definido para auto | propriedade C# automaticamente implementada O membro da classe da propriedade contém ambos os acessadores get e set, sem um bloco de corpo. |
| Classe | Classe C# com o mesmo nome e visibilidade |
| Classe com o Esteriótipo «CSharp Delegate» | Delegação C# O método de chamada e sua assinatura são mapeados utilizando a operação UML na classe UML. O nome dessa operação deve ser “invoke()”. |
| Classe com o Esteriótipo «CSharp Struct» | Estrutura C# |
| Duas classes com um relacionamento de dependência entre elas com o estereótipo «CSharp Partial» | Classes parciais C# |
| Classe com duas ou mais classes dependentes; relacionamentos de dependência com a primeira classe possuem o estereótipo «CSharp Partial». Uma operação existe em cada classe dependente com o mesmo nome, uma com o estereótipo «CSharpPartialDeclaration» e uma com o estereótipo «CSharp PartialDefinition» | Métodos parciais C# Uma classe com duas implementações parciais é criada. A parte parcial que contém a operação com o estereótipo «CSharpPartialDeclaration» terá a declaração de método sem o corpo do método. A parte parcial que contém a operação com o estereótipo «CSharpPartialDefinition» terá a declaração de método e seu corpo. |
| Classe com relacionamento de generalização | A classe C# estende a superclasse especificada |
| Implementação | A classe C# implementa a interface especificada |
| Relacionamento de realização entre uma Classe e uma Interface | A classe C# implementa a interface especificada, incluindo interfaces de modelo.A transformação gera código para métodos, propriedade, eventos e indexadores na classe a partir da interface implementada |
| Interface | Interface C# com o mesmo nome e visibilidade |
| Interface com relacionamento de generalização | A interface C# estende a interface especificada |
| Enumeração | Enumeração C# do mesmo nome com o tipo subjacente padrão de "int" e nenhum dos membros de Enumeração tendo uma expressão constante |
| Literal de enumeração | Campo C# com o mesmo nome e visibilidade |
| Operação | Método C# com o mesmo nome e visibilidade |
| Operação com "operador implícito/explícito" ou "operador" e símbolo no nome | Operador C# O nome da operação é um dos
seguintes:
|
| Operação com a propriedade isStatic | O método C# será estático se true |
| Operação com a propriedade isAbstract | O método C# será abstrato se true |
| Operação com a propriedade isVirtual | O método C# será virtual se true |
| Operação com o mesmo nome que sua classe | Construtor C# |
| Operação com "~" e o mesmo nome que sua classe | Destrutor C# |
| Operação com estereótipo «CSharp Indexer» | Indexador C# A lista de parâmetros formais para um indexador é representada como parâmetros formais da Operação UML. |
| Operação com a propriedade isStatic e o estereótipo «CSharp ExtensionMethod» A operação deve ser um número de uma classe com estereótipo «CSharp Class» e a propriedade static do estereótipo definida para True |
Método de extensão C# Um modificador chamado this é aplicado ao primeiro parâmetro da operação. |
| Tipos Booleano, Inteiro, Cadeia e UnlimitedNatural | Tipos Booleano, Int32, Cadeia e UInt32 |
Os pacotes UML em um modelo com nomes contendo pontos são transformados em espaços de nomes C# com nomes contendo sublinhados. Esse comportamento de transformação preserva um espaço de nomes único para os elementos contidos. Por exemplo, suponha que uma pasta UML, com.ibm.samples, contenha uma classe nomeada C1. Após a aplicação da transformação UML-para-C#, um artefato C# representando a classe UML C1 é declarado no seguinte espaço de nomes:
namespace com_ibm_samples