PlanetUML의 클래스 쓰기 요약

이 글은 PlanetUML에 분류도를 쓸 때 필요한 정보를 요약했다.

PlanetUML이란


이것은 간단한 코드로UML의 각종 도형을 설명할 수 있는 도구입니다.
UML의 과제인 '유지보수하기 어렵다' 를 활용하는 데 있어서, 우리는 코드로 기술하는 방법으로 해결하려고 시도하고 있다.
https://plantuml.com/en/class-diagram

분류도


시스템 구조는 클래스와 클래스 간의 관계로 표시된다.
UML에서 가장 대표적인 그림은 추상적인 개념도부터 분석용 그림, 코드에 직접 들어가는 상세한 설계도까지 다양한 장소에서 사용할 수 있다.

예제


'인터넷 보도 투고 서비스'에서 어떤 유형과 관련된 그림이 필요한지 분석해 보는 인상으로 제작됐다.

@startuml

class ユーザー
class 記事
class コメント
class マガジン
class タグ
class ジャンル

class 支払先 {
  - 銀行コード
  - 支店コード
  - 口座番号
}
note left of 支払先 : サービス上で得た報酬を振り込む先の情報

class 個人支払先 {
  - 姓
  - 名
}
class 法人支払先 {
  - 法人名
}

note top of カード情報 : サービス上で支払を行うための情報
class カード情報 {
  - カード番号
  - カード名義
}
ユーザー "1" -up- "0..1" カード情報

ユーザー "1" -up- "0..1" "支払先"
"個人支払先" --|> "支払先"
"法人支払先" --|> "支払先"

ユーザー "1" -- "*" 記事
記事 "1" -- "*" コメント
ユーザー "1" -- "*" コメント

ジャンル "1..*" -- "*" 記事

タグ "*" -- "*" 記事

マガジン "0..1" -- "*" 記事

package リアクション {
    class サポート {
        - サポートするユーザー
        - サポートされるユーザー
        - 金額
    }
    ユーザー "1" --> "*" サポート
    サポート "*" --> "1" ユーザー

    class フォロー {
        - フォローするユーザー
        - フォローされるユーザー
    }

    (ユーザー, ユーザー).. フォロー

    class スキ
    ユーザー "1" -- "*" スキ
    スキ "*" -- "1" 記事
}


class SNSアカウント
ユーザー "1"-up-"*" SNSアカウント
class Twitterアカウント
class Facebookアカウント
Twitterアカウント --|> SNSアカウント
Facebookアカウント --|> SNSアカウント

@enduml

묘사 방법


기본적인 기술 방법


기본적인 기술 방법을 기억하면 간단한 분류도를 쓸 수 있다.

카테고리



class ユーザー
클래스는 필드와 방법을 설정할 수 있습니다.
다음과 같은 두 가지 방법으로 설정할 수 있습니다.

/' クラス定義後に個別に指定する書き方 '/
class ユーザー
ユーザー : int id
ユーザー : string firstName
ユーザー : string familyName
ユーザー : string fullName()

/' クラス定義と同時にまとめて指定する書き方 '/
class ユーザー {
    int id
    string firstName
    string familyName
    string fullName()
}

연관성

--로 클래스를 연결함으로써 학급 간의 관련성을 구축할 수 있다.

class ユーザー
class SNSアカウント

ユーザー -- SNSアカウント 
클래스명과-- 사이에 끼우고"" 관련 한쪽에 라벨을 붙일 수 있다.
이렇게 하면 얼마나 무거운지 나타낼 수 있다.

class ユーザー
class 記事

ユーザー "1" -- "*" 記事
관련 정의의 끝에 : 関連名를 더하면 이름을 연결할 수 있다.
< 또는 >에 그래픽 화살표를 추가할 수 있습니다.

class ユーザー
class 記事

ユーザー -- 記事 : 投稿 >
클래스 간..>을 연결함으로써 의존 관계를 구축할 수 있다.

class User
class PaymentHistory {
    int userId
    date paymentDate
    int paymentAmount
}
User -- PaymentHistory

class PaymentProcess {
    run()
}
PaymentProcess ..> PaymentHistory : create

일반화하다


학급 간--|>으로 연결하면 범용 관계를 맺을 수 있다.

class SNSアカウント
class Twitterアカウント
class Facebookアカウント

Twitterアカウント --|> SNSアカウント
Facebookアカウント --|> SNSアカウント

큰 가방



package リアクション {
    class フォロー
    class スキ
}

공통요소의 기술방법(자주 사용하는 것)


plantul은 모든 그림에서 통용되는 일반적인 요소가 있습니다.
각양각색의 공통 요소가 있지만'사용이 편리하고 자주 사용한다'는 요소를 소개한다.

타이틀


그래픽 제목title タイトル名

클래스 주석


아래의 기법에 클래스에 주석을 추가할 수 있습니다.note left|right|top|bottom of クラス名 : 注釈内容
class カード情報 {
  カード番号
  カード名義
}

note top of カード情報 : サービス上で支払を行うための情報

여러 줄 주석


note left|right of 要素名
  注釈内容A
  注釈内容B
end note

/' または '/

note left|right of 要素名 : 注釈内容A\n注釈内容B

도면 방향 지정하기

top to bottom direction 위에서 아래로 그리기(기본값)
left to right direction 왼쪽에서 오른쪽으로 그리기

코드의 주석


' 行コメント

/'
  ブロックコメント
'/

고도의 서법


더 풍부한 그림을 쓰기 위해 다양한 요소를 제공했다.

교환 위치



class 記事
class 段落
class 文章
class 単語

記事 *-- 段落
段落 *-- 文章
文章 *-- 単語

취합



class 記事
class マガジン

マガジン o-- 記事

관련 클래스



class ユーザー
class マガジン
class マガジン購読 {
    datetime 購読日時    
}

(マガジン, ユーザー) .. マガジン購読

가시성



class ユーザー {
  - privateField
  # protectedField
  ~ packagePrivateField
  + publicField
   
  - privateMethod()
  # protectedMethod()
  ~ packagePrivateMethod()
  + publicMethod()
}
skinparam classAttributeIconSize 0에서 아이콘 표시를 해제할 수 있습니다.
image visibility_none.png

Abstract 및 Static



class ユーザー {
  {static} staticField
  {abstract} abstractMethod()
}

추상류



abstract class SNSAccount
class TwitterAccount

TwitterAccount --|> SNSAccount

이음매



interface SNSAccount
class TwitterAccount

TwitterAccount --|> SNSAccount

enum



enum 口座種別 {
  普通預金
  当座預金
  定期預金
}

(홍보) PlanetUML 고급 편집을 탑재한 IntelliJ Plugin 제작 중


https://plugins.jetbrains.com/plugin/14821-plantuml-studio
유료 플러그인으로 앞으로도 개발을 적극적으로 추진해 피드백을 받을 수 있다면 매우 기쁠 것이다.

좋은 웹페이지 즐겨찾기