類圖和物件圖

llm靈發表於2020-11-06

類圖和物件圖

1. 類的屬性

[可見性] 屬性名 [:型別] [’['多重性 [次序] ‘]’] [=初始值] [{特性}]
可見性:Java也叫訪問控制 屬性名:personNumber
型別:基本資料型別或使用者自定義型別(類)
多重性:如1…*表示該屬性值有一個或多個,還可以是有序的(用ordered指明)
約束特性:changeable(可變的); addOnly(只可加); Frozen(凍結的);
作用域:具有類作用域的屬性 – Java的靜態變數或類變數
具有物件作用域的屬性 – 非靜態變數或例項變數

2. 類的操作

[可見性] 操作名 [(引數列表)] [:返回型別] [{約束特性}]
操作名:setValue
約束特性:文字串(說明操作的一些有關資訊)
操作介面:操作名、引數列表和返回型別組成操作介面
操作的實現:操作的具體實現叫方法
類的職責:屬性和操作(形式化描述) – 職責(非形式化描述)

3. 類之間的關係

(1)關聯關係:關聯(Association)關係是類與類之間最常用的一種關係 – 是一種結構化關係 – 用於表示一類物件與另一類物件之間有聯絡 – 如汽車和輪胎、班級和學生等等用Java等實現關聯關係時通常將一個類的物件作為另一個類的成員變數
●雙向關聯:一條實線或者實線雙向箭頭
●單向關聯:實線單向箭頭
●自關聯;
●多重性關聯;
●聚合關係;:空心稜形實線箭頭
●組合關係:實心稜形實線箭頭

(2)依賴關係:依賴(Dependency)關係是一種使用關係–大多數情況下–依賴關係體現在某個類的方法使用另一個類的物件作為引數 – 駕駛員開車–在Driver類的drive( )方法中將Car型別的物件car作為一個引數傳遞 – 以便在drive( )方法中能夠呼叫car的move( )方法–且駕駛員的drive( )方法依賴車的move( )方法–因此類Driver依賴類Car
符號:虛線箭頭

(3)泛化關係:泛化(Generalization)關係也就是繼承關係 – 用於描述父類與子類之間的關係–父類又稱作基類或超類–子類又稱作派生類
符號:實線空心三角形箭頭

4. 類版型

實體類:儲存需要放進持久儲存體(資料庫-檔案等)的資訊–通常實體類在資料庫中有 相應的表(實體的屬性對應表的欄位) – 但不一定一一對應

邊界類:位於系統與外界的交界處-它是系統內的物件和系統外的參與者的聯絡媒介 窗體-對話方塊-報表-表示通訊協議-直接與外部裝置(如印表機和掃描器)互動的類-直接與外部系統互動的類等都是邊界類的例子

控制類:協調邊界類和實體類之間的互動–如果用例邏輯比較簡單可以不用控制類而 直接利用邊界類來操作實體類實現業務邏輯
引入邊界類-控制類-實體類的概念-有助於分析人員和設計人員確定系統中的類;一般按下面的BEC模式進行分析和設計。

BEC模式:將物件分為三類–邊界物件-控制物件-實體物件
●參與者只能與邊界物件互動
●每個用例可以對應生成一個控制類
●實體物件一般不能傳送訊息給邊界物件和控制物件(返回訊息除外)

5. 類圖

類及其關係–構成類圖–描述的是類和類之間的靜態關係;在軟體開發的不同階段使用的類圖具有不同的抽象層次。

領域模型–從物件導向的視角看待現實世界–主要工作是找出相關類–然後明確它們的關係–必要時加入一些多重性描述和業務規則–不涉及具體語言

分析模型–從領域模型將得到實體類–對軟體系統進行分析–可以得到邊界類;描述的是軟體的介面–不是軟體的實現–最利於開發者使用和交流的類圖

設計模型–加入了抽象類–介面等設計元素–加入了設計模式等–描述了類的實現細節-可以直接對映到可執行程式碼–因此–涉及具體語言和設計模式等

6. 物件圖

表示一組物件及它們之間的聯絡–是系統的詳細狀態在某一時刻的快照;常用於表示複雜的類圖的一個例項;
物件是類的例項–物件之間的鏈是類之間的關聯的例項–因此–物件圖實質上是具有關聯關係的類圖的例項。

相關文章