UML類別圖:基本概念篇 - 自學程式誌

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

為何需要畫類別圖(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



請為這篇文章評分?