Class Diagram

Mermaid로 클래스를 도식해보자

Example

Code
---
title: Animal example
---
classDiagram
    note "From Duck till Zebra"
    Animal <|-- Duck
    note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging"
    Animal <|-- Fish
    Animal <|-- Zebra
    Animal : +int age
    Animal : +String gender
    Animal: +isMammal()
    Animal: +mate()
    class Duck{
        +String beakColor
        +swim()
        +quack()
    }
    class Fish{
        -int sizeInFeet
        -canEat()
    }
    class Zebra{
        +bool is_wild
        +run()
    }
Code
classDiagram
class BankAccount{
    +String owner
    +BigDecimal balance
    +deposit(amount) bool
    +withdrawal(amount) int
}

Defining Relationships

클래스끼리 관계를 지을 수 있다.

Code
classDiagram
    class Animal
    Vehicle <|-- Car

문법은 다음과 같다.

[classA][Arrow][ClassB]
TypeDescription

<|--

Inheritance

\*--

Composition

o--

Aggregation

-->

Association

--

Link (Solid)

..>

Dependency

..|>

Realization

..

Link (Dashed)

Code
classDiagram
classA <|-- classB
classC *-- classD
classE o-- classF
classG <-- classH
classI -- classJ
classK <.. classL
classM <|.. classN
classO .. classP

다양한 화살표를 지원한다.

Code
classDiagram
classA <|-- classB : implements
classC *-- classD : composition
classE o-- classF : aggregation

이런 식으로 labeling도 가능하다.

Cardinality / Multiplicy

  • 1 Only 1

  • 0..1 Zero or One

  • 1..* One or more

  • * Many

  • n n

  • 0..n zero to n

  • 1..n one to n

Code
classDiagram
    Customer "1" --> "*" Ticket
    Student "1" --> "1..*" Course
    Galaxy --> "many" Star : Contains

Annotations

  • <<Interface>> To represent an Interface class

  • <<Abstract>> To represent an abstract class

  • <<Service>> To represent a service class

  • <<Enumeration>> To represent an enum

Code
classDiagram
class Shape
<<interface>> Shape
Shape : noOfVertices
Shape : draw()

Directions

방향을 설정할 수 있다.

Code
classDiagram
  direction RL
  class Student {
    -idCard : IdCard
  }
  class IdCard{
    -id : int
    -name : string
  }
  class Bike{
    -id : int
    -name : string
  }
  Student "1" --o "1" IdCard : carries
  Student "1" --o "1" Bike : rides

Generic Types

Code
classDiagram
class Square~Shape~{
    int id
    List~int~ position
    setPoints(List~int~ points)
    getPoints() List~int~
}

Square : -List~string~ messages
Square : +setMessages(List~string~ messages)
Square : +getMessages() List~string~

REF

Last updated