我經常陷入深思,個人女友爲何又生氣了?是麻辣燙很差吃,仍是韓劇很差看。直到有一天,她和我說,我知道你說xxx是爲了我好,也頗有道理,但你這樣的表達讓我瞬間不想理你。我想你們也有相似的經歷。不少時候,咱們明明出於好心,但因爲不會表達,反而拔苗助長。程序員
學會表達是一件很重要的事情。生活中,良好的表達讓親人、伴侶和朋友間的關係更融洽;工做中,團隊內的表達關係着工做效率;展現時的表達影響着項目最終評定,甚至連你畢業時的論文答辯、職級晉升時的考覈也考驗着你的表達能力。編程
軟件開發亦是如此。大中型軟件系統開發工做通常須要大量的軟件開發人員統一協做工做,有時開發週期還很長。做爲一名合格的程序員,如何理解前輩們設計好的框架和已完成的工做,並讓別人快速準確的讀懂你寫的代碼,是一件很重要的事情。所以,本文旨在介紹軟件系統的建模和表達方法。框架
UML(Unified Modeling Language)統一建模語言,又稱標準建模語言,是用於軟件系統在開發階段的可視化建模。因爲軟件系統開發須要通過面向對象分析(OOA)、面向對象設計(OOD)和麪向對象編程(OOP)三個階段,而每一個階段都須要統一的符號設計描述和交流。而UML做爲一種通用語言,能有效消除沒必要要的差別,從而爲許多開發人員普遍使用。分佈式
本文將介紹UML基本概念、特色、種類和應用。工具
UML是在軟件開發階段,說明、可視化、建構和書寫一個面向對象軟件系統的的方法,其目標是以面向對象圖的方式來描述任何類型的系統,具備很寬的應用領域。一方面能夠對任何具備靜態結構和動態行爲的系統進行建模,另外一方面適用於系統不一樣開發階段,利於系統後期的測試和維護。學習
UML在系統開發中有三個主要模型,如圖3-1。測試
2.1類圖:描述系統中類的靜態結構的圖設計
2.2包圖:對構成系統的模型元素進行分組整理的圖3d
2.3對象圖:系統中的多個對象在某一時刻的狀態。對象
2.4構件圖:一種描述系統的靜態實現的圖
2.5部署圖:定義系統中軟硬件的物理體系結構的圖
2.6組合結構圖:表示類或者構建內部結構的圖
3.1順序圖:對象之間的動態合做關係,強調對象發送消息的順序,同時顯示對象之間的交互
3.2活動圖:描述了業務實現用例的工做流程
3.3狀態圖:是描述狀態到狀態控制流
3.4時序圖:表示生命線狀態變化的圖
3.5交互概覽圖:用活動圖來表示多個交互之間的控制關係的圖
3.6協做圖:描述對象之間的協助關係
根據平時的使用頻率,本文着重介紹UML類圖。面向對象軟件中的基本單元是類,描述類的內部結構和類與類之間的關係,是一種靜態結構圖。UML類圖用三個矩形表示,最上邊部分爲類的名稱,中間部分爲類的屬性,最下邊部分爲類的方法,如圖4-1。
圖4-1
常見類圖有如下幾種關係:泛化(Generalization),實現(Realization),組合(Composition),聚合(Aggregation),關聯(Association),依賴(Dependency)。
關係名稱 | 含義 | 舉例 | 表示方法 |
泛化 | 即繼承,通常與特殊的關係 | 汽車和自行車泛化於交通工具 | 帶三角箭頭的實線,箭頭指向父類。如圖4-2。 |
實現 | 即接口,表示類是接口全部特徵和行爲的實現 | 汽車的前行經過駕駛 | 帶三角箭頭的虛線,箭頭指向父接口。如圖4-3。 |
組合 | 總體與部分的關係,但部分不能離開總體而單獨存在 | 公司是總體,部門是部分 | 帶實心菱形的實線,菱形指向總體。如圖4-4。 |
聚合 | 總體與部分的關係,且部分能夠離開總體而單獨存在 | 汽車是總體,玻璃窗和輪胎是部分 | 帶空心菱形的實線,菱形指向總體。如圖4-5。 |
關聯 | 一種擁有的關係,組合和聚合都屬於關聯關係 | 汽車擁有前進目的地 | 帶普通箭頭的實線,指向被擁有者。如圖4-6。 |
依賴 | 一種使用的關係,一個類的實現須要另外一個類的協助 | 汽車的運動依賴汽油 | 帶普通箭頭的虛線,箭頭指向被依賴者。如圖4-7。 |
圖4-2
圖4-3
圖4-4
圖4-5
圖4-6
圖4-7
本文粗淺的介紹了UML的基本概念、分類和簡單應用。爲了幫助你們深刻學習,本文給你們推薦《UML用戶指南》(第2版),該書詳細介紹了軟件系統的基本結構、高級結構、體系結構、基本行爲和高級行爲的建模方法,適用於進行軟件開發、部署和維護人員。關注公共號,後臺回覆UML便可獲取電子版書籍。
申明:本文屬於小編平時學習的心得和總結,不當之處歡迎你們批評指正。