Diagramas de Classes

Os diagramas de classes são o tipo mais comum de diagrama UML, usados para modelar a estrutura estática de um sistema mostrando classes, seus atributos, operações e relacionamentos.

Criando Classes

Usando a Ferramenta Classe

Em uma página de Diagrama de Classes UML, pressione U ou escolha Classe no menu UML da barra de ferramentas. Clique na tela para posicionar uma caixa de classe, ou arraste para definir seu tamanho. Pressione Return com uma classe selecionada para renomeá-la.

Estrutura da Caixa de Classe

Uma caixa de classe UML consiste em três compartimentos:

  1. Compartimento de nome — contém o nome da classe e um estereótipo opcional
  2. Compartimento de atributos — lista as propriedades/campos da classe
  3. Compartimento de operações — lista os métodos/funções da classe

Propriedades da Classe

Selecione uma classe e use a seção UML da aba Organizar do Inspetor para configurar suas propriedades:

Nome

O nome da classe aparece em negrito no compartimento superior. A convenção usa PascalCase (por exemplo, CustomerOrder).

Estereótipo

Classificador opcional que aparece acima do nome da classe entre aspas angulares:

  • <<interface>> — para definições de interface
  • <<abstract>> — para classes abstratas
  • <<enumeration>> — para tipos enumerados
  • <<entity>> — para entidades de domínio
  • Estereótipos personalizados também são suportados

Abstrata

Alterna para renderizar o nome da classe em itálico, indicando uma classe abstrata.

Redimensionamento restrito

Quando ativado (o padrão), redimensionar mantém as proporções da caixa de classe.

Atributos

Os atributos representam os dados/propriedades de uma classe.

Adicionando Atributos

  1. Selecione a classe
  2. Na seção UML, encontre Atributos — um editor multilinha com um atributo por linha
  3. Clique em + (ou pressione Cmd+L) para adicionar um novo atributo e digite seus detalhes

Sintaxe do Atributo

Os atributos seguem este formato: visibilidade nome : tipo

Modificadores de Visibilidade:

SímboloSignificadoDescrição
+PúblicoAcessível de qualquer lugar
-PrivadoAcessível apenas dentro da classe
#ProtegidoAcessível dentro da classe e subclasses
~PacoteAcessível dentro do mesmo pacote

Exemplos:

  • -id: Int — ID inteiro privado
  • +name: String — nome de string público
  • #createdAt: Date — campo de data protegido
  • ~cache: Map<String, Any> — cache privado de pacote

Operações

As operações representam o comportamento/métodos de uma classe.

Adicionando Operações

  1. Selecione a classe
  2. Na seção UML, encontre Operações — um editor multilinha com uma operação por linha
  3. Clique em + (ou pressione Shift+Cmd+L) para adicionar uma nova operação e digite seus detalhes

Sintaxe da Operação

As operações seguem este formato: visibilidade nome(parâmetros) : tipoDeRetorno

Exemplos:

  • +getName(): String — getter público retornando String
  • -validate(input: String): Boolean — método de validação privado
  • +process(data: Data, options: Options): Result — método com múltiplos parâmetros
  • +save(): void — método sem valor de retorno

Relacionamentos

Pressione R para ativar a ferramenta Relacionamento e depois arraste de uma classe para outra para criar uma conexão.

Tipos de Relacionamento

TipoEstilo de LinhaSetaCaso de Uso
AssociaçãoLinha sólidaSeta abertaRelacionamento geral
DependênciaLinha tracejadaSeta abertaRelacionamento de "uso"
HerançaLinha sólidaTriângulo vazadoRelacionamento "é um" (extends)
RealizaçãoLinha tracejadaTriângulo vazadoImplementação de interface
AgregaçãoLinha sólidaLosango vazado"Tem um" (posse fraca)
ComposiçãoLinha sólidaLosango preenchido"Tem um" (posse forte)

Criando Relacionamentos

  1. Pressione R para ativar a ferramenta Relacionamento
  2. Clique na classe de origem
  3. Arraste até a classe de destino
  4. Solte para criar a conexão
  5. Use a seção UML do Inspetor para definir o Tipo de relacionamento — o estilo de linha e as pontas de seta seguem o tipo

Rótulos de Relacionamento

Selecione um relacionamento e defina seus rótulos na seção UML do Inspetor:

  • Rótulo — descreve o relacionamento (por exemplo, "gerencia", "contém")
  • Multiplicidade — valores de Origem e Destino indicando quantas instâncias (por exemplo, "1", "0..", "1..")

Boas Práticas

  1. Mantenha simples — não tente modelar tudo; foque nas classes principais
  2. Use estereótipos — marque claramente interfaces e classes abstratas
  3. Mostre relacionamentos chave — nem toda associação precisa ser mostrada
  4. Nomenclatura consistente — use PascalCase para classes, camelCase para membros
  5. Agrupe classes relacionadas — use proximidade visual para mostrar agrupamentos lógicos