什麼是類?
類是具有相同屬性和方法的一組對象的抽象,是面向對象設計中的基本單位。比如老虎、魚、鳥等這些動物都有生命,都需要進行新陳代謝,他們都有這些共同的屬性和方法,所以“動物”就是一個類;如果再往下分比如鳥有燕子、喜鵲、啄木鳥等種類,但它們都有翅膀,它們都可以飛翔,所以說,“鳥”也是一個類。
什麼是類圖?
類圖是面向對象系統建模中最重要、最基本、最常見的圖。類圖顯示了一組類、接口、協作以及它們之間的關係。
類圖由哪些部分組成?
類圖中可以包含類、包、接口以及它們之間的關係等元素。
※類
類在類圖中的表示如下:
上圖中,類由三部分組成,最上層爲類名,中間層爲類的屬性,最底層爲類的方法。屬性和方法前面的圖標分別表示公有(public)、私有(private)、保護(protect)、包內成員可見(package),舉的“鳥類”的例子,類名爲“Bird”,所有的鳥都有life和Wings,所有的鳥都會飛,都會下蛋。
※包
有些系統中可能存在大量的類和接口等元素,因此,有必要把這些元素組織成一組一組的,包正是用於把建模元素組織成組的通用機制。包中可以包含類、接口、構件、結點、協作等元素,甚至可以包含其他包。包在圖中的表示爲:
※接口
接口是一組操作的集合,這組操作用於描述類或構件的一個服務。在UML圖中通常用一個類似於類圖的矩形框,不過第一層要寫明“<<interface>>”,或者還可以用一個小圓圈表示,如:
或者
※關係
1、關聯關係:
(1)、單向關聯:表示兩個類由一定的關聯,但只有一個類知道這種關係的存在,它知道另一個類的屬性和方法,通常用一條直線加一個箭頭表示,比如:
(2)、雙向關聯:兩個類也有聯繫並且這兩個類彼此都知道這種關係的存在,通常用兩段都有箭頭的一條直線表示,比如:
(3)聚合:聚合是比較強的關聯關係,表現的更多的是整體與部分的關係,比如一輛車有多個車輪,但每個車輪不一定要裝在這輛車上,比如:
(4)組合:組合是更強的關聯關係,它在聚合關係的基礎上表示部分與整體不可分割,比如一個人有兩條胳膊和腿,而且這兩條胳膊和腿必須長在這個人的身上,比如:
2、泛化:
泛化就是類與類、接口與接口、類與接口之間的繼承關係,在途中通常用一條直線加一個小三角表示:
在這個圖中,Animal、BIrd、Fish分別是一個類,但Bird類和Fish類繼承了Animal類,所以Bird類和Fish類也就同時繼承了Animal父類中的屬性和方法。
3、依賴:依賴在圖中用一條虛線加箭頭表示,它表明一個類依賴於另一個類,比如人需要喫東西,下面這個圖就表示人類依賴於食物類:
注:它與關聯的區別在於,關聯更強,依賴更弱,關聯在類中表現爲成員變量,而依賴關係表現爲成員方法內部的局部變量,方法參數和靜態方法的調用等
4、實現關係:在我理解來看,實現關係跟“使用”差不多,通常指一個類實現接口的功能,在圖中用一條虛線加一個小三角表示:
5、幾種關係的強弱次序:組合>聚合>關聯>依賴
實踐——機房收費系統類圖
第一次畫系統的類圖,感覺抽象的不是特別好,因爲每種用戶的權限不同,而且一般用戶、操作員、管理員的權限一級一級升高,所以就就給他們抽象出來一個用戶類,然後一級一級往下泛化,不知道這樣是否合適……