Elementos UML Transformados pela Transformação UML-para-C#

Os elementos C# que a transformação transforma dependem dos elementos UML de origem e suas características.

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:
  • operador unary_or_binary_operator_symbol para uma definição de operação unária ou binária. O tipo de retorno dessa operação é o tipo de resultado retornado pelo operador unário/binário.
  • operador implícito ou operador explícito para um operador implícito ou explícito. O tipo de retorno dessa operação será o tipo de destino de conversão. O tipo de origem da conversão será o tipo de Parâmetro de UML
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
Nota:

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

Feedback