<code>UML</code>是<code>Unified Model Language</code>的縮寫,中文是<code>統一模組化語言</code>,是由一整套圖表組成的标準化模組化語言。
UML提供了極富表達能力的模組化語言,可以讓軟體開發過程中的不同人員分别得到自己感興趣的資訊。
<code>Page-Jones</code> 在《Fundamental Object-Oriented Design in UML》 一書中總結了UML的主要目的,如下:
為使用者提供現成的、有表現力的可視化模組化語言,以便他們開發和交換有意義的模型。
為核心概念提供可擴充性 (Extensibility) 和特殊化 (Specialization) 機制。
獨立于特定的程式設計語言和開發過程。
為了解模組化語言提供一個正式的基礎。
鼓勵面向對象工具市場的發展。
支援更高層次的開發概念,如協作,架構,模式群組件。
整合最佳的工作方法 (Best Practices)。
用例圖(use case)
靜态結構圖:類圖、對象圖、包圖、元件圖、部署圖
動态行為圖:互動圖(時序圖與協作圖)、狀态圖、活動圖
類之間的關系:依賴、泛化(繼承)、實作、關聯、聚合與組合
UML中,可見性分為4級
public 公用的 :用+ 字首表示 ,該屬性對所有類可見
protected 受保護的:用 # 字首表示,對該類的子孫可見
private 私有的:用 - 字首表示,隻對該類本身可見
package 包的:用 ~ 字首表示,隻對同一包聲明的其他類可見
類中用到了對方
如果是類的成員屬性
如果是方法的傳回類型
是方法接收的參數類型
方法中使用到
泛化關系實際上就是繼承關系,他是依賴關系的特例。
泛化關系實際上就是繼承關系
如果 A 類繼承了 B 類,我們就說 A 和 B 存在泛化關系
實作關系實際上就是 A 類實作 B 接口,他是依賴關系的特例
關聯(Association)關系是對象之間的一種引用關系,用于表示一類對象與另一類對象之間的聯系。
關聯具有導向性:即單向關系或者雙向關系。
聚合關系(Aggregation)表示的是整體和部分的關系,整體與部分可以分開。聚合關系是關聯關系的特例,是以他具有關聯的導航性與多重性。
聚合的符号:空心菱形
如:一台電腦由鍵盤(keyboard)、顯示器(monitor),滑鼠等組成;組成電腦的各個配件是可以從電腦上分離出來的,使用帶空心菱形的實線來表示:
組合關系:也是整體與部分的關系,但是整體與部分不可以分開。
再看一個案例:在程式中我們定義實體:Person 與 IDCard、Head, 那麼 Head 和 Person 就是 組合,IDCard 和
Person 就是聚合。
但是如果在程式中 Person 實體中定義了對 IDCard 進行級聯删除,即删除 Person 時連同 IDCard 一起删除,那麼 IDCard 和 Person 就是組合了
聚合與組合的差別:
組合:整體類端的重數必須是1,部分類的重數是任意的。
聚合:整體類端的重數可以大于1,部分類的重數是任意的。