UML類別圖:基本概念篇 - 自學程式誌
文章推薦指數: 80 %
為何需要畫類別圖(Class Diagram)?. 之前有提過是否畫類別圖是一個爭議性問題,他主要有以下的問題:. 沒有足夠時間 ...
Qt
安裝與設置
入門篇
Qt與GoogleMap
API說明
Chrome
基本操作
隱私權
當機
軟體密技
VirtualBox
去廣告
Excel2013
雜談
胖子工程師辛酸史
台灣故事
快樂方法
科技新知
Searchformisempty!
WHAT'SNEW?
Loading...
較新的文章
較舊的文章
首頁
UML類別圖:基本概念篇
CarolCheng
上午8:18
軟體架構,
UML
上一篇簡略介紹軟體開發流程,正確商業軟體先使用使用者案例圖定義產品走向,然後底下工程師根據軟體需求進入軟體開發流程,然而團隊成員的能力參差不齊,因此"如何讓所有成員如何都能進入狀況?"成為軟體開發重大議題,而類別圖就是其中關鍵因子。
為何需要畫類別圖(ClassDiagram)?
之前有提過是否畫類別圖是一個爭議性問題,他主要有以下的問題:
沒有足夠時間更新文件---(等bug解完再說)
很難精準描述高手的程式碼 i.e.template進階用法--(好強~!E04看不懂)
幫新鮮人惡補物件導向和UML,甚至DesignPattern----(身兼老師==)
爛程式碼和架構 i.e.類別過於冗長和兼任多個角色 ---(不知道什麼是CleanCode嗎)
的確,畫類別圖對工程師是一大挑戰,然而它能有效率地分割功能給底下的工程師,並且降低工作之間的相依性,使得每一個工程師開發時程能獨立運作。
有一天,我與面試主管討論此問題,他說:『對他而言,用UML畫系統架構圖能幫助自己溝通,並且規劃好的架構後清楚地分割任務給底下工程師,時間久了難免文件失去存在意義。
』當下,我深深反省並重新思考如何正確使用它幫助團隊?
例子1:在大型商業軟體下,如何讓新人有能力維護系統?
最沒效率方法是叫新人看哪一段程式碼,而是簡略描述系統架構後,縮小範圍到改的類別進行詳細描述。
然而,當你要改類別過於龐大時,千萬不要詳細劃出全部,而是列出有關的類別成員即可,一方面新人根據關鍵字抓出大略修改方向,另一方面新人也能慢慢消化與吸收剛剛講解。
例子2:如何讓團隊開發速度加快?
開發每個功能必須先規劃好軟體架構,並且根據PM的需求畫出介面雛形,在實作前確認工作走向是正確的。
最重要的是不要因趕專案時程,沒有留下任何文件,不但延長開發時程(i.e.新人適應期),而且促使了團隊內的衝突增加。
文件的存在目的是減少被打擾的時間,工程師最忌諱打斷自己開發思緒,甚至新人問題抓不到重點,然而有時必須檢討有沒有給新人足夠資源?
目的
類別圖主要定義此類別角色和責任,不但降低系統重複功能,而且告知他人如何使用此類別.
符號說明
圖一.類別的構成(source:IBMdeveloperWorks)
描述類別成員時,不像程式語言在前面宣告資料型別,而是在後面加上冒號和資料型別,以下為類別圖表示方式:(橘色代表可選擇不加)
資料成員(attributeor datamember)
name:type=defaultvalue
成員函數(operationormemberfunction)
function(parameterlist):returntypeofvalue
若我們在類別中定義靜態不能改變常數變數,我們需要此資料成員後面加上{frozen},代表此成員是不可變動。
『staticconstdoublepi=3.14;』→『db:double=3.14 {frozen}』
處理的定義符(accessspecifiers)在UML所代表的符號
private::『-』
public:『+』
protected:『#』
package:『~』
關係
Containment
通常用來描述鏈結串列,二元樹,關係陣列
Association (knowsa)
兩個類別彼此都有著直接的關係
Dependency(isa)
classAusesaclassB→類別A使用類別B
Aggregation (hasa)
classAhasaclassB→類別A資料成員包含類別B
Composition (owna)
classAownaclassB→類別A擁有類別B
Inheritance (isextendedby)
classAisextendedbyclassB→類別B在類別A基礎下進行功能擴展
多重性(Multiplicity)
主要描述類別擁有實體數目
indicator指示符意思
0....1
零或一個
1
一個
0....*
零或多個
1....*
一或多個
*
多個
範例
資料庫存取範例
圖一.類別示意圖
連結串列範例
圖二. 類別示意圖
延伸閱讀
[1]IBMdeveloperWorks,UMLbasics:Theclassdiagram
http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/
[2]UMLClassDiagram
http://www.tutorialspoint.com/uml/uml_class_diagram.htm
facebook
twitter
google+
fbshare
CarolCheng
0
comments:
張貼留言
Follow:
PopularPosts
VirtualBox教學:重設硬碟(.vdi)大小(下)
之前在重設硬碟(.vdi)大小(上)教你如何利用cmd修改硬碟vdi大小,然而虛擬電腦的作業系統仍然無法使用多出來空間,因此為了使虛擬電腦能完整使用系統槽的硬碟空間(本範例40GB),你需要在VirtualBox磁碟分割的開機光碟(ISO檔)後,啟動後即可對虛擬電腦的硬碟進行...
VirtualBox教學:重設硬碟(.vdi)大小(上)
之前講述如何新增WindowsWindows7(上)(下),然而若一開始給系統糟大小不夠,就可能使你的虛擬電腦變慢,因此我們就需要將虛擬電腦的硬碟變大.如圖一所示,我的虛擬電腦硬碟大小只有25GB,然而若將虛擬電腦的windows7進行更新,硬碟空間就有點不夠,因...
胖子工程師辛酸史:如何應對無聊人士
有一天,專案經理走到胖子與工程師B中間後,他一開口就抱怨說:『工程師B,你介面上某一個字打錯,知道嗎?還有我不是將待修正的bugs已經寫到GoogleDrive,你們修改的時間也太慢了吧!』工程師B聽到後,微微點頭說:『知道了,我立即修正!』聽到這些話的胖子不禁回想起某一次...
[Windows764-bit]安裝Qt5.4MinGW
2014年12月Qt正式發佈5.4版,這次不但增加支援WinRT和Windows手機,而且新增相對應的模組。
這次也將軟體分成以下四個版本:社區版(Community)用於PC端,嵌入式和手機應用程式開發獨立移動版(IndieMobile)...
Chrome當機(4):重設使用者設定檔
若你之前三篇都無法解決Chrome當機的問題,你可以試試重設使用者設定檔.如果你習慣使用Chrome登入瀏覽器,以便於在任何電腦都能使用自己客製化的Chrome,然而若你的使用者設定檔有任何毀損的話,Chrome將出現錯誤訊息「真糟糕!GoogleChrome當掉了﹗」...
LikeusonFacebook
Labels
人文素養
下載影片
心態調整
手機定位
去廣告
好用軟體
快樂的方法
拒絕Chrome更新
物件導向
科技新知
紀錄片感想
胖子工程師辛酸史
時間管理
第三方函式庫管理
軟體架構
軟體教學
部落格技巧
惡意軟件
無痕模式
發人深省
感謝
溝通的技巧
資料結構與演算法
電子紋身
電腦截圖
輕重緩急
模組化手機
擋youtube廣告
獨木不成林
螢幕錄影
優酷下載
壓抑的台灣
職場厚黑學
職場應對
blogger教學
Boost
C++
Chrome
ChromeJavascript
Chrome功能
Chrome的隱私權
Chrome書籤
Chrome耗電
Chrome帳號管理
Chrome當機
Chrome綁架
Chrome擴充功能
Excel教學
Excel圖表
Git
Google服務
kmplayer去廣告
NeckTattoo
QCheckBox
QComboBox
QJson
QSqlTableModel
Qt
Qt安裝
Qt設置
Qt與GoogleMap
Qt觀念澄清
QTableView
QtBasic
QtClass
singlylinkedlist
Skype去廣告
SQLITE
TED
UML
UML軟體
VirtualBox教學
VS方案管理
網誌存檔
►
2018
(1)
►
四月
(1)
►
2016
(1)
►
七月
(1)
▼
2015
(14)
►
十二月
(2)
►
七月
(1)
►
五月
(3)
►
四月
(3)
▼
二月
(5)
[免費截圖]PicPick加入浮水印
UML類別圖:傳遞參數和Dependency
UML類別圖:Aggregationvs.Composition
[Windows764-bit]安裝Qt5.4MinGW
UML類別圖:基本概念篇
►
2014
(42)
►
十月
(3)
►
八月
(5)
►
六月
(1)
►
五月
(3)
►
四月
(3)
►
三月
(7)
►
二月
(8)
►
一月
(12)
►
2013
(57)
►
十二月
(19)
►
十一月
(23)
►
十月
(14)
►
七月
(1)
►
2012
(3)
►
十一月
(2)
►
八月
(1)
自學程式誌©2015.AllRightsReserved.
CreatedbyThemeXpose
延伸文章資訊
- 1從類別圖了解類別之間的依賴關係 - Miles' Blog
類別圖(class diagram)可以用圖例的方法呈現類別之間的關係,正所謂一圖勝萬言,使用圖例表達類別的關係,比直接看程式碼來的清楚很多;因為類別圖 ...
- 2Class Diagram 類別圖筆記 - 奧卡的部落格
類別圖是UML 的一種,他透過一個系統中的物件、物件的屬性、物件擁有的方法和物件與物件之間的關係來描述其結構。 ¶類別圖符號. 類別圖的符號分為兩大類.
- 3軟體路上不孤單Day16-UML介紹1-類別圖 - iT 邦幫忙
類別圖是最常見的圖。 學會”看”UML其實很簡單!雖然他也是一種語言,但是絕對比學英文容易! UML從我剛開始接觸到現在其實一直在進化,「圖」也一直在 ...
- 4Day7. UML類別圖說明 - iT 邦幫忙
... their attributes, operations (or methods), and the relationships among objects. 類別圖描述了系統的類別集合...
- 5類別圖- 維基百科,自由的百科全書
類別圖是物件導向式的建模。他們一般都被用於概念建模(conceptual modelling)的系統分類的應用程式,並可將模型建模轉譯成程式碼。 ... 為了進一步描述系統的行為,這些類 ...