UML (1) Class Diagram 與常見的箭頭們 - 程式作業簿

文章推薦指數: 80 %
投票人數:10人

從一張總類別圖來分別介紹,就以Blizzard 公司的Heroes of the Storm 來介紹 ... 其中名稱如果是斜體表示該類別為抽象類別;屬性跟行為的修飾子符號請 ... Skiptomaincontent UML有人說是工程師溝通的一種語言,或者是有點難記清楚的語言…。

不管如何,在開發的過程中與學習DesignPattern的過程中是一定會出現的語言!當然一種語言不可能像我下面介紹的這麼簡單,我也僅是筆記我在學習DesignPattern中會用到的部分。

從一張總類別圖來分別介紹,就以Blizzard公司的HeroesoftheStorm來介紹說明囉! ClassDiagram(類別圖) 首先每個舉行都是一個類別(class,interface,abstractclass)。

第一列填寫的是名稱(Name);第二列填寫的是屬性(Attributes);第三列填寫的則是行為(Methods)。

其中名稱如果是斜體表示該類別為抽象類別;屬性跟行為的修飾子符號請參考涅法雷姆類別的屬性;<>則是表示該類別的stereotype,要不要標示都可以,但介面如果不標示難以分辨(抽象類別還可以透過斜體來辨識,也因此多半是標示介面)。

最後,粉紅色的長方形是註解說明用!以下便開始講寫其他線條與箭頭們了: 繼承關係(Extension) 繼承關係是由三角空心箭頭配上實線來代表。

像是涅法雷姆類別繼承了英雄類別。

繼承關係1 2 3 4 5 6 publicclass涅法雷姆extends英雄{ publicvoid涅法雷姆之勇(){} publicvoid放普通技能(){} publicvoid放大絕(){} } 實現關係(Relization) 實現關係是由三角空心箭頭配上虛線來表示。

像是卡拉辛類別實現了武僧介面。

實現關係1 2 3 4 5 6 7 publicclass卡拉辛extends涅法雷姆implements武僧{ publicvoid涅法雷姆之勇(){} publicvoid放普通技能(){} publicvoid放大絕(){} publicvoid會打拳(){} } 關聯關係(Association) 關聯關係是由一般箭頭配上實線來表示。

像是天賦類別是關聯到等級類別,代表著天賦必須知道等級類別的一些資訊。

關聯關係1 2 3 publicclass天賦{ private等級level; } 聚合關係(Aggregation) 聚合關係是由一個空心菱形配上實線箭頭來表示。

像是暗黑破壞神系列是由涅法雷姆們多的類別所聚合起來的(弱的擁有關係)。

暗黑破壞神系列可以包含涅法雷姆的類別,但涅法雷姆不是暗黑破壞神系列的一部分(指的應該是不一定要有)。

聚合關係1 2 3 publicclass暗黑破壞神系列{ private涅法雷姆[]nephalems; } 合成關係(Composition) 合成關係是由一個實心菱形配上實線箭頭來表示。

像是英雄是具備天賦(強的擁有關係)。

它們之間是部分與整體的關係,具有相同的生命週期。

合成關係1 2 3 4 5 6 7 publicclass英雄{ private天賦talent; public英雄(){ talent=new天賦(); } } NOTE:原本英雄是抽象類別,在這般先暫時換成一般類別來呈現合成關係在程式碼中的長相。

依賴關係(Dependency) 依賴關係是由實現配上一般箭頭來表示。

像是天賦依賴等級。

達到特定等級的時候才有相對應的天賦可以點。

依賴關係1 2 3 4 5 publicclass天賦{ publicvoid點天賦(等級level){ } } 參考資料 大話設計模式 Comments RecentPosts IELTSNote-SpeakingProcedure IELTSNote-Speaking-theDiscussion(17-19) IELTSNote-Speaking-theIndividualLongTurn(12-16) IELTSNote-ReadingProcedure IELTSNote-Speaking-theInterviewTips(8-11) Categories 3 octopress 1 charts 1 javascript 1 json 11 centos 9 linux 1 vmtools 2 gitlab 4 maven 9 jndi 21 java 9 ldap 6 designpattern 1 restful 1 jersey2 3 eclipse 2 netbeans 1 smtp 1 lambda 1 uml 1 cheatsheet 1 nginx 1 network 2 intellij 1 plugin 29 english 22 grammar 1 tomcat 1 ssl 1 profiler 1 visualvm 1 python 7 ielts



請為這篇文章評分?