
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
Classe

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 |
Classe <>

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 vermelho, verde, e azul.
Classe <>

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
Classe <>

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

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.
Restrição

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 |
Colaboração

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.
Modelo
Definição: Um pacote de nível superior que contém todo o modelo ou uma parte significativa dele.
NÁRIO
Definição: Representa uma associação n-ária que conecta múltiplos classificadores simultaneamente.
Tipos de Relacionamento
Relacionamentos de Associação
Associação (Sem agregação)

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 |
Agregação (Associação compartilhada)

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).
Composição (associação composta)

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
Classe de Associação

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 Relacionado: Desenhar classe de associação
Relacionamentos de Dependência
Dependência

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 |
Abstração

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.
Realização

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
Generalização

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 |
Uso

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

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
Importação

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.
Permissão

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

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

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.
Derivar

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.
Refinar

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
Rastreamento

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
Substituição

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.
Mesclar

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
Classe <>

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 |
Classe <>

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

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 Relacionado: Suporte a Tipo de Usuário do Hibernate
Classe <>

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.
Classe <>

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úblico, privado, protegido, pacote |
| 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
-
Anotações Java: Metadados adicionados ao código-fonte Java para fins de anotação
-
Engenharia de Ida e Volta: Gerar e sincronizar código 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
- Referências de Diagramas Principais
-
Diagrama de Casos de Uso: Representação visual da funcionalidade do sistema do ponto de vista do usuário, capturando atores e seus objetivos.
-
Diagrama de Sequência: Mostra interações entre objetos organizadas em sequência temporal, enfatizando a ordem das mensagens.
-
Diagrama de Comunicação: Exibe interações entre objetos com ênfase nas relações estruturais entre eles.
-
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.
-
Diagrama de Atividade: Representa fluxos de trabalho, processos de negócios e etapas operacionais com fluxo de controle.
-
Diagrama de Componente: Ilustra componentes de software físicos, suas interfaces e dependências.
-
Diagrama de Implantação: Mostra nós de hardware, artefatos de software e suas relações de implantação.
-
Diagrama de Pacote: Organiza elementos do modelo em pacotes hierárquicos para modularidade e gerenciamento de namespace.
-
Diagrama de Objeto: Exibe instâncias de classes e seus links em um ponto específico no tempo.
-
Diagrama de Estrutura Composta: Modela a estrutura interna de classificadores, incluindo partes, portas e conectores.
-
Diagrama de Tempo: Foca em restrições de tempo e mudanças de estado em intervalos de tempo precisos.
-
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.
- Referências de Notação de Diagrama de Classe
-
Abstração: Relação entre elementos que representam o mesmo conceito em níveis diferentes de abstração.
-
Acesso: Relação de importação de elemento que controla a visibilidade dos elementos pacotáveis importados.
-
Agregação (Associação compartilhada): Relação todo-parte em que as partes podem existir independentemente do todo.
-
Associação (Sem agregação): Relação semântica entre instâncias tipadas com extremidades navegáveis.
-
Classe de associação: Elemento de modelo que combina propriedades de associação e de classe para atributos de relacionamento.
-
Vinculação: Relação de vinculação de modelo com substituições de parâmetros para elementos genéricos.
-
Classe: Classificador principal que descreve objetos com recursos, atributos e operações compartilhados.
-
Classe <>: Classe container para literais de enumeração que representam conjuntos de valores fixos.
-
Classe <>: Especificação de contrato que declara recursos públicos para classificadores implementadores.
-
Classe <>: Classe de tipo de dados pré-definido que representa tipos básicos da linguagem.
-
Classe <>: Classe mapeada para banco de dados que suporta geração de código ORM e persistência.
-
Classe <>: Classe base abstrata para compartilhar atributos comuns ORM entre subclasses persistíveis.
-
Classe <>: Tipo personalizado persistido como coluna de banco de dados em vez de tabela de entidade.
-
Classe <>: Tipo parametrizado que permite a validação da correção dos dados no código ORM.
-
Classe <>: Classe de bean de entidade EJB para modelagem de aplicações Java empresariais.
-
Colaboração: Classificador que define papéis cooperativos e caminhos de comunicação para instâncias interativas.
-
Composição (Associação composta): Relação forte todo-parte com propriedade exclusiva e exclusão em cascata.
-
Restrição: Condição ou restrição que declara o significado dos elementos do modelo.
-
Dependência: Relação que indica que um elemento exige outro para especificação ou implementação.
-
Derivar: Relação que especifica que o elemento cliente é computável a partir do elemento fornecedor.
-
Generalização: Relação de herança onde o classificador específico herda características do classificador geral.
-
Importar: Relação de importação de pacote que torna os membros do pacote disponíveis para o namespace que importa.
-
Instanciação: Dependência que indica que operações do cliente criam instâncias do classificador fornecedor.
-
Mesclar: Mesclagem de pacotes que combina os conteúdos de dois pacotes para extensão incremental de conceitos.
-
Modelo: Container de nível superior para organizar elementos do modelo e pacotes.
-
N-ÁRIO: Associação n-ária que conecta múltiplos classificadores simultaneamente.
-
Nota: Elemento de comentário para anexar observações não semânticas a elementos do modelo.
-
Permissão: Dependência que concede permissão de acesso a elementos em outro namespace.
-
Realização: Abstração especializada onde o cliente implementa a especificação definida pelo fornecedor.
-
Refinar: Relação entre elementos do modelo em níveis semânticos diferentes, como análise e design.
-
Substituição: Relação que indica que o classificador substituto está em conformidade com a especificação do classificador de contrato.
-
Rastrear: Rastreamento de relacionamentos com o mesmo conceito em modelos diferentes, principalmente para gestão de requisitos.
-
Uso: Dependência em que o elemento cliente exige o elemento fornecedor para implementação ou operação completa.
- Tutorial e Referências de Recursos
-
Desenhando a Classe de Associação: Guia passo a passo para criar classes de associação no Visual Paradigm.
-
Gerar e Sincronizar Código Java: Tutorial para engenharia de ida e volta entre diagramas de classes e implementação Java.
-
Suporte a Tipo de Usuário Hibernate: Recurso para implementar tipos de usuário personalizados do Hibernate com classes ORM-Persistable.
- Referência de Padrões
-
Object Management Group – Linguagem Unificada de Modelagem: Fonte oficial da especificação UML da entidade reguladora da UML.
-
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).
- 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.











