Diagramas de classe UML: diretrizes
Em Visual Studio Ultimate, você pode usar um diagrama de classe de UMLpara descrever separada tipos de dados e suas relações da sua implementação.O diagrama é usado para focalizar nos aspectos lógicos de classes, em vez de sua implementação.
Para criar um diagrama de classe de UML, no menu de Arquitetura , escolha Novo diagrama.
Observação |
---|
Este tópico são sobre diagramas de classe de UML.Há outro tipo de diagrama de classe, que você pode criar e usar para visualizar o código de programa.Consulte criando e exibindo classes e tipos. |
Neste tópico.
Usando diagramas de classe de UML
Etapas básicas para diagramas de classe de desenho
Usando classes, interfaces, enumerações e
Atributos e operações
Desenhando e usando associações
Herança
Tipos de modelo
Definindo com pacotes namespaces
Gerando o código de diagramas de classe de UML
Usando diagramas de classe de UML
Você pode usar um diagrama de classe de UML para uma variedade das finalidades:
Para fornecer uma descrição XML independente dos tipos que são usados em um sistema e transmitidos entre seus componentes.
Por exemplo, a ordem de refeição de tipo pode ser implementado no código .NET na camada de negócios, em XML em interfaces entre componentes, o SQL no banco de dados, e em HTML na interface do usuário.Embora essas implementações sejam diferentes em particular, a relação entre uma ordem de refeição e outros tipos, como o menu e o pagamento, é sempre o mesmo.O diagrama de classe de UML torna possível discutir separada estas relações das implementações.
Para esclarecer o glossário de termos usados para comunicação entre o aplicativo e seus usuários, e as descrições das necessidades de usuários.Consulte Requisitos do usuário de modelagem..
Por exemplo, considere as histórias de usuário, caso de uso ou outras descrições dos requisitos de aplicativo de um restaurante.Em uma descrição, você descobriria termos como o menu, ordem, refeição preço pagamento, e assim por diante.Você pode desenhar um diagrama de classe de UML que define as relações entre esses termos.Isso reduzirá o risco de inconsistências nas descrições dos requisitos, e na interface do usuário, e os documentos da ajuda.
Relação a outros diagramas
Um diagrama de classe de UML é desenhado geralmente junto com outros diagramas modelando para fornecer descrições dos tipos que usam.Em cada caso, a representação físico de tipos não é incluída por alguns dos diagramas.
Se você desenhou: |
Use um diagrama de classe de UML para descrever: |
---|---|
Diagrama de atividades |
Tipo de dados que passam por um nó do objeto. Tipos de pinos de entrada e saída, e de nós de parâmetro de atividade. Consulte Diagramas de atividade UML: diretrizes. |
Diagrama de seqüência |
Tipos de parâmetros e valores de retorno de mensagens. Tipos de cordas de salvamento.A classe de uma corda de salvamento deve incluir operações para todas as mensagens que pode receber. Consulte Diagramas de seqüência UML: diretrizes. |
Diagrama de componente |
Interfaces componentes, listando as operações. Você também pode descrever um componente completo como uma classe. Consulte Diagramas de componente UML: diretrizes. |
Use o diagrama dos casos |
Tipos mencionados nas descrições dos objetivos e das etapas dos exemplos de uso. Consulte Diagramas de caso de uso UML: diretrizes. |
Etapas básicas para diagramas de classe de desenho
Para informações de referência sobre os elementos em diagramas de classe de UML, consulte Diagramas de classe UML: referência.
Observação |
---|
As etapas detalhadas para criar alguns dos diagramas modelando são descritas em Como: Editar modelos e diagramas UML. |
Para criar um diagrama de classe de UML
Em o menu de Arquitetura , escolha Novo diagrama.
Em Modelos, escolha Diagrama de classe de UML.
Nomeie o diagrama.
Em, selecione Adicione a modelagem o projetomodelando um projeto existente na sua solução, ou crie um novo projeto modelando, e então escolha OK.
Um novo diagrama de classe aparece com a caixa de ferramentas de UMLDiagrama de classe .A caixa de ferramentas contém os elementos e relacionamentos necessários.
Para desenhar um diagrama de classe de UML
Para criar um tipo, escolha Classe, Interface ou a ferramenta de Enumeração na caixa de ferramentas, clique em uma parte em branco de diagrama.
Você também pode criar tipos baseados em tipos em seu código.Você pode arrastar tipos de soluções, a arquitetura Explorer, ou gráficos de dependência no diagrama.Consulte Como: Criar diagramas de classe UML a partir do código.
Para adicionar atributos ou operações para tipos, ou para literais a uma enumeração, escolha Atributos, Operações ou Literais dirigindo, digite e pressione ENTER.
Você pode escrever uma assinatura como f(x:Boolean):Integer.Consulte atributos e operações.
Para adicionar rapidamente vários itens, pressione ENTER duas vezes no final de cada item.Você pode usar as teclas de seta para mover para cima e para baixo da lista.
Para expandir ou recolher um tipo, escolha o ícone de viga no seu canto superior esquerdo.Você também pode expandir e recolher a seção de Atributos e de Operações de uma classe ou interface.
Para desenhar associações, herança, ou links de dependência entre os tipos, clique a ferramenta apropriado de relação, então o tipo de origem, e o tipo de destino.
Para criar tipos em um pacote, criam um pacote usando a ferramenta de Pacote , e então criar novos tipos e pacotes dentro do pacote.Você também pode usar o comando copy copiar tipos, e colar-los em um pacote.
Cada diagrama é uma exibição em um modelo que é compartilhado entre outros diagramas no mesmo projeto.Para ver um modo de exibição de árvore de modelo completo, escolha Modo de Visualização, Outras Janelas, Modelo de UML Explorer.
Usando classes, interfaces, enumerações e
Há três tipos padrão classificadoras disponíveis na caixa de ferramentas.Esses são referidos como tipos em todo este documento.
Use Classes (1) para representar dados ou tipos de objeto para a maioria das finalidades.
Use Interfaces (2) em um contexto onde você tem que se puras diferenciar entre as interfaces e classes concretas que têm implementações internas.Essa diferença é útil quando a finalidade de diagrama é descrever uma implementação de software.É menos útil quando você está modelando dados passivos, ou quando você está definindo os conceitos usados para descrever os requisitos de usuário.
Use Enumeração (3) para representar um tipo que tem um número limitado de valores literais, por exemplo Stop e Go.
Adicione os valores literais a enumeração.Cada um de um nome separado.
Você também pode fornecer um valor numérico para cada valor literal, se você deseja.Abra o menu de atalho para o literal na enumeração, escolha Propriedades, e digite um número no campo de Valor na janela de Propriedades .
Cada tipo de um nome exclusivo.
Obtendo outros tipos de diagramas
Você pode fazer tipos de outro diagrama aparecer no diagrama de classe de UML.
Outro tipo de diagrama |
Como obter tipos de outro diagrama |
---|---|
Diagrama de classe de UML |
Você pode fazer uma classe aparecer em mais de um diagrama de classe de UML.Quando você criar uma classe em um diagrama, arraste a classe de Modelo de UML Explorer no diagrama outro. Isso é útil se você desejar que cada diagrama para se concentra em um determinado grupo de relacionamentos. Por exemplo, você poderia mostrar as associações entre uma ordem de refeição e o menu de restaurante em um diagrama, e as associações entre ordem de refeição e o pagamento em outro diagrama. |
Diagrama de Componentes |
Se você definiu componentes em um diagrama componente, você pode arrastar um componente de Modelo de UML Explorer no diagrama de classe.Aparecerá como uma classe.Consulte Diagramas de componente UML: diretrizes. |
Diagrama de seqüência de UML |
Você pode criar classes e interfaces de cordas de residual em um diagrama de seqüência, e arraste a classe de Modelo de UML Explorer a um diagrama de classe de UML.Cada corda de residual em um diagrama de seqüência representa uma instância de um objeto, o componente, ou o ator. Para criar uma classe de um corda de salvamento, abra o menu de atalho para a corda de salvamento, e então escolha Criar classe ou crie a interface.Consulte Diagramas de seqüência UML: diretrizes. |
Código de programa |
Você pode representar tipos de seu código no modelo.Arraste classes, interfaces, enumerações ou da arquitetura Explorer ou gráficos de dependência em um diagrama de classe de UML. Tipos que você arrastar aparecerá no diagrama.Os tipos dependentes serão adicionados ao modelo.Quando um tipo de UML foi criado de essa maneira, você pode clique duas vezes em para abrir o código-fonte.Consulte Como: Criar diagramas de classe UML a partir do código.
Observação
o código e o modelo não são mantidos sincronizado.Você pode atualizar o diagrama para discutir propostas de alteração sem afetar seu código.Mudanças subseqüentes no código não afetará automaticamente o diagrama a menos que você arrastar novamente os tipos no diagrama.
|
Atributos e operações
Um atributo (4) é um valor chamado que cada instância de um tipo pode ter.Acessar um atributo não altera o estado da instância.
Uma operação (5) é um método ou funções que as instâncias do tipo podem executar.Pode retornar um valor.Se a propriedade de isQuery for verdadeira, não pode alterar o estado da instância.
Para adicionar um atributo ou operação em um tipo, abra o menu de atalho para o tipo Adicionar, escolha, e escolha Atributo ou Operação.
Para consultar suas propriedades, abra o menu de atalho para o atributo ou a operação, e então escolha Propriedades.As propriedades aparecem na janela de Propriedades .
Para ver as propriedades de parâmetros de uma operação, escolha **… []**na propriedade de Parâmetros .Uma nova caixa de diálogo propriedades aparece.
Para obter informações detalhadas sobre todas as propriedades que você pode definir, consulte:
Tipos de atributos e operações
Cada tipo de um atributo ou de uma operação, e cada tipo de parâmetro, podem ser um dos seguintes:
(nenhum) - Você pode deixar um tipo não especificado na assinatura anterior omitindo o separador dois-pontos (:).
Um dos tipos primitivos padrão: Booliano, Inteiro, Cadeia de caracteres.
Um tipo que é definido no modelo.
Um valor com parâmetros de um tipo de modelo, escrito o modelo<Parameter>.Consulte Tipos de modelo.
Você também pode escrever o nome de um tipo que você não defina ainda no modelo.O nome será listado em tipos não especificado no modelo de UML Explorer.
Observação |
---|
Se você definir subseqüentemente uma classe ou uma interface de esse nome no seu modelo, os atributos e as operações mais antigas ainda referirão o elemento em tipos não especificado.Se você deseja alterar os para se referir a nova classe, você deve visitar cada atributo ou operação e redefinir o tipo, selecionando a nova classe de menu suspenso. |
Vários tipos
Você pode definir uma multiplicidade de qualquer atributo, operação, ou tipo de parâmetro.
Os valores permitidos são:
Multiplicidade |
O atributo, o parâmetro, ou o valor de retorno contém: |
---|---|
[1] |
Um valor do tipo dado.Esse é o padrão. |
[0..1] |
Nulo ou um valor do tipo dado. |
[*] |
Uma coleção de qualquer número de instâncias do tipo dado. |
[1..*] |
Uma coleção pelo menos uma instância do tipo de dado. |
[n..m] |
Uma coleção de n entre e instâncias de m tipo de dado. |
Se a multiplicidade é mais de 1, você pode também definir essas propriedades:
IsOrdered - Se verdadeiro, a coleção tem uma ordem definido.
IsUnique - Se verdadeiro, não há nenhum valor duplicados na coleção.
Visibilidade
A visibilidade indica se o atributo ou a operação podem ser acessados fora da definição de classe.Os valores permitidos são:
Nome |
Forma abreviada |
Significado |
---|---|---|
Público |
+ |
Acessível de qualquer outro tipo. |
Privado |
- |
Acessível somente à definição interna de esse tipo. |
Pacote |
~ |
Acessível somente dentro do pacote que contém esse tipo, e em alguns pacotes que o importarem explicitamente.Consulte definindo namespaces e pacotes. |
Protegido |
# |
Acessível somente a esses tipos e tipos que herdam de ele.Consulte herança. |
Definindo a assinatura de um atributo ou de uma operação
A assinatura de um atributo ou de uma operação é um conjunto de propriedades que inclui seus visibilidade, nome, parâmetros (para operações), e tipo.
Você pode escrever uma assinatura diretamente no diagrama.Clique no atributo ou a operação para selecioná-lo, e clique em novamente.
Escreva a assinatura no formulário:
visibility attribute-name : Type
- ou -
visibility operation-name (parameter1 : Type1, ...) : Type
Por exemplo:
+ AddItem (item : MenuItem, quantity : Integer) : Boolean
Use a forma curta de visibilidade.O valor padrão é + público ().
Cada tipo pode ser tipos que você definiu no modelo, em tipos de padrão como o inteiro ou em cadeia de caracteres, ou nome de um novo tipo que você não defina ainda.
Observação |
---|
Se você escreve um nome sem um tipo em uma lista de parâmetros, indica o nome do parâmetro, em vez do tipo.Em esse exemplo, o inteiro MenuItem e tornam-se os nomes de dois parâmetros com tipos não especificado: AddItem(MenuItem, Integer) /* parameter names, not types! */ |
Para definir a multiplicidade de um tipo em uma assinatura, escreva a multiplicidade colchetes após o nome do tipo, por exemplo:
+ AddItems (items : MenuItem [1..*])
+ MenuContent : MenuItem [*]
Se o atributo ou a operação é estático, seu nome aparecerá na assinatura sublinhado.Se for abstrato, o nome aparecerá na fonte itálico.
Em o entanto, você pode apenas definir as propriedades de é estático e de é abstrato na janela de Propriedades .
Assinatura completa
Quando você editar a assinatura de um atributo ou de uma operação, algumas propriedades adicionais podem aparecer no final da linha, e após cada parâmetro.Parecem incluidos em chaves {}….Você pode editar ou adicionar essas propriedades.Por exemplo:
+ AddItems (items: MenuItem [1..*] {unique, ordered})
+ GetItems (filter: String) : MenuItem [*] {ordered, query}
Essas propriedades são:
Em a assinatura |
Propriedade |
Significado |
---|---|---|
unique |
é exclusivo |
Não há nenhum valor duplicados na coleção.Se aplica aos tipos com a multiplicidade maior que 1. |
ordered |
É ordenada |
a coleção é uma seqüência.Se falso, há um primeiro item não definido.Se aplica aos tipos com a multiplicidade maior que 1. |
query |
Realiza-se a consulta |
A operação não altera o estado da instância.Aplica-se somente a operações. |
/ |
é derivado |
O atributo é calculado dos valores de atributos ou outras associações. “/” aparece antes do nome de um atributo.Por exemplo:
|
Geralmente a assinatura completa aparece no diagrama somente quando você editar o.Quando você terminar, editar as propriedades adicionais são ocultas.Se você deseja ver o tempo todo a assinatura completa, abra o menu de atalho para o tipo, e então escolha Assinatura completa de apresentação.
Desenhando e usando associações
Use uma associação para representar qualquer tipo de uma ligação entre dois elementos, independentemente de como o ligação é implementado em software.Por exemplo, você pode usar uma associação para representar um ponteiro em C#, um relacionamento em um banco de dados, ou uma referência cruzada de uma parte de um arquivo XML para outro.Pode representar uma associação entre objetos no mundo real, como a terra e o sol.A associação não informa como o link é representado, só que informações existe.
Propriedades de uma associação
Depois de criar uma associação, definir suas propriedades.Abra o menu de atalho para associação, e então escolha Propriedades.
Além das propriedades de associação no dataset, cada função, isto é, cada o final da associação, tem algumas propriedades de seu próprio.Exibi-los, expanda as propriedades de Função primeira e de segunda função .
Algumas propriedades de cada função são visíveis diretamente no diagrama.São:
Nome de função.Isso aparece no final da associação apropriado no diagrama.Você pode definir no diagrama ou na janela de Propriedades .
multiplicidade, que padrão é 1.Isso também aparece no diagrama de extremidade por apropriado de associação.
Agregado.Isso aparece como uma forma de diamante em uma extremidade de conexão.Você pode utilizá-lo para indicar que instâncias na função para agregar possuir ou conter instâncias de outro.
é navegável.Se verdadeiro para apenas uma função, uma seta aparece na direção navegável.Você pode usar este para indicar a navegabilidade de links e relacionamentos de banco de dados em software.
Para obter detalhes completos de essas e outras propriedades, consulte Propriedades de associações nos diagramas de classe UML.
Navegabilidade
Quando você desenhar uma associação, tem uma seta no final, o que significa que a associação é navegável em aquela direção.Isso é útil se o diagrama de classe representa classes de software, e as associações representam ponteiros ou referências.Mas quando você usa um diagrama de classe para representar entidades e relações ou conceitos de negócio, é menos relevantes representar a navegabilidade.Em esse caso, você pode preferir desenhar associações sem setas.Você pode fazê-lo definindo a propriedade de é navegável em ambas as extremidades de associação como true.Mais fácil para fazer isso, você pode baixar o exemplo de A modelagem do domínio de UMLcódigo.
Atributos e associações
Uma associação é uma maneira pictórico de mostrar um atributo.Por exemplo, em vez de criar um restaurante da classe com um atributo de menu do tipo, você pode desenhar uma associação restaurante do menu.
Cada nome do atributo torna um nome de função.Aparece no extremo oposto de associação do tipo proprietário.Veja, por exemplo, em myMenu na ilustração.
Geralmente, é melhor usar atributos somente para tipos que você não desenharia no diagrama, como tipos primitivos.
Herança
Use a ferramenta de herança para criar as seguintes relações:
Uma generalização da relação entre um tipo especializado e um tipo geral
- ou -
Uma relação de realização entre uma classe e uma interface que implementa.
Você não pode criar loop em relações de herança.
Generalização
A generalização significa que a especialização ou o tipo derivado herda atributos, operações, e associações gerais do ou do tipo base.
O tipo geral aparece no final da seta da relação.
As operações e atributos herdados não são mostrados normalmente nos tipos de especialização.Mas você pode adicionar operações herdadas à lista das operações de tipo de especialização.Isso é útil se você deseja substituir as propriedades de uma operação no tipo de especialização, ou se você deseja indicar que o código de implementação deve fazer isso.
Para substituir a definição de uma operação em um tipo de especialização
Clique na relação de ser generalizado.
Aparece realçada, e uma marca de ação aparece-lhe próximo.
Clique na marca de ação, clique em Operações de substituição.
a caixa de diálogo de Substitua operações aparece.
Selecione as operações que você deseja que apareça no tipo de especialização, clique em OK.
As operações que você selecionou agora aparecem no tipo de especialização.
Realização
A realização significa que uma classe implementa os atributos e as operações especificados pela interface.A interface está no final da seta de conexão.
Quando você cria um conector de realização, as operações de interface são replicados automaticamente na classe realizar.Se você adicionar novos operações a interface, são replicados em suas classes realizar.
Depois de criar uma relação de realização, você pode converter a notação de pirulito.Clique com o botão direito do mouse no relacionamento e escolha apresentação como o pirulito.
Isso permite que você exibir as interfaces que implementa de uma classe, sem encher os diagramas de classe com realização links.Você também pode mostrar a interface e as classes que a está em diagramas separados.
Tipos de modelo
Você pode definir um tipo genérico ou modelo que pode ser parametrizada por outros tipos ou valores.
Por exemplo, você pode criar um dicionário genérico parametrizada por chave e os tipos de valor:
Para criar um tipo de modelo
Crie uma classe ou interface.Este se tornará o tipo de modelo.Nomeie-o da mesma forma, por exemplo, Dictionary.
Abra o menu de atalho para o novo tipo, e então escolha Propriedades.
Em a janela de Propriedades , clique em … [] no campo de Parâmetros de modelo .
a caixa de diálogo de Editor de coleção de parâmetros de modelo aparece.
Escolha Adicionar.
Defina a propriedade de nome a um nome de parâmetro para seu tipo de modelo, por exemplo, Key.
Definir Tipo de parâmetro.O padrão é Classe.
Se você desejar que o parâmetro para aceitar apenas classes derivadas de uma determinada classe base, defina valor restrito para a classe base que você deseja.
Adicionar quantos parâmetros como você precisar, então escolha OK.
Adicione atributos e operações para o tipo de modelo como você faria para outras classes.
Você pode usar os parâmetros cujo tipo é Classe, Interface ou Enumeração na definição dos atributos e das operações.Por exemplo, usando classes Key e Valuede parâmetro, você pode definir esta operação em Dictionary:
Get(k : Key) : Value
Você pode usar um parâmetro cujo tipo é Inteiro como um limite em uma multiplicidade.Por exemplo, um número inteiro de parâmetro máximo pode ser usado para definir a multiplicidade de um atributo como [0..max].
Quando você criar tipos de modelo, você pode usá-los para definir associações de modelo:
Para usar um tipo de modelo
Crie um novo tipo, por exemplo, AddressTable.
Abra o menu de atalho para o novo tipo, e então escolha Propriedades.
A propriedade de Associação de modelo , selecione o tipo de modelo, por exemplo Dictionary, da lista suspensa.
Expanda a propriedade de Associação de modelo .
Uma linha é exibido para cada parâmetro do tipo de modelo.
Definir cada parâmetro para um valor apropriado.Por exemplo, definir o parâmetro de Key a uma classe chamada Name.
Pacotes
Você pode exibir pacotes em um diagrama de classe de UML.Um pacote é um contêiner para outros elementos modelo.Você pode criar qualquer elemento em um pacote.Em o diagrama, os elementos dentro do pacote mover-se-9&z redor quando você move o pacote.
Você pode usar o recolher/expandir o controle para ocultar ou exibir o conteúdo do pacote.
Consulte Definição de pacotes e espaços para nome.
Gerando o código de diagramas de classe de UML
Para iniciar implementar as classes em um diagrama de classe de UML, você pode gerar código C# ou personalizar modelos para a geração de código.Para iniciar a geração de código usando os modelos oferecidos C#:
Abra o menu de atalho para o diagrama ou um elemento, escolha Gerar código, e então defina as propriedades necessárias.
Para obter mais informações sobre como definir essas propriedades e personalizar os modelos oferecidos, consulte Como: Gerar código a partir de diagramas de classe UML.
Consulte também
Referência
Diagramas de seqüência UML: referência
Conceitos
Como: Editar modelos e diagramas UML
Diagramas de classe UML: referência
Requisitos do usuário de modelagem.
Diagramas de componente UML: referência