Pular para o conteúdo principal

Guia rápido de diagramas de classes no Mermaid

Diagramas de classes descrevem tipos e relações estáticas. Use sequência para mensagens em execução ou fluxogramas para decisões e etapas de trabalho.

Criar com o Editor Mermaid →

Início rápido

Métodos têm parênteses; o tipo de retorno vem depois de um espaço.

Mermaid
classDiagram
  class Document {
    +String title
    -bool published
    +publish() bool
  }
  class Reader
  Reader --> Document : lê

Carregando…

Referência de sintaxe

Referência de sintaxe
SintaxeSignificado
classDiagram / class Id / class Id["Label"]Declara o diagrama, o id e um rótulo opcional.
class Id { members } / Id : memberAdiciona atributos e métodos em um bloco ou com dois-pontos.
+ / - / # / ~Visibilidade pública, privada, protegida e de pacote.
+method(arg) ReturnType / method()* / member$Retorno após um espaço; * marca métodos abstratos e $ membros estáticos.
List~T~ / Box~List~T~~Tis delimitam genéricos; argumentos separados por vírgulas não são aceitos.
<|-- / *-- / o-- / --> / -- / ..> / ..|> / ..Herança, composição, agregação, associação, ligação contínua, dependência, realização e ligação tracejada.
A "1" --> "0..*" B : labelMultiplicidades entre aspas aparecem nas pontas; dois-pontos adicionam um rótulo.
<<interface>> / <<abstract>> / <<service>> / <<enumeration>>Adiciona um estereótipo à classe.
namespace Name { class A }Agrupa classes; 11.15 aceita namespaces aninhados e com pontos.
note "Text" / note for A "Text"Adiciona uma nota geral ou ligada a uma classe.
direction LR / RL / TB / BTDefine a direção do layout.
style A fill:#d3e5ff / classDef / cssClass / :::Estiliza diretamente ou aplica classes visuais reutilizáveis.
click A href "URL" / click A call callback()Links e callbacks exigem permissões do ambiente.
%% / accTitle: / accDescr:Comentários e descrições acessíveis.

Membros e genéricos

A visibilidade precede o membro. Parênteses identificam métodos; o retorno vem depois. Genéricos usam tis e não aceitam argumentos com vírgulas.

Mermaid
classDiagram
  class Repository~T~ {
    -List~T~ items
    #int count
    ~String scope
    +find(id) T
    +create() T*
    +int total$
  }

Carregando…

Relações e multiplicidade

Triângulos indicam herança ou realização e losangos propriedade. Multiplicidades são texto, não restrições validadas; inverta a orientação se necessário.

Mermaid
classDiagram
  Base <|-- Derived
  Whole *-- Part
  Group o-- Member
  Reader --> Document
  A -- B
  Client ..> Service
  Contract <|.. Implementation
  X .. Y
  Reader "1" --> "0..*" Document : lê

Carregando…

Namespaces e notas

Namespaces agrupam visualmente sem validar escopos de linguagem. Use notas gerais ou por classe e estereótipos junto à classe.

Mermaid
classDiagram
  direction LR
  namespace Publishing {
    class Store {
      <<interface>>
      +save() bool
    }
    class Archive
  }
  Store <|.. Archive
  note for Store "Limite de persistência"
  note "Estrutura estática"

Carregando…

Estilos reutilizáveis

classDef define uma classe visual; cssClass ou ::: aplica; style muda apenas o elemento indicado.

Mermaid
classDiagram
  classDef important fill:#d3e5ff,stroke:#0070f3,color:#171717
  class Guide:::important
  class Archive
  cssClass "Archive" important
  style Guide fill:#d3e5ff,stroke:#0070f3,stroke-width:2px
  Guide --> Archive

Carregando…

Layout de namespaces

A hierarquia mostra grupos pais por padrão. hierarchicalNamespaces: false cria grupos compactos com nomes completos, sem renomear ids.

Mermaid
---
config:
  class:
    hierarchicalNamespaces: false
---
classDiagram
  namespace Docs.Public {
    class Guide
  }
  namespace Docs.Internal {
    class Draft
  }
  Draft ..> Guide

Carregando…

Erros comuns

Omitir uma chave de fechamento

Feche o bloco de membros antes de adicionar relações.

Sintaxe inválida: veja a correção abaixo

classDiagram
  class Guide {
    +String title

Usar sinais de menor e maior nos genéricos

Use List~T~ e evite parâmetros genéricos separados por vírgulas.

Limitações

  • Não valida sistemas de tipos nem gera código executável.
  • Não aceita argumentos genéricos separados por vírgulas.
  • O layout define posições; relações não são restrições aplicadas.

Perguntas frequentes

Como escrever um retorno?
Escreva o método com parênteses, um espaço e o tipo, como +find(id) Document.
Como mostrar composição?
Use *-- com o losango cheio na classe proprietária; o-- indica agregação.
Posso agrupar classes?
Sim: declare classes em namespace. Mermaid 11.15 aceita namespaces aninhados e com pontos.