Compartilhar via


Diagramas de classe UML: Diretrizes

Em Visual Studio Ultimate, você pode usar um diagrama de classe UML para descrever os tipos de dados e suas relações separadamente a partir de sua implementação. O diagrama é usado para se concentrar nos aspectos lógicos de classes, em vez de em sua implementação. Para criar um diagrama de classe UML, o arquitetura menu, clique em Novo diagrama.

ObservaçãoObservação

Este tópico é sobre os diagramas de classe UML. Há outro tipo de diagrama de classe, você pode criar e usar para visualizar o código de programa. Para obter mais informações, consulte Projetando e exibindo Classes e tipos de.

Neste tópico.

Usando diagramas de classe UML

Etapas básicas para diagramas de classe de desenho

Usando Classes, Interfaces e enumerações

Atributos e operações

Desenho e uso de associações

Herança

Tipos de modelo

Definindo Namespaces com pacotes

Usando diagramas de classe UML

Você pode usar um diagrama de classe UML para várias finalidades:

  • Para fornecer uma descrição de implementação independente dos tipos que são usadas em um sistema e passados entre seus componentes.

    Por exemplo, o tipo de ordem de refeição pode ser implementado em.NET código na camada de negócios, em XML com as interfaces entre componentes, em SQL no banco de dados e em HTML na interface do usuário. Embora essas implementações são diferentes em detalhes, a relação entre uma ordem de refeições e outros tipos, como, por exemplo, Menu e de pagamento, é sempre o mesmo. O diagrama de classe UML torna possível discutir esses relacionamentos separadamente das implementações.

  • Para esclarecer o Glossário de termos usados para comunicação entre o aplicativo e seus usuários e, em descrições dos usuários precisa. Para obter mais informações, consulte Requisitos do usuário de modelagem..

    Por exemplo, considere as histórias de usuários, use outras descrições de requisitos de um aplicativo de restaurante ou de casos. Em Descrição, você encontraria termos como Menu, ordem, refeições, preço, pagamento e assim por diante. Você pode desenhar um diagrama de classe UML que define as relações entre esses termos. Isso reduzirá o risco de inconsistências nas descrições de requisitos e a interface do usuário e os documentos de Ajuda.

Relação com outros diagramas

Um diagrama de classe UML geralmente é desenhado em conjunto com outros diagramas de modelagem para fornecer descrições dos tipos que eles usam. Em cada caso, a representação física dos tipos de não for implicada por qualquer um dos diagramas.

Se você tiver desenhado:

Use um diagrama de classe UML para descrever:

Diagrama de atividade

Tipo de dados, passando por meio de um nó de objeto.

Tipos de pinos de entrada e saídos e nós de atividade de parâmetro.

Para obter mais informações, consulte Diagramas de atividade UML: Diretrizes.

Diagrama de seqüência

Tipos de parâmetros e valores de retorno de mensagens.

Tipos das linhas de vida. A classe de uma linha de vida deve incluir operações para todas as mensagens que ele pode receber.

Para obter mais informações, consulte Diagramas de seqüência UML: Diretrizes.

Diagrama de componente

Interfaces de componentes, listando as suas operações.

Você também pode descrever o total do componente como uma classe.

Para obter mais informações, consulte Diagramas de componente UML: Diretrizes.

Diagrama de caso de uso

Tipos mencionados nas descrições das metas e etapas de um caso de uso.

Para obter mais informações, 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 UML, consulte Diagramas de classe UML: Referência.

ObservaçãoObservação

As etapas detalhadas para a criação de qualquer um dos diagramas de modelagem são descritas na Como: Editar um modelo UML e diagramas.

Para criar um diagrama de classe UML

  1. Sobre o arquitetura menu, clique em Novo diagrama.

  2. Em modelos de, clique em Diagrama de classe UML.

  3. Nome do diagrama.

  4. Em Adicionar ao projeto de modelagem, selecione um projeto de modelagem existente em sua solução, ou criar um novo projeto de modelageme em seguida, clique em OK.

    Um novo diagrama de classe aparece com o UML Diagrama de classe caixa de ferramentas. A caixa de ferramentas contém os elementos necessários e relações.

Para desenhar um diagrama de classe UML

  1. Para criar um tipo, clique na classe, Interface ou enumeração ferramenta na caixa de ferramentas e clique em uma parte em branco do diagrama.

  2. Para adicionar atributos ou operações para os tipos ou literais de uma enumeração, clique na atributos, operações ou literais o tipo de título e, em seguida, pressione ENTER.

    Você pode gravar uma assinatura, como f(x:Boolean):Integer. Para obter mais informações, consulte atributos e operações.

    Para adicionar vários itens rapidamente, pressione ENTER duas vezes no final de cada item. Você pode usar as teclas de direção para mover para cima e para baixo na lista.

  3. Para expandir ou recolher um tipo, clique no ícone de divisa na sua esquerda superior. Você também pode expandir e recolher a atributos e operações seção de uma classe ou interface.

  4. Para desenhar associações, herança ou links de dependência entre os tipos, clique a ferramenta apropriada de relação, em seguida, o tipo de fonte e digite o destino.

  5. Para criar tipos em um pacote, criar um pacote usando o pacote ferramenta e, em seguida, criar novos tipos e pacotes dentro do pacote. Você também pode usar o comando Copiar para copiar tipos e colá-los em um pacote.

  6. Cada diagrama é um modo de exibição em um modelo que é compartilhado entre outros diagramas no mesmo projeto. Para ver um modo de exibição de árvore do modelo completo, clique em Exibir, aponte para Other Windowse em seguida, clique em Gerenciador de modelos UML.

Usando Classes, Interfaces e enumerações

Existem três tipos padrão de classificador disponíveis na caixa de ferramentas. Estes são chamados de tipos em todo este documento.

Uma classe, uma enumeração e uma interface

  • Use Classes (1) para representar tipos de dados ou objeto para a maioria das finalidades.

  • Use Interfaces (2) em um contexto onde você precisa diferenciar puros interfaces e classes concretas que têm implementações internas. Essa diferença é útil quando a finalidade do diagrama descrever a implementação de software. É menos útil quando você é passivos dados de modelagem ou onde você está definindo os conceitos usados para descrever os requisitos do usuário.

  • Use um enumeração (3) para representar um tipo que tem um número limitado de valores literais, por exemplo Stop e Go.

    • Adicione valores literais de enumeração. Nomeie cada um separado.

    • Você também pode fornecer um valor numérico para cada valor literal, se desejar. O literal na enumeração com o botão direito, clique em Propriedadese, em seguida, digite um número na valor campo de Propriedades janela.

Dê um nome exclusivo de cada tipo.

Obtendo tipos de outros diagramas

Você pode fazer com que tipos de outro diagrama apareça no seu diagrama de classe UML.

Outro tipo de diagrama

Como obter os tipos de diagrama de

Diagrama de classe UML

Você pode fazer com que uma classe aparecem em mais de um diagrama de classe UML. Quando você tiver criado uma classe em um diagrama, arraste a classe de Gerenciador de modelos UML para o outro diagrama.

Isso é útil se você deseja se concentrar em um determinado grupo de relações cada diagrama.

Por exemplo, você pode mostrar as associações entre uma ordem de refeição e o Menu do restaurante em um diagrama e as associações entre a ordem de refeição e o pagamento em outro diagrama.

Diagrama de componente

Se você tiver definido os componentes em um diagrama de componente, você pode arrastar um componente de Gerenciador de modelos UML para o diagrama de classe. Ele será exibido como uma classe. Para obter mais informações, consulte Diagramas de componente UML: Diretrizes.

Diagrama de seqüência UML

Você pode criar classes e interfaces de linhas de vida em um diagrama de seqüência e, em seguida, arraste a classe de Gerenciador de modelos UML a um diagrama de classe UML. Cada linha de vida em um diagrama de seqüência representa uma instância de um objeto, o componente ou o ator.

Para criar uma classe a partir de uma linha de vida, clique com o botão direito na linha de vida e, em seguida, clique em Criar classe ou Criar Interface. Para obter mais informações, consulte Diagramas de seqüência UML: Diretrizes.

Atributos e operações

Um atributo (4) é um valor nomeado que cada instância de um tipo pode ter. Acesso a um atributo não altera o estado da instância.

Uma operação (5) é um método ou função que podem ser executadas por instâncias do tipo. Ele pode retornar um valor. Se sua isQuery propriedade for true, ele não é possível alterar o estado da instância.

Para adicionar um atributo ou operação a um tipo, o tipo de atalho, aponte para Adde escolha atributo ou operação.

Para ver suas propriedades, clique com o botão direito no atributo ou operação e, em seguida, clique em Propriedades. As propriedades aparecem na Propriedades janela.

Para ver as propriedades dos parâmetros de uma operação, clique em […] na parâmetros de propriedade. Uma nova caixa de diálogo de propriedades é exibida.

Para obter informações detalhadas sobre as propriedades que você pode definir, consulte os seguintes tópicos:

Tipos de atributos e operações

Cada tipo de de um atributo ou operação e cada tipo de parâmetro, pode ser uma das seguintes opções:

  • (nenhum) -Você pode deixar um tipo não especificado na assinatura, omitindo os dois-pontos anterior (:).

  • Um dos tipos primitivos padrão: Boolean, Integer, seqüência de caracteres.

  • Um tipo que está definido no seu modelo.

  • Um valor com parâmetros de um tipo de modelo, escrito o modelo <Parameter>. Consulte tipos de modelos de.

Você também pode escrever o nome de um tipo que você ainda não tiver definido no seu modelo. O nome será listado em Tipos de não especificado no Gerenciador de modelos UML.

ObservaçãoObservação

Se você definir subseqüentemente uma classe ou interface, esse nome no seu modelo, atributos e operações mais antigos ainda farão referência ao elemento em tipos de não especificado. Se você quiser alterá-las para referir-se a nova classe, você deve visitar cada atributo ou operação e redefinir o tipo, selecionando a nova classe no menu drop-down.

Vários tipos de

Você pode definir uma multiplicidade de qualquer atributo, a operação ou o tipo de parâmetro.

Os valores permitidos são:

Multiplicidade

O atributo, parâmetro ou valor de retorno contém:

[1]

Um valor de determinado tipo. Este é o padrão.

[0..1]

Nulo ou um valor de determinado tipo.

[*]

Uma coleção de qualquer número de instâncias de determinado tipo.

[1..*]

Uma coleção de pelo menos uma instância de determinado tipo.

[n..m]

Uma coleção de entre n e m instâncias do tipo determinado.

Se a multiplicidade for mais de 1, você também pode definir essas propriedades:

  • IsOrdered - se verdadeiro, a coleção tem uma ordem definida.

  • IsUnique - se verdadeiro, há não há valores duplicados na coleção.

Visibilidade

Visibilidade indica se o atributo ou operação pode ser acessada fora da definição de classe. Os valores permitidos são:

Nome

Forma abreviada

Significado

Público

+

Acessível a partir de todos os outros tipos.

Private

-

Acessível somente para a definição interna desse tipo.

Pacote

~

Acessível somente dentro do pacote que contém esse tipo e, em todos os pacotes explicitamente importação-lo. Consulte Definindo Namespaces e pacotes de.

Protegido

#

Acessível somente a esse tipo e tipos que herdam dele. Consulte herança.

A assinatura de um atributo ou uma operação de configuração

A assinatura de um atributo ou uma operação é uma coleção de propriedades que inclui sua visibilidade, nome, parâmetros (operações) e tipo.

Você pode gravar uma assinatura diretamente no diagrama. Clique no atributo ou operação para selecioná-lo e, em seguida, clique nele novamente.

A assinatura de gravação 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 abreviada de visibilidade. O valor padrão é + (pública).

Cada tipo pode ser de tipos que você definiu no modelo, tipos padrão como, por exemplo, inteiro ou seqüência de caracteres ou o nome de um novo tipo que você ainda não tem definido.

ObservaçãoObservação

Se você escrever um nome sem um tipo em uma lista de parâmetros, ele indica o nome do parâmetro, em vez de seu tipo. Neste exemplo, MenuItem e inteiro se tornam os nomes dos dois parâmetros com tipos de não especificados:

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 de tipo, por exemplo:

+ AddItems (items : MenuItem [1..*])
+ MenuContent : MenuItem [*]

Se o atributo ou operação é estática, seu nome aparecerá sublinhado na assinatura. Se ele é abstrato, o nome será exibido em itálico.

No entanto, você só pode definir o É estático e É abstrata propriedades o Propriedades janela.

Assinatura completa

Quando você edita a assinatura de um atributo ou operação, algumas propriedades adicionais podem aparecer no final da linha e depois de cada parâmetro. Elas são exibidas entre 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:

Na assinatura

Propriedade

Significado

unique

É exclusivo

Não há nenhum valor duplicado na coleção. Aplica-se aos tipos de multiplicidade maior que 1.

ordered

É solicitada.

A coleção é uma seqüência. Se for false, não há nenhum item primeiro claras. Aplica-se aos tipos de multiplicidade maior que 1.

query

É a consulta

A operação não altera o estado da sua ocorrência. Só se aplica a operações.

/

É derivado.

O atributo é calculado a partir de valores de outros atributos ou associações.

"/" aparece antes do nome de um atributo. Por exemplo:

/TotalPrice: Integer

Geralmente a assinatura completa aparece no diagrama somente enquanto você estiver editando a ele. Quando terminar de editar, as propriedades adicionais ficam ocultos. Se você quiser ver a assinatura completa o tempo todo, o tipo de atalho e clique em Mostrar assinaturas completo.

Desenho e uso de associações

Use uma associação para representar qualquer tipo de ligação entre dois elementos, independentemente de como a ligação é implementada no software. Por exemplo, você poderia usar uma associação para representar um ponteiro no C#, uma relação em um banco de dados ou uma referência cruzada de uma parte de um arquivo XML para outro. Ela pode representar uma associação entre objetos no mundo real, como, por exemplo, a terra e sun. A associação não diga como o link é representado, somente as informações existentes.

Propriedades de uma associação

Após você ter criado uma associação, defina suas propriedades. A associação com o botão direito e clique em Propriedades.

Além de para as propriedades da associação como um todo, cada função, ou seja, cada extremidade da associação, tem algumas propriedades do seu próprio. Para exibi-las, expanda o Primeira função e Segunda função propriedades.

Algumas propriedades de cada função são diretamente visíveis no diagrama. Eles são:

  • Nome da função. Isso aparece na extremidade apropriada da associação no diagrama. Você pode defini-la no diagrama ou do Propriedades janela.

  • Multiplicidade, quais serão os padrões 1. Isso também aparece no diagrama perto da extremidade apropriada da associação.

  • Agregação de. Isso aparece como uma forma de losango em uma extremidade do conector. Você pode usá-lo para indicar que as instâncias em que a função de agregação proprietário ou contêm instâncias do outro.

  • É navegável. Se verdadeiro para apenas uma função, uma seta aparece na direção navegável. Você pode usar isso para indicar a navegabilidade de links e relações de banco de dados no software.

Para obter detalhes completos essas e outras propriedades, consulte Propriedades de associações de diagramas de classe UML.

Atributos e associações

Uma associação é uma maneira ilustrada de mostrar um atributo. Por exemplo, em vez de criar uma classe restaurante com um atributo do tipo de Menu, você pode desenhar uma associação de restaurante ao Menu.

Cada nome de atributo se torna um nome de função. Ele aparece na extremidade oposta da associação do tipo de proprietário. Veja, por exemplo, myMenu na ilustração.

Geralmente, é melhor usar os atributos somente para tipos não desenharia no diagrama, como tipos primitivos.

Associação e atributos equivalentes

Herança

Use o herança ferramenta para criar as relações do seguintes:

  • A generalização relação entre um tipo especializado e um tipo geral

    - ou -

  • A concretização a relação entre uma classe e uma interface que ele implementa.

Não é possível criar loops em relações de herança.

Generalização

Generalização significa que o tipo specializing ou derivado herda atributos, operações e associações do tipo geral ou base.

O tipo geral aparece no final da seta do relacionamento.

Os atributos e operações herdadas não são exibidos normalmente nos tipos de specializing. Mas você pode adicionar operações herdadas à lista de operações do tipo specializing. Isso é útil se você deseja substituir algumas das propriedades de uma operação no tipo de specializing ou se você quiser indicar que o código de implementação deve fazê-lo.

Para substituir a definição da operação em um tipo de specializing

  1. Clique na relação de generalização.

    Aparece realçado e uma marca de ação aparece próximo a ele.

  2. Clique na marca de ação e, em seguida, clique em Operações substituir.

    O Operações substituir caixa de diálogo aparece.

  3. Selecione as operações que você deseja que apareça no tipo de specializing e clique em OK.

As operações que você tiver selecionado agora aparecem no tipo de specializing.

Concretização

Concretização significa que uma classe implementa os atributos e operações especificadas pela interface. A interface está no final do conector de seta.

Quando você cria um conector de percepção, as operações da interface são automaticamente replicadas na classe concretizando. Se você adicionar novas operações para uma interface, eles são replicados em suas classes concretizando.

Depois de criar uma relação de realização, você poderá convertê-lo a notação de pirulito. A relação com o botão direito e escolha Mostrar como pirulito.

Isso permite que mostram as interfaces que uma classe implementa, sem congestionar os diagramas de classe com links de realização. Você também pode mostrar a interface e as classes que perceberem em diagramas separados.

Realização mostrada com conector e interface pirulito

Tipos de modelo

Você pode definir um modelo ou genérico tipo que pode ser parametrizado por outros valores ou tipos.

Por exemplo, você pode criar um dicionário genérico com parâmetros definido pelos tipos de chave e valor:

Classe de modelo com dois parâmetros

Para criar um tipo de modelo

  1. Crie uma classe ou interface. Isso tornará o seu tipo de modelo. O nome da mesma forma, por exemplo, Dictionary.

  2. O novo tipo de atalho e clique em Propriedades.

  3. No Propriedades janela, clique em […] na Parâmetros de modelo campo.

    O O Editor de coleção de parâmetros do modelo caixa de diálogo aparece.

  4. Clique em Adicionar.

  5. Defina a propriedade name para um nome de parâmetro para o seu tipo de modelo, por exemplo, Key.

  6. Definir o tipo de parâmetro. O padrão é classe.

  7. Se desejar que o parâmetro para aceitar somente as classes derivadas de uma determinada classe de base, defina Valor restrita a classe base que você deseja.

  8. Adicione como muitos parâmetros conforme necessário, clique em OK.

  9. Adicione atributos e operações para o tipo de modelo como você faria para outras classes.

    Você pode usar parâmetros cujo tipo é classe, Interface ou enumeração na definição de atributos e operações. Por exemplo, usando classes de parâmetro Key e Value, você poderia definir esta operação em Dictionary:

    Get(k : Key) : Value

    Você pode usar um parâmetro cujo tipo é Integer como um limite em uma multiplicidade. Por exemplo, um inteiro de parâmetro máximo poderia ser usado para definir a multiplicidade de um atributo como [0..max].

Quando você tiver criado tipos de modelo, pode usá-los para definir vinculações de modelo:

Uma classe associada do modelo de dicionário

Para usar um tipo de modelo

  1. Criar um novo tipo, por exemplo, AddressTable.

  2. O novo tipo de atalho e clique em Propriedades.

  3. No Modelo de ligação propriedade, selecione o modelo digite, por exemplo Dictionary, da lista drop-down.

  4. Expanda o Modelo de ligação propriedade.

    Uma linha aparece para cada parâmetro do tipo de modelo.

  5. Defina cada parâmetro para um valor adequado. Por exemplo, definir o Key parâmetro para uma classe chamada Name.

Packages

Você pode exibir os pacotes em um diagrama de classe UML. Um pacote é um recipiente para outros elementos de modelo. Você pode criar qualquer elemento dentro de um pacote. No diagrama, os elementos dentro do pacote serão mover-se quando você move o pacote.

Você pode usar o controle expandir/recolher para ocultar ou mostrar o conteúdo do pacote.

Para obter mais informações, consulte Definição de pacotes e espaços para nome.

Consulte também

Referência

Diagramas de seqüência UML: Referência

Conceitos

Como: Editar um modelo UML e diagramas

Diagramas de classe UML: Referência

Requisitos do usuário de modelagem.

Diagramas de componente UML: Referência

Diagramas de caso de uso UML: Referência

Diagramas de componente UML: Referência