Na engenharia de software, um Linguagem Unificada de Modelagem (UML) diagrama de classes é um diagrama estrutural estático que descreve a estrutura de um sistema mostrando suas classes, seus atributos, operações (ou métodos) e relações entre objetos.

Propósitos dos Diagramas de Classes
- Mostrar a estrutura estática dos classificadores no sistema
- Fornece uma notação fundamental para outros diagramas estruturais UML
- Altamente útil para desenvolvedores e outros membros da equipe
- Analistas de negócios podem usar diagramas de classes para modelar sistemas a partir de uma perspectiva de negócios
Os diagramas de classes UML consistem em:
- Um conjunto de classes
- Um conjunto de relações entre classes
O que é uma Classe?
Uma descrição de um grupo de objetos com papéis semelhantes, incluindo:
- Recursos Estruturais (atributos): define o que os objetos da classe “sabem”
- Representa o estado do objeto
- Descreve a estrutura ou características estáticas da classe
- Recursos Comportamentais (operações): define o que os objetos da classe “podem fazer”
- Define como os objetos interagem
- Descreve o comportamento ou características dinâmicas da classe
Notação de Classe
A notação de classe consiste em três partes:
- Nome da Classe
- O nome da classe aparece no primeiro compartimento.
- Atributos da Classe
- Os atributos são exibidos no segundo compartimento.
- O tipo é mostrado após dois pontos.
- Atributos mapeiam para variáveis de membro (membros de dados) no código.
- Operações da Classe (métodos)
- Operações são mostradas no terceiro compartimento. Elas representam os serviços fornecidos pela classe.
- O tipo de retorno aparece após dois pontos no final da assinatura do método.
- Os tipos de parâmetro aparecem após dois pontos, seguindo o nome do parâmetro.
- Operações mapeiam para métodos da classe no código.

Representação gráfica da classe MinhaClasse como mostrado acima:
- MinhaClasse tem 3 atributos e 3 operações
- O parâmetro p3 da op2 é do tipo int
- op2 retorna um float
- op3 retorna um ponteiro (indicado por *) para a Classe6
Relações entre Classes
Uma classe pode estar envolvida em uma ou mais relações com outras classes. As relações podem ser dos seguintes tipos: (consulte a imagem à direita para representações gráficas).
| Tipo de Relação | Diagrama |
|---|---|
Herança (ou Generalização):
|
![]() |
Associação Simples:
|
![]() |
Agregação:
|
![]() |
Composição:
|
![]() |
Dependência:
|
![]() |
Nomes de Relacionamento
- Os nomes de relacionamento são escritos no meio da linha de associação.
- Os bons nomes de relacionamento têm significado quando lidos em voz alta:
-
- “Cada planilha contém algumas células”
<li>Expressão avalia-se para um valor”
-
- Eles frequentemente têm uma pequena seta indicando a direçãode leitura, por exemplo, expressão avalia-se para valor, mas valor não avalia-se para expressão.

Relação – Papéis
- O papel define o propósito da direção em uma associação.
- O papel é escrito na extremidade da linha de associação e descreve o papel que uma classe desempenha nessa relação.
- Por exemplo, Cell está relacionado a Expression. A natureza da relação é que Expression é o fórmulada célula.
Visibilidade dos Membros da Classe
No design orientado a objetos, a visibilidade de atributos e operações é representada. O UML define quatro tipos de visibilidade: público, protegido, – indica atributo ou operação privado, e pacote.
Os símbolos +, -, # e ~ antes dos nomes de atributos e operações indicam visibilidade:
- + indica atributo ou operação público
- – indica atributo ou operação privado
- # indica atributo ou operação protegido
- ~ indica atributo ou operação de pacote
Exemplo de Visibilidade de Classe

No exemplo acima:
- attribute1 e op1 de MyClassName são públicos
- attribute3 e op3 são protegidos
- attribute2 e op2 são privados
Permissões de acesso para diferentes membros da classe são mostradas abaixo:
| Nível de Acesso | Público (+) | Privado (-) | Protegido (#) | Pacote (~) |
|---|---|---|---|---|
| Membros da mesma classe | Sim | Sim | Sim | Sim |
| Membros das classes derivadas | Sim | Não | Sim | Sim |
| Membros de qualquer outra classe | Sim | Não | Não | Apenas mesmo pacote |
Multiplicidade
A multiplicidade indica quantos objetos de uma classe participam de uma relação. Pode ser expressa como:
- Exatamente 1 – 1
- Zero ou um – 0..1
- Muitos – 0..* ou *
- Um ou mais – 1..*
- Número exato – por exemplo, 3..4 ou 6
- Relação complexa – por exemplo, 0..1, 3..4, 6* significa qualquer número exceto 2 ou 5
Exemplo de multiplicidade
- Requisito: Um aluno pode se inscrever em muitos cursos, e muitos alunos podem se inscrever em um único curso.
- No exemplo abaixo, odiagrama de classes (esquerda) descreve o modelo estático do requisito acima, enquanto o diagrama de objetos (direita) mostra uma instantânea do registro de cursos (instância do diagrama de classes) para os cursos de engenharia de software e gestão de bancos de dados.

Exemplo de agregação – Computador e Componentes
- A agregação é um caso especial de associação que representa uma hierarquia de “contém”.
- A agregação é a classe pai, e componente é a classe filha.

Exemplo de herança – Classificação de células
- A herança é outro caso especial de associação que representa uma hierarquia de “tipo de”.
- A herança simplifica o modelo de análise ao introduzir a taxonomia.
- As subclasses herdam atributos e operações da superclasse.

Diagrama de Classes – Exemplo de Ferramenta de Diagrama
Diagramas de classes podem incluir notas associadas a classes ou relações. As notas são exibidas em cinza.

A partir do exemplo acima, podemos interpretar o diagrama da seguinte forma:
- Shape é uma classe abstrata. É mostrada em itálico.
- Shape é uma superclasse. Círculo, Retângulo e Polígono herdam de Shape. Em outras palavras, um Círculo é uma Shape. Trata-se de uma relação de generalização/herança.
- Há uma associação entre DialogBox e DataController.
- Shape faz parte de Window. Trata-se de uma relação de agregação. Shape pode existir sem Window.
- Point faz parte de Circle. Trata-se de uma relação de composição. Point não pode existir sem Circle.
- Window depende de Event. Mas Event não depende de Window.
- Os atributos de Circle são radius e center. É uma classe concreta.
- Os métodos de Circle são area(), circum(), setCenter() e setRadius().
- O parâmetro radius em Circle é do tipo float.
- O método area() em Circle retorna um valor do tipo double.
- Os atributos e métodos de Rectangle são ocultos. Algumas outras classes no diagrama também ocultam seus atributos e métodos.
Gerenciamento de Sistemas Complexos – Múltiplos ou Diagramas de Classes Únicos?
Ao modelar sistemas grandes ou grandes domínios empresariais, muitas entidades devem ser consideradas. Devemos usar múltiplos ou um único diagrama de classes? A resposta é:
- É melhor usar vários diagramas de classes em vez de modelar cada entidade e suas relações em um único diagrama.
- Dividir o sistema em vários diagramas de classes torna mais fácil de entender, especialmente quando cada diagrama é uma representação visual de uma parte específica do sistema.
Perspectiva dos Diagramas de Classes no Ciclo de Vida do Desenvolvimento de Software
Diagramas de classes podem ser usados em diferentes etapas do Ciclo de Vida do Desenvolvimento de Software (SDLC), e geralmente são modelados três níveis diferentes de detalhe (perspectivas) de forma progressiva:
Perspectiva Conceitual: O diagrama é interpretado como descrevendo coisas no mundo real. Assim, se você começar com uma perspectiva conceitual, desenha um diagrama representando conceitos no domínio sendo estudado. Esses conceitos se relacionam naturalmente às classes que os implementam. Essa perspectiva é considerada independente de linguagem.
Perspectiva de Especificação: O diagrama é interpretado como descrevendo abstrações de software ou componentes com especificações e interfaces, sem se comprometer com uma implementação específica. Assim, se você abordar a partir da perspectiva de especificação, você está estudando interfaces de software em vez de implementação.
Perspectiva de Implementação: O diagrama é interpretado como descrevendo uma tecnologia específica e linguagemimplementação de software. Assim, se você abordar a partir da perspectiva de implementação, você está estudando a implementação de software.
Tente desenhar um diagrama de classes UML agora
Baixe gratuitamente




