機房收費系統之靜態圖(類圖、物件圖)
類圖的內容
一、類圖的用途
類圖是系統靜態圖的一部分,它主要用來描述軟體系統的靜態結構,當系統分析師以支援軟體系統的需求為目的設計靜態圖是通常以下述3中方法之一使用類圖。
1.對系統詞彙建模
描述系統的邊界,也就是說用來決定那些抽象是用來建模系統中的一部分,那些抽象是處於要建模系統之外。
這是非常重要的一項工作,因為系統最基本的元素在這裡被確定。
系統分析師可以用類圖描述抽象和它們的責任。
2.對簡單協作建模
現實世界中的事物大多是相互關係、相互影響的,將這些事務抽象成類之後,情況也如此。所要構造的軟體系統中的類很少有孤立存在的,它們總是和其他類協同工作,以實現強於單個類的語義。
因此,在抽象了系統詞彙後,系統分析師還要必須將這戲詞彙中的事物系統工作的方式視覺化和描述。
3.對邏輯資料庫模式建模
在設計一個數據庫時,通常使用資料庫模式來描述資料庫的概念設計。資料庫模式建模是資料庫概念設計的藍本,可以使用類圖對這些資料庫的模式進行建模。
二、類圖包含7個元素:
1類、2介面、3協作、
4依賴關係、5泛化關係、6實現關係、7關聯關係。
下面再以圖形化記憶下就清楚了。
1.類
類是面向物件系統組織機構的核心,類用矩形表示,被劃分為三部分:
名稱部分(Name)
屬性部分(Attribute)
操作部分(Operation)
圖符:
屬性部分:
在UML中屬性的語法為:
【可見性】屬性名【:型別】 【初始值】 【屬性字串】
(1)可見性:屬性具有不可見性。
在UML中公有型別用“+”表達,私有型別用“-“表達,而受保護型別用”#“表達。
(2)屬性名:根據定義,類的屬性首先是類的一部分,而且每個屬性都必須有一個名字以區別類中的其他屬性。
(3)型別:屬性具有型別,用來說明該屬性是什麼資料型別
經典的屬性有:整型、布林型、實型、列舉型。
(4)初始值:設定初始值有兩個用處
保護系統完整性,防止漏掉取值或被非法的值破壞系統完整性。
為使用者提供易用性。
(5)屬性字串
用來指定關於屬性的其他資訊,例如某個屬性應該是永久的,任何希望新增在屬性定義字串的值但又沒有合適的地方可以加入的規則,都可以放在屬性的字串裡。
操作部分
類的操作是對類的物件所能做的事務的抽象,它相當於一個服務的實現,該服務可以由類的任何物件請求以影響其行為。
在UML中操作的語法:
【可見性】 操作名 【(引數表)】 【:返回型別】 【屬性字串】
(1)可見性:公有(public)用”+“,私有(private)用”-“,受保護(protected)用”#“,包內公有(package)用”~“。
(2)操作名:在實際建模中,操作名是用來描述所屬類的行為的動詞或動詞短語。
(3)引數表:引數的定義方式採用”名稱:型別“的定義方式。如果存在多個引數,則將各個引數用逗號隔開。引數可以具有預設值。
(4)返回型別:絕大部分程式語言只支援一個返回值,即返回型別至多一個,雖然沒有返回型別是合法的,但是具體的程式語言一般要加上一個關鍵字”void“來表示五返回值。
(5)屬性字串:如果希望在操作的定義中加入一些除了預定義的元素之外的資訊,就可以使用屬性字串。
2.介面
介面是在沒有給出物件的實現和狀態的情況下對物件行為的描述。介面包含操作但不包含屬性,且它沒有對外界可見的關聯。
當一個介面是在某個特定類中實現時,使用該介面的類通過一個依賴關係(一條帶箭頭的虛線)與該介面相連線。
3.依賴關係
表示兩個或多個模型元素之間語義上的關係。
UML定義了4中基本依賴型別,分別是使用依賴(Usage)、抽象依賴(Abstraction)、授權依賴(Permission)、繫結依賴(Binding)
3.1 使用依賴(Usage)
使用依賴都是非常直接的,通常表示客戶使用提供者提供的服務以實現它的行為。
依賴關係 | 功能 | 關鍵字 |
使用 | 宣告使用一個模型元素需要用到以存在的另一個模型元素,這樣才能正確實現使用者的功能(包括呼叫、例項化、引數和傳送) | <<use>> |
呼叫 | 宣告一個類呼叫其他類的操作方法 | <<call>> |
引數 | 宣告一個操作它的引數之間的關係 | <<parameter>> |
傳送 |
宣告訊號傳送者和訊號接收者之間的關係 |
<<send>> |
例項化 |
宣告用一個類的方法建立另一個類的例項 |
<<instantiate>> |
3.2抽象依賴(Abstraction)
用來表示客戶與提供者之間的關係,依賴在於不同抽象層次上的事物。
依賴關係 | 功能 | 關鍵字 |
跟蹤 | 宣告不同模型中的元素之間存在一些連線,但不如對映精確 | trace |
精化 | 宣告具有兩個不同語義層次上的元素之間的對映 | refine |
派生 | 宣告一個例項可以從另一個例項匯出 | derive |
3.3授權依賴(permisson)
表示一個事物訪問另一個事物的能力
依賴關係 | 功能 | 關鍵字 |
訪問 |
允許一個包訪問另一個包的內容 | access |
匯入 | 允許一個包訪問另一個包的內容併為被訪問包的組成部分增加別名 | import |
友元 | 允許一個元素訪問另一個元素,不管被訪問的元素是否具有可見性 | friend |
3.4繫結依賴(binding)
是較高階的依賴型別,用於繫結模板以建立新的模型元素
依賴關係 | 功能 | 關鍵字 |
繫結 | 為模板引數指定值,以生成一個新的模型元素 | bind |
4.泛化關係(Generalization)
泛化描述了“is a kind of”(是…的一種)關係
如圖:
5.關聯關係(Association)
關聯描述的是一組具有共同結構的特徵、行為特徵、關係和語義的連結,它是一種結構關係指明一個事物的物件與另一個事物物件間的關係。
如圖:
除了關聯的基本形式之外,還有6種用於關聯的修飾,分別是:名稱、角色、多重性、聚合、組合和導航性。
5.1名稱(Name)
用來描述關係的性質,如圖
關聯的名稱並不是必須的
5.2角色
當一個類處於關聯的某一端時,該類就在這個關係中扮演一個特定的角色。如圖
5.3多重性(Multiplicity)
約束是UML三大擴充套件機制之一,多重性是其中一種約束,也是使用最廣泛的約束。
它說明一個學校可以有一個或更多學生,而一個學生可能同時在0或多個學校中學習。
5.4聚合關係(Aggregation)
它表示整體與部分關係的關聯,簡單的說,關聯關係中一組元素組成了一個更大、更復雜的單元,這種關聯就是聚合。
舉例:
5.5組合關係(Composition)
組合關係是聚合關係中一種特殊情況,是更強形式的聚合,又被稱為強聚合。
組合關係用帶菱形頭的實線表示,頭部指向整體。
舉例:
5.6導航性(Navigation)
描述的是一個物件通用鏈進行導航訪問另一個物件,即對一個關聯端點設定導航屬性意味著本端的物件可以被另一端的物件訪問。
兩個方向上都可以導航的關聯成為雙向關聯,用一條沒有箭頭的實線來表示。
6.實現關係(Realization)
實現是規格說明和其實現之間的關係,它將一種模型元素與另一種模型元素連線起來,比如類和介面。
實現關係通常在兩種情況下被使用:在介面與實現該介面的類之間;在用例以及實現該用例的協作之間。
這個例項描述的是鍵盤保證自己部分行為可以實現打字員的行為。
7.機房收費系統—類圖
物件圖(Object Diagram)的內容
物件圖表示在某一時刻一組物件以及它們之間關係的圖。物件圖可以被看成是類圖在系統某一時刻的例項。
與建立類圖相似,其中的一個區別是在物件名的下面要有下劃線,且物件名的表示方法由三種
a.一般方法
b.只有類名,冒號和下劃線
c.只有物件名和下劃線
一、類圖和物件圖的區別:
二、物件圖建模過程:
(1)確定參與互動的各物件的類,可以參照相應的類圖和互動圖。
(2) 確定類之間的關係,如依賴、泛化、關聯和實現。
(3)針對互動在某特定時刻各物件的狀態,使用物件圖為這些物件建模。
(4) 建模時,根據建模的目標,繪製物件的關鍵狀態和關鍵物件之間的連線關係。