UML類圖-類的關係圖

愈來愈發現UML的重要性, 作一個項目作好的是在開始碼代碼以前畫出項目主要業務邏輯的關係圖, 而後用類圖來詳細描述類之間的關係. 這樣才能更好的作一個符合軟件設計思想的軟件項目. 本文做爲本身之後的參考學習, 也分享出來讓更多的人學習.編程

我參考一個博客開始學習的:http://blog.csdn.net/lovelion/article/details/7838679編程語言

推薦一個畫類圖的工具, StarUML, 我的感受仍是很好用的.工具

1. 一個簡單類的UML圖示

以下所示, 是用UML畫的一個簡單的類的圖示.學習

UML類圖中, 類由三部分構成: 類名, 類的屬性, 類的操做

1.1 類名

類名就是類的名字, 是一個字符串.atom

1.2 類的屬性(Attributes)

UML規定屬性的表示方式爲:.net

可見性  名稱:類型 [ = 缺省值 ]
  • 可見性: 包括, 共有的(public), 私有的(private), 保護類型(protected), 在類圖中分別用 +, -, # 表示.
  • 名稱: 名稱就是名字, 屬性的名字.
  • 類型: 類型就是屬性的數據類型, 能夠是基本的數據類型也能夠是自定義的類型.
  • 缺省值是一個可選項, 就是屬性的初始值

1.3 類的操做(Operations)

UML規定操做的表示方式爲:設計

可見性  名稱(參數列表) [ : 返回類型]

操做是類的任意一個實例對象均可以使用的行爲,是類的成員方法。code

  • 可見性, 名稱, 與屬性的中可見性和名稱定義是徹底相同的.
  • 參數列表: ƒ參數列表表示方法的參數,其語法與屬性的定義類似,參數個數是任意的,多個參數之間用逗號「,」隔開。
  • 返回類型: 返回類型是一個可選項,表示方法的返回值類型,依賴於具體的編程語言,能夠是基本數據類型,也能夠是用戶自定義類型,還能夠是空類型(void),若是是構造方法,則無返回類型。

2. 類和類之間的關係

在軟件系統中, 類並非孤立存在的, 類和類之間有各類不一樣的關係, 對於不一樣類型的關係, UML提供不一樣的表示方式.對象

2.1 關聯關係

2.1.1 雙向關聯

以下所示是一個雙向關聯的例子, 父親有一個孩子, 孩子有一個父親. 雙向關聯, 簡單的說, 就是一個對象中包含另外一個對象的引用, 另外一個對象也包含此對象的引用.blog

雙向關聯用OC代碼表示以下:

#import <Foundation/Foundation.h>

@class Child;

@interface Father : NSObject

@property (nonatomic, strong) Child *child;

@end


@interface Child : NSObject

@property (nonatomic, strong) Father *father;

@end

2.1.2 單向關聯

單向關聯用箭頭和實線表示, 單向關聯比較簡單, 如圖所示, 父親有一輛小汽車.

2.1.3 自關聯

自關聯, 好比組合模式裏面的樹狀結構, 一個節點裏面是包含了一個自身類型對象的引用的.

2.1.4 多重性關聯

多重性關聯關係又稱爲重數性(Multiplicity)關聯關係,表示兩個關聯對象在數量上的對應關係。

2.1.5 聚合關係

聚合(Aggregation)關係表示總體和部分的關係. 在聚合關係中, 成員對象是總體對象的一部分, 可是成員對象能夠脫離總體對象而存在. 在UML中, 聚合關係用空心菱形的直線表示.

聚合對象圖示以下:

2.1.6 組合關係

組合(Composition)關係, 也是表示總體和部分的關係. 在組合關係中, 總體對象能夠控制成員對象的生命週期, 一旦總體對象不存在, 成員對象也將不存在, 成員對象和總體對象是生死與共的關係. 在UML中, 組合關係用, 實心菱形加直線表示.

組合模式的代碼實現中, 通常在總體部分的初始化時候去建立成員部分.

組合模式圖示以下:

2.2 依賴關係

依賴(Dependency)關係是一種使用關係. 特定事物的改變, 有可能會影響到使用該事物的其它事物. 在須要表示一個事物使用到另外一個事物時候使用依賴關係. 大多數狀況下, 依賴關係體如今, 某各種的方法使用另外一個類的對象做爲參數.

在UML中依賴關係由帶箭頭的虛線表示, 由依賴一方指向被依賴一方.

依賴關係UML圖示以下:

依賴關係一般有三種實現方式:

  • 第一種就是如圖所示的, 將一個類的對象做爲另外一個類中方法的參數.
  • 在一個類的方法中, 將另外一個類的對象做爲其局部變量.
  • 在一個類的方法中調用另外一個類的靜態變量.

依賴關係代碼示例(Objective-C):

//----------------.h文件-----------
@class Car;

@interface Driver : NSObject

- (void)drive:(Car *)car;

@end


@interface Car : NSObject

- (void)move;

@end
//----------------.m文件-----------
@implementation Driver

- (void)drive:(Car *)car
{
    [car move];
}

@end


@implementation Car

- (void)move
{
    NSLog(@"汽車動了一下");
}

@end

2.3 泛化關係

泛化(Generalization)關係又被稱爲繼承關係, 用於描述父類和子類的關係, 父類做爲基類或者超類, 子類又被稱爲派生類.UML中泛化關係用帶空心三角形的直線表示.

泛化關係UML圖示:

2.4 接口和實現關係

不少面向對象的語言中都有接口的概念, 接口中一般沒有屬性, 並且全部操做都是抽象的, 只有操做的聲明, 沒有操做的實現. 接口之間也有相似於類之間關係的繼承關係和依賴關係, 接口和類之間還存在一種實現(Realization)關係. 在UML中類與接口的實現關係用帶空心三角形的虛線表示.

相關文章
相關標籤/搜索