Notes — UML in C#

你有看過在球場上,教練用大喊的,把戰術完整的說出來,讓對手也知道嗎?如果真的有,那可能是心裡戰吧,真實的戰術通常只在一個手勢之間

hwchw閱讀約 2 分鐘

Notes — UML in C#

Notes — UML in C#

你有看過在球場上,教練用大喊的,把戰術完整的說出來,讓對手也知道嗎?如果真的有,那可能是心裡戰吧,真實的戰術通常只在一個手勢之間

戰術 α (👌)

和團隊建立 共同的語言 是很重要的,不只是從口中說出的,共同的圖像語言,手勢或名詞定義,可以幫我們省下很多溝通的時間,今天要筆記的,是在做程式架構的溝通的時候,很方便使用的一個語言:UML

Unified Modeling Language

接下來我會依序用圖形搭配代碼來描述一下常使用到的符號

Notes — UML in C#

這邊比較直覺一點,左右對照就可以囉
補充說明:
+ : public
− : private

Attribute: 這邊你可以把它當作 variable
也可以說他是 field, property

雖然 property {get; set;} 其實是 method 的語法糖,不過寫起來還是跟變數比較像一些,所以把他歸類在這邊
Notes — UML in C#

這個空白三角形的箭頭符號,代表繼承
好像沒有比較好的記憶方式,因為跟下面要介紹的會剛好相反
Lion — 繼成自 — ▷Animal
Lion — extends from — ▷Animal

Notes — UML in C#

黃色線條這個符號代表 : Associate 
其實翻譯就是 關係
這個符號我的理解就是有用到就算
而誰用誰我覺得就是用上下表示
畫在上面的就是用的人,而在下面的就是被用的
實際上我覺得這個表達不出什麼,可能是在定義還比較模糊的時候使用
或是在非程式領域的時候比較實用
網路上我有看到一個我覺得比較好的說法 :
Lion — 使用— Hat
Lion 
— uses — Hat

Notes — UML in C#

粉色菱形加上一條線代表 : Aggregation
翻譯的話是 聚合(合成)
有一個關鍵點是當 Lion 這個 class 生命週期結束時
並不代表 Hat 的生命週期結束了
網路上有查到一個滿好的說法
Lion ◇— 擁有— Hat
Lion
◇ — has — Hat

以圖片的例子,如果使用的話會像這樣:

public class Zoo{ Hat hat = new Hat(); Lion lion = new Lion(hat);}//可以看到,hat 其實是從外面傳進去的,所以他不會跟著 Zoo 的生命週期//lion 死了 hat 還存在

而這邊也可以帶出另外一個符號 :

Notes — UML in C#

藍灰色塗滿菱形加上線代表:Composition
翻譯的話是 組成
可以看到 Zoo 是由 Lion 跟 Hat 組成的
當 Zoo 的生命週期結束時,Lion 跟 Hat 也會一起結束
這裡可以用這樣來描述 :
Hat — 組成 — ♦Zoo
Lion — 組成—♦ Zoo
Hat 
— compose — ♦Zoo
Lion — compose— ♦ Zoo

public class Lion{ Hat hat = new Hat();}

public class Zoo{ Lion lion = new Lion();}//可以看到,hat 其實是在 Lion class 裡面,也就是構成 lion 的一部分//lion死亡時 hat 也會一起死亡

Notes — UML in C#

如果你看到有數字在上面,代表最靠近數字的物件數量
1隻獅子只能有 0–6頂帽子
1個動物園的組成最多只能有1隻獅子

數字的部分可以替換成以下:

* : 任意數字0..* : 0 到任意數字m..n : 任意數字m 到 比m大的任意數字

參考資料:
https://www.youtube.com/watch?v=UI6lqHOVHic
https://stackoverflow.com/questions/12604031/c-sharp-code-for-association-aggregation-composition

感謝大家收看,我們下次見

作者

hwchw

Writing on AI-native organization design, OD, leadership, and the future of work. Long-form essays and field notes from the intersection of human systems and machine intelligence.

hwchw 的其他文章 →