← Back to Editor All Tutorials
中文

How to Draw Class Diagrams in Mermaid

Class diagrams describe object-oriented systems by showing classes, their attributes, methods, and relationships between classes.

Why Use Class Diagrams?

UML Design Scenarios

Scenario Purpose
System design phase Plan class structure, define attributes and methods, organize relationships between classes
Code review Discuss coupling between classes, evaluate inheritance hierarchy
Documentation Generate class diagram documentation for team understanding
Database design Map classes to database tables, plan entity relationships

Declaring Classes

classDiagram
    class User {
        +int id
        +String name
        +String email
        +login() bool
        +logout() void
    }

在 MermZen 中试试 →

Relationships

classDiagram
    Animal <|-- Dog : Inheritance
    Dog *-- Paw : Composition
    Dog o-- Toy : Aggregation
    Dog --> Food : Association
    User ..> Logger : Dependency

在 MermZen 中试试 →

Relationship Type Selection Guide

Relationship Syntax Use Case
Inheritance <|-- is-a relationship (subclass inherits from parent), e.g., "Dog is an Animal"
Composition *-- Whole-part relationship, same lifecycle (part cannot exist independently), e.g., "Person and Heart"
Aggregation o-- Whole-part relationship, independent lifecycle (part can exist independently), e.g., "Class and Student"
Dependency --> Usage relationship, temporary dependency, e.g., "method parameter"
Association -- Ownership relationship, permanent association, e.g., "Student and Course"

Selection Tips:

Multiplicity

classDiagram
    User "1" --> "0..*" Order : Places
    Order "1" *-- "1..*" OrderItem : Contains

在 MermZen 中试试 →

Best Practices

Class Design Guidelines

Naming Conventions

Element Convention Example
Class name PascalCase UserAccount, OrderItem
Attribute camelCase userName, createdAt
Method verb + camelCase placeOrder(), calcTotal()
Relationship label concise verb phrase Places, Contains, References

Common Mistakes

Example: E-commerce Order System

classDiagram
    class User {
        +int id
        +String name
        +placeOrder() Order
    }

    class Order {
        +int id
        +Date createdAt
        +calcTotal() float
    }

    class OrderItem {
        +int quantity
        +float unitPrice
        +getSubtotal() float
    }

    class Product {
        +int id
        +String name
        +float price
    }

    User "1" --> "0..*" Order
    Order "1" *-- "1..*" OrderItem
    OrderItem "*" --> "1" Product

在 MermZen 中试试 →


To try the above code in MermZen, click Open Editor and paste the code there.