Read this post in: de_DEen_USes_ESfr_FRhi_INid_IDjapl_PLru_RUvizh_CNzh_TW

Diagrama de Classes UML: Guia Completo de Referência

Class Diagram Sample


Introdução aos Diagramas de Classes

Diagrama de Classesfornece uma visão geral do sistema-alvo descrevendo os objetos e classes dentro do sistema e as relações entre eles. Oferece uma ampla variedade de usos; desde o modelamento da estrutura de dados específica do domínio até o projeto detalhado do sistema-alvo.

Principais Benefícios:

  • Modelagem de Domínio: Capture entidades de negócios e suas relações

  • Projeto de Sistema: Defina a arquitetura de software ao nível de classe

  • Geração de Código: Gere código de implementação a partir de elementos do modelo

  • Documentação: Crie documentação técnica sustentável

  • Reutilização de Modelo: Compartilhe modelos de classes entre diagramas de interação para modelagem de comportamento dinâmico

  • Geração Automatizada: Use o Diagrama de Formulário para gerar diagramas automaticamente com escopo definido pelo usuário


Notações e Elementos Principais

Elementos Estruturais Básicos

Class Icon Classe

Class

Definição: Uma classe descreve um conjunto de objetos que compartilham as mesmas especificações de características, restrições e semântica. A classe é um tipo de classificador cujas características são atributos e operações.

Propriedades Principais:

Propriedade Descrição
Nome O nome da classe
Pai O elemento do modelo que possui a classe
Visibilidade Determina a aparência e acessibilidade do namespace
Abstrato Se verdadeiro, a classe não pode ser instanciada diretamente
Folha Se verdadeiro, a classe não pode ser mais especializada
Raiz Indica se a classe não possui ancestrais
Ativo Determina se os objetos são ativos (concorrentes) ou passivos
Atributos Propriedades diretas possuídas pela classe
Operações Recursos comportamentais que especificam parâmetros de invocação
Parâmetros de modelo Parâmetros formais para vinculação de modelo

Enumeration Icon Classe <>

Enumeration

Definição: Uma forma de classe que atua como um contêiner de literais de enumeração. Por exemplo, uma enumeração Cor contém literais de enumeração vermelhoverde, e azul.


Interface Icon Classe <>

Interface

Definição: Uma interface é um tipo de classificador que representa uma declaração de um conjunto de recursos públicos coerentes e obrigações. Uma interface especifica um contrato; qualquer instância de um classificador que realize a interface deve cumprir esse contrato.

Características Principais:

  • Interfaces são declarações e não instanciáveis

  • Implementadas por instâncias de classificadores instanciáveis

  • Um classificador pode implementar múltiplas interfaces

  • Pode incluir restrições e especificações de protocolo


Primitive Icon Classe <>

Primitive

Definição: Uma forma de classe que representa um tipo de dados pré-definido. Por exemplo, uma booleano classe (tipo).


Note Icon Nota

Note

Definição: Uma nota (comentário) fornece a capacidade de anexar vários comentários a elementos. Um comentário não possui força semântica, mas pode conter informações úteis para um modelador.


Constraint Icon Restrição

Constraint

Definição: Uma condição ou restrição expressa em texto em linguagem natural ou em uma linguagem legível por máquina, com o propósito de declarar parte da semântica de um elemento.

Propriedades:

Propriedade Descrição
Nome Nome opcional da restrição
Expressão A condição que deve ser verdadeira para satisfação
Documentação Descrição da restrição

Collaboration Icon Colaboração

Collaboration

Definição: Uma colaboração é representada como um tipo de classificador e define um conjunto de entidades cooperativas a serem desempenhadas por instâncias (seus papéis), bem como um conjunto de conectores que definem caminhos de comunicação entre as instâncias participantes.


Model Icon Modelo

Definição: Um pacote de nível superior que contém todo o modelo ou uma parte significativa dele.


NARY Icon NÁRIO

Definição: Representa uma associação n-ária que conecta múltiplos classificadores simultaneamente.


Tipos de Relacionamento

Relacionamentos de Associação

Association Icon Associação (Sem agregação)

Association

Definição: Uma associação especifica uma relação semântica que pode ocorrer entre instâncias tipadas. Ela possui pelo menos dois extremos representados por propriedades, cada uma das quais está conectada ao tipo do extremo.

Propriedades Principais:

Propriedade Descrição
Nome O nome da associação
Visibilidade Aparência e acessibilidade no namespace
Extremo da Associação De/Para Fonte e destino da associação
Abstrato Se verdadeiro, a associação é incompleta e não instanciável
Folha Se verdadeiro, a associação não pode ser mais especializada
Derivado Especifica se é derivado de outros elementos do modelo

Aggregation Icon Agregação (Associação compartilhada)

Aggregation

Definição: Um tipo de associação que tem um de seus extremos marcadocompartilhadocomo um tipo de agregação, significando que possui uma agregação compartilhada (relação todo-parte em que as partes podem existir independentemente).


Composition Icon Composição (associação composta)

Composition

Definição: Uma forma forte de agregação em que uma instância de parte pode ser incluída em no máximo um composto por vez. Se um composto for excluído, suas partes geralmente são excluídas juntamente com ele.

Características Principais:

  • As partes não podem pertencer a múltiplos compostos simultaneamente

  • Excluir o composto geralmente exclui suas partes

  • As partes podem ser removidas antes da exclusão do composto

  • As composições podem formar grafos acíclicos direcionados com exclusão transitiva


Association Class Icon Classe de Associação

Association Class

Definição: Um elemento de modelo que possui propriedades de associação e de classe. Uma Classe de Associação pode ser vista como uma associação que também possui propriedades de classe, ou como uma classe que também possui propriedades de associação.

Recurso RelacionadoDesenhar classe de associação


Relacionamentos de Dependência

Dependency Icon Dependência

Dependency

Definição: Uma relação que indica que um elemento ou um conjunto de elementos de modelo requer outros elementos de modelo para sua especificação ou implementação.

Propriedades:

Propriedade Descrição
Fornecedor Elemento(s) independente(s) na relação
Cliente Elemento(s) dependente(s) na relação
Visibilidade Aparência e acessibilidade do namespace
Mapeamento Expressão opcional que indica a relação

Abstraction Icon Abstração

Abstraction

Definição: Uma relação que relaciona dois elementos ou conjuntos de elementos que representam o mesmo conceito em níveis diferentes de abstração ou de perspectivas distintas.


Realization Icon Realização

Realization

Definição: Uma relação de abstração especializada entre dois conjuntos de elementos de modelo, um dos quais representa uma especificação (o fornecedor) e o outro representa uma implementação deste último (o cliente).

Casos de uso: Refinamento passo a passo, otimizações, transformações, modelos, síntese de modelos, composição de frameworks


Generalization Icon Generalização

Generalization

Definição: Uma relação taxonômica entre um classificador mais geral e um classificador mais específico. Cada instância do classificador específico também é uma instância indireta do classificador geral.

Propriedade-chave:

Propriedade Descrição
Substituível Se verdadeiro, o classificador específico pode substituir o classificador geral em tempo de execução

Usage Icon Uso

Usage

Definição: Uma relação na qual um elemento exige outro elemento (ou conjunto de elementos) para sua implementação ou operação completa.


Access Icon Acesso

Access

Definição: Uma importação de elemento definida como uma relação direcionada entre um namespace importador e um elemento pacotável. O nome do elemento pacotável ou seu alias é adicionado ao namespace do namespace importador.

Notação:

  • <<import>>palavra-chave para visibilidade pública

  • <<acesso>>palavra-chave para visibilidade privada


Import Icon Importação

Import

Definição: Uma importação de pacote é definida como uma relação direcionada que identifica um pacote cujos membros devem ser importados por um namespace.


Permission Icon Permissão

Permission

Definição: Um tipo de dependência que concede a um elemento de modelo permissão para acessar elementos em outro namespace.


Instantiation Icon Instanciação

Instantiation

Definição: Uma dependência de uso entre classificadores que indica que operações no cliente criam instâncias do fornecedor.


Binding Icon Vinculação

Binding

Definição: A Vinculação de Modelo é uma relação direcionada de um elemento modelável vinculado para a assinatura do modelo-alvo. Uma Vinculação de Modelo possui um conjunto de substituições de parâmetros de modelo.


Derive Icon Derivar

Derive

Definição: Especifica uma relação de derivação entre elementos de modelo que geralmente, mas não necessariamente, são do mesmo tipo. Uma dependência derivada especifica que o cliente pode ser calculado a partir do fornecedor.


Refine Icon Refinar

Refine

Definição: Especifica uma relação de aprimoramento entre elementos de modelo em níveis semânticos diferentes, como análise e design.

Casos de Uso: Transformações da análise para o design, evolução do modelo


Trace Icon Rastreamento

Trace

Definição: Especifica uma relação de rastreamento entre elementos de modelo ou conjuntos de elementos de modelo que representam o mesmo conceito em modelos diferentes.

Uso Principal: Rastreamento de requisitos e mudanças entre modelos; o mapeamento é geralmente informal e bidirecional


Substitution Icon Substituição

Substitution

Definição: Uma relação entre dois classificadores que indica que o classificador substituto está em conformidade com o contrato especificado pelo classificador de contrato.

Implicação: Instâncias do classificador substituto são substituíveis em tempo de execução onde instâncias do classificador de contrato são esperadas.


Merge Icon Mesclar

Merge

Definição: Uma mesclagem de pacotes é uma relação direcionada entre dois pacotes que indica que os conteúdos dos dois pacotes devem ser combinados.

Características Principais:

  • Semelhante à Generalização, mas para conteúdos de pacotes

  • Usado quando elementos em pacotes diferentes representam o mesmo conceito

  • Permite a extensão incremental de conceitos básicos

  • Particularmente útil na meta-modelagem e na definição de metamodelos UML


Variantes de Classe e Estereótipos

Classes Específicas de ORM

ORM Persistable Icon Classe <>

ORM Persistable

Definição: Uma forma especial de classe que pode ser usada para modelar um modelo de objeto de um banco de dados relacional. O código ORM pode ser gerado a partir de um conjunto de classes ORM Persistíveis.

Propriedades Adicionais:

Propriedade Descrição
Detalhes da Classe ORM Configurações que afetam a geração de código ORM
Chave de Negócio Usado para gerar operações equals() e hashCode()
Consulta ORM Define Qualificadores ORM e consultas nomeadas

ORM Abstract Persistable Icon Classe <>

ORM Abstract Persistable

Definição: Uma forma especial de classe que captura atributos comuns de classes sub-ORM-Persistíveis.


ORM User Type Icon Classe <>

ORM User Type

Definição: Uma classe de tipo de usuário define um tipo de objeto para o modelo de objeto que pode ser acessado no código ORM gerado e persistido no banco de dados como uma coluna em vez de uma entidade.

Recurso RelacionadoSuporte a Tipo de Usuário do Hibernate


ORM Parameterized Type Icon Classe <>

ORM Parameterized Type

Definição: Um tipo parametrizado ORM oferece a você a oportunidade de garantir a correção dos dados ao implementar a verificação de correção no código ORM gerado.


Entity Bean Icon Classe <>

Entity Bean

Definição: Uma forma especial de classe para modelar o bean de entidade EJB.

Propriedades Adicionais:

Propriedade Descrição
Detalhes do Código da Classe EJB Atributos relacionados ao EJB para geração de código

Propriedades e Configuração

Referência às Propriedades Comuns da Classe

Propriedade Aplica-se a Descrição
Nome Todos os elementos Identificador para o elemento do modelo
Pai Classes, Interfaces Elemento do modelo proprietário
Visibilidade A maioria dos elementos Controla a aparência do namespace: públicoprivadoprotegidopacote
Abstrato Classes, Associações Se verdadeiro, o elemento é incompleto e não pode ser instanciado diretamente
Folha Classes, Associações Se verdadeiro, o elemento não pode ser mais especializado
Raiz Classes Indica se o elemento não possui ancestrais
Ativo Classes Determina se os objetos são ativos (concorrentes) ou passivos
Modelo de Negócio Classes Sinalizador para marcar como uma “classe de negócios”
Atributos Classes Propriedades diretas possuídas pela classe
Operações Classes Recursos comportamentais com parâmetros e restrições
Parâmetros de Modelo Elementos modeláveis Parâmetros formais para elementos genéricos/parametrizados
Derivado Associações Especifica se o elemento é derivado de outros elementos do modelo

Configurações de Geração de Código

Configuração Específica para Java

Configuração Específica para ORM

  • Consulta ORM: Define qualificadores e consultas nomeadas para classes persistíveis

  • Chave de Negócio: Configure campos usados para a geração de equals()/hashCode()

  • Mapeamento de Coluna: Especifique nomes e tipos de colunas do banco de dados


Tipos de Diagramas UML Relacionados

Diagramas de classe integram-se a outros diagramas UML para modelagem abrangente de sistemas:

Tipo de Diagrama Propósito Link
Diagrama de Caso de Uso Capturar requisitos funcionais Diagrama de caso de uso
Diagrama de Sequência Modelar interações dinâmicas ao longo do tempo Diagrama de sequência
Diagrama de Comunicação Mostrar interações e links entre objetos Diagrama de comunicação
Diagrama de Máquina de Estados Modelar o ciclo de vida e os estados dos objetos Diagrama de máquina de estados
Diagrama de Atividade Representar fluxos de trabalho e processos Diagrama de atividade
Diagrama de Componente Mostrar componentes de software físicos Diagrama de componente
Diagrama de Implantação Modelar a implantação de hardware e software Diagrama de implantação
Diagrama de Pacote Organizar elementos do modelo em pacotes Diagrama de pacote
Diagrama de Objeto Mostrar instâncias em um momento específico Diagrama de objeto
Diagrama de Estrutura Composta Modelar a estrutura interna dos classificadores Diagrama de estrutura composta
Diagrama de Tempo Focar nas restrições de tempo Diagrama de tempo
Diagrama de Visão Geral de Interação Combinar diagramas de interação e diagramas de atividade Diagrama de visão geral de interação

Lista de Referências

  1. Referências de Diagramas Principais
  2. Diagrama de Casos de Uso: Representação visual da funcionalidade do sistema do ponto de vista do usuário, capturando atores e seus objetivos.

  3. Diagrama de Sequência: Mostra interações entre objetos organizadas em sequência temporal, enfatizando a ordem das mensagens.

  4. Diagrama de Comunicação: Exibe interações entre objetos com ênfase nas relações estruturais entre eles.

  5. Diagrama de Máquina de Estados: Modela o comportamento dinâmico de um objeto através de seus estados de ciclo de vida e transições.

  6. Diagrama de Atividade: Representa fluxos de trabalho, processos de negócios e etapas operacionais com fluxo de controle.

  7. Diagrama de Componente: Ilustra componentes de software físicos, suas interfaces e dependências.

  8. Diagrama de Implantação: Mostra nós de hardware, artefatos de software e suas relações de implantação.

  9. Diagrama de Pacote: Organiza elementos do modelo em pacotes hierárquicos para modularidade e gerenciamento de namespace.

  10. Diagrama de Objeto: Exibe instâncias de classes e seus links em um ponto específico no tempo.

  11. Diagrama de Estrutura Composta: Modela a estrutura interna de classificadores, incluindo partes, portas e conectores.

  12. Diagrama de Tempo: Foca em restrições de tempo e mudanças de estado em intervalos de tempo precisos.

  13. Diagrama de Visão Geral de Interação: Combina diagramas de interação com notação de diagrama de atividade para fluxo de interação de alto nível.

  14. Referências de Notação de Diagrama de Classe
  15. Abstração: Relação entre elementos que representam o mesmo conceito em níveis diferentes de abstração.

  16. Acesso: Relação de importação de elemento que controla a visibilidade dos elementos pacotáveis importados.

  17. Agregação (Associação compartilhada): Relação todo-parte em que as partes podem existir independentemente do todo.

  18. Associação (Sem agregação): Relação semântica entre instâncias tipadas com extremidades navegáveis.

  19. Classe de associação: Elemento de modelo que combina propriedades de associação e de classe para atributos de relacionamento.

  20. Vinculação: Relação de vinculação de modelo com substituições de parâmetros para elementos genéricos.

  21. Classe: Classificador principal que descreve objetos com recursos, atributos e operações compartilhados.

  22. Classe <>: Classe container para literais de enumeração que representam conjuntos de valores fixos.

  23. Classe <>: Especificação de contrato que declara recursos públicos para classificadores implementadores.

  24. Classe <>: Classe de tipo de dados pré-definido que representa tipos básicos da linguagem.

  25. Classe <>: Classe mapeada para banco de dados que suporta geração de código ORM e persistência.

  26. Classe <>: Classe base abstrata para compartilhar atributos comuns ORM entre subclasses persistíveis.

  27. Classe <>: Tipo personalizado persistido como coluna de banco de dados em vez de tabela de entidade.

  28. Classe <>: Tipo parametrizado que permite a validação da correção dos dados no código ORM.

  29. Classe <>: Classe de bean de entidade EJB para modelagem de aplicações Java empresariais.

  30. Colaboração: Classificador que define papéis cooperativos e caminhos de comunicação para instâncias interativas.

  31. Composição (Associação composta): Relação forte todo-parte com propriedade exclusiva e exclusão em cascata.

  32. Restrição: Condição ou restrição que declara o significado dos elementos do modelo.

  33. Dependência: Relação que indica que um elemento exige outro para especificação ou implementação.

  34. Derivar: Relação que especifica que o elemento cliente é computável a partir do elemento fornecedor.

  35. Generalização: Relação de herança onde o classificador específico herda características do classificador geral.

  36. Importar: Relação de importação de pacote que torna os membros do pacote disponíveis para o namespace que importa.

  37. Instanciação: Dependência que indica que operações do cliente criam instâncias do classificador fornecedor.

  38. Mesclar: Mesclagem de pacotes que combina os conteúdos de dois pacotes para extensão incremental de conceitos.

  39. Modelo: Container de nível superior para organizar elementos do modelo e pacotes.

  40. N-ÁRIO: Associação n-ária que conecta múltiplos classificadores simultaneamente.

  41. Nota: Elemento de comentário para anexar observações não semânticas a elementos do modelo.

  42. Permissão: Dependência que concede permissão de acesso a elementos em outro namespace.

  43. Realização: Abstração especializada onde o cliente implementa a especificação definida pelo fornecedor.

  44. Refinar: Relação entre elementos do modelo em níveis semânticos diferentes, como análise e design.

  45. Substituição: Relação que indica que o classificador substituto está em conformidade com a especificação do classificador de contrato.

  46. Rastrear: Rastreamento de relacionamentos com o mesmo conceito em modelos diferentes, principalmente para gestão de requisitos.

  47. Uso: Dependência em que o elemento cliente exige o elemento fornecedor para implementação ou operação completa.

  48. Tutorial e Referências de Recursos
  49. Desenhando a Classe de Associação: Guia passo a passo para criar classes de associação no Visual Paradigm.

  50. Gerar e Sincronizar Código Java: Tutorial para engenharia de ida e volta entre diagramas de classes e implementação Java.

  51. Suporte a Tipo de Usuário Hibernate: Recurso para implementar tipos de usuário personalizados do Hibernate com classes ORM-Persistable.

  52. Referência de Padrões
  53. Object Management Group – Linguagem Unificada de Modelagem: Fonte oficial da especificação UML da entidade reguladora da UML.

  54. Definição das notações é citada de Object Management Group Linguagem Unificada de Modelagem (OMG UML) Versão Superestrutura 2.2 e versões anteriores (para notações que já não existem mais na especificação mais recente).


  1. Este guia baseia-se na documentação do diagrama de classes UML do Visual Paradigm. Para as especificações mais atuais, sempre consulte os padrões oficiais OMG UML.