본문 바로가기
Programming

Class Diagram 작성하기 - PlantUML

by 느리게 걷는 즐거움 2024. 3. 19.
반응형

PlantUML으로 클래스 다이어그램 작성하기

PlantUML은 텍스트 기반으로 다이어그램을 작성할 수 있는 강력한 도구입니다. 이번 포스트에서는 PlantUML을 사용하여 클래스 다이어그램을 작성하는 방법에 대해 알아보겠습니다. 먼저, 인터넷 브라우저를 열고 [PlantUML 온라인 에디터]에 접속합니다.

사이트는 위와 같이 PlantUML코드를 넣는 왼쪽 창과 실행결과를 보여주는 오른쪽 창으로 구성됩니다. 사용된 예제 코드는 아래와 같습니다.

@startuml
class Car {
    - String brand
    - String model
    + void start()
    + void stop()
    + void accelerate()
    + void brake()
}

class Engine {
    - int horsepower
    - int cylinders
    + void start()
    + void stop()
}

class Driver {
    - String name
    - int age
    + void drive(Car car)
}

Car *- Engine
Car o- Driver
@enduml

우선 코드를 실행하며 분석하겠습니다. 위의 코드를 사이트 왼쪽 코드 영역에 넣어주세요. "@startuml"과 "@enduml"은 코드의 시작과 종료를 표시하는 키입니다. 사이트에서는 기본적으로 들어가있으니 주의해서 넣어 주세요. 코드를 넣었다면 "Ctrl+Enter"또는 "Cmd+Enter"를 눌러주세요. 이제 우측창에 코드에 해당하는 다이어그램이 생성됩니다.

이제 작성한 PlantUML 코드를 URL로 공유하거나 PNG, SVG 등의 이미지 파일로 내보낼 수 있습니다. 이를 통해 다른 사람들과 작업을 공유하거나 문서에 삽입할 수 있습니다. 코드로 되어있기 때문에 협업에도 유리한 장점이 있습니다.

코드 분석

코드에서는 아래의 class와 구조를 설명하고 있습니다.

  1. Class Car: 클래스 Car는 자동차를 나타내며, 브랜드와 모델을 나타내는 두 개의 속성을 가지고 있습니다. 또한, 자동차를 시작하고 정지시키며, 가속하고 제동하는 네 개의 메서드를 가지고 있습니다.
  2. Class Engine: 클래스 Engine은 자동차의 엔진을 나타내며, 마력과 실린더 수를 나타내는 두 개의 속성을 가지고 있습니다. 또한, 엔진을 시작하고 멈추는 두 개의 메서드를 가지고 있습니다.
  3. 관계: Car 클래스와 Engine 클래스 간에는 연관 관계가 있습니다. 이는 Car가 Engine을 가지고 있음을 나타냅니다. Car 클래스와 Driver 클래스 간에는 집합 관계가 있습니다. 이는 Car가 Driver을 포함할 수 있음을 나타냅니다.

클래스의 메서드는 아래와 같이 표현합니다.

+ methodName() public한 메서드를 나타냅니다.
- methodName() private한 메서드를 나타냅니다.
# methodName() protected한 메서드를 나타냅니다.
~ methodName() package-private한 메서드를 나타냅니다.

관계는 어떻게 표현할까요? A와 B는 클래스를 나타내며, 화살표는 클래스 간의 관계를 나타냅니다. 각각의 표현 방식은 다음과 같은 의미를 갖습니다.

A -- B 양방향 연관 관계 (Association)
`A -- > B`
A o-- B 집합 관계 (Composition)
A *-- B 일반적인 연관 관계 (Association)
`A < -- B`
`A < .. B`
  • A -- B: 양방향 연관 관계를 나타냅니다. 두 클래스 간의 연관성을 나타냅니다.
  • A --|> B: A 클래스가 B 클래스를 가리키는 단방향 연관 관계를 나타냅니다.
  • A o-- B: A 클래스가 B 클래스를 포함하고 있는 집합 관계를 나타냅니다.
  • A *-- B: 일반적인 연관 관계를 나타냅니다. 두 클래스 간의 연관성을 나타냅니다.
  • A <|-- B: A 클래스가 B 클래스를 일반화하는 상속 관계를 나타냅니다.
  • A <|.. B: A 클래스가 B 클래스를 인터페이스로 구현하는 관계를 나타냅니다.

이러한 표현 방식을 사용하여 PlantUML에서 클래스 간의 관계를 시각적으로 표현할 수 있습니다.

 

마무리

더 자세한 문법은 [링크] 에서 확인할 수 있습니다. 저는 자주사용하는 예제를 만들고 이를 보면서 변경하는 방식을 사용합니다. 매번 찾으려면 찾기가 어려운 경우도 많더라구요. 더 다양한 예제를 소개해 보겠습니다.

감사합니다.

 

 

반응형

'Programming' 카테고리의 다른 글

Django Sitemap 만들기  (0) 2024.03.19
Airflow Docker Volume 마운트하기  (0) 2024.03.19
REST API를 생성하고 호출하기  (2) 2024.03.18
REST API(Representational State Transfer API)  (1) 2024.03.17
MongoDB 사용법 (SQL과 비교)  (2) 2024.03.16