uml及建模工具(常用uml建模工具)(统一建模语言)
本文簡(jiǎn)單介紹了UML建模工具,主要介紹了類之間的幾種關(guān)系。
類圖
上面是一個(gè)類圖,從上到下依次表示了類名、類的成員變量、類的成員函數(shù)。成員變量前面使用+/-/#分別表示可見(jiàn)性是public,private,protected
接口沒(méi)有成員變量,所以只有兩個(gè)格子。
關(guān)系
依賴關(guān)系
依賴關(guān)系指的是一個(gè)類的修改會(huì)對(duì)另一個(gè)類產(chǎn)生影響。最簡(jiǎn)單的例子是一個(gè)類使用了另一個(gè)類提供的服務(wù)。
依賴關(guān)系A(chǔ)依賴B表現(xiàn)為:
- B是A的成員變量
- B是A方法的參數(shù)
- B是A的基類
從以上可以看出,依賴關(guān)系指的是兩個(gè)類有直接的關(guān)系,如果將依賴的類成為client,被依賴的類稱為service provider,那么client必須知道service provider的存在,而service provider不需要知道client的存在。其它所有的關(guān)系其實(shí)都是依賴關(guān)系的特殊情況。
實(shí)例
繼承關(guān)系使用箭頭加虛線表示。spring 解析xml的過(guò)程就是這樣的一個(gè)依賴關(guān)系,為了簡(jiǎn)單,這里省區(qū)了XmlBeanFactory的一個(gè)參數(shù)。
代碼
public class XmlBeanFactory extends DefaultListableBeanFactory {
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
/** * Create a new XmlBeanFactory with the given resource, * which must be parsable using DOM. * @param resource XML resource to load bean definitions from * @throws BeansException in case of loading or parsing errors */
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, null);
}
/** * Create a new XmlBeanFactory with the given input stream, * which must be parsable using DOM. * @param resource XML resource to load bean definitions from * @param parentBeanFactory parent bean factory * @throws BeansException in case of loading or parsing errors */
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
}
}
繼承關(guān)系
java的extends和c#的冒號(hào)可以實(shí)現(xiàn)繼承,繼承使用實(shí)線和三角箭頭表示。
實(shí)例
上例中的XmlBeanFactory繼承了DefaultListableBeanFactory,所以UML類圖可以這樣表示:
關(guān)聯(lián)關(guān)系
關(guān)聯(lián)關(guān)系是類似關(guān)系型數(shù)據(jù)庫(kù)的那種對(duì)應(yīng)關(guān)系,例如班級(jí)和學(xué)生的對(duì)應(yīng)關(guān)系,每個(gè)班級(jí)可以對(duì)應(yīng)多個(gè)學(xué)生,每個(gè)學(xué)生有一個(gè)班級(jí),關(guān)聯(lián)關(guān)系使用實(shí)線和箭頭表示。
示例
和ER圖中的關(guān)聯(lián)關(guān)系一樣,關(guān)聯(lián)關(guān)系依對(duì)應(yīng)的數(shù)量不同分為很多種:
- 雙向關(guān)聯(lián)
- 單向關(guān)聯(lián)
- 自關(guān)聯(lián)
- 重?cái)?shù)關(guān)聯(lián)
重?cái)?shù)關(guān)聯(lián)是更一般的關(guān)聯(lián)的描述方法,指明了關(guān)聯(lián)的對(duì)象的個(gè)數(shù),有如下幾種
| 個(gè)數(shù) | 含義 |
|---|---|
| 1…1 | 一個(gè)對(duì)象只與另一個(gè)對(duì)象有關(guān)系 |
| 0…1 | 一個(gè)對(duì)象與另外一個(gè)或0個(gè)對(duì)象有關(guān)系 |
| 1…* | 一個(gè)對(duì)象與一個(gè)或另外多個(gè)對(duì)象有關(guān)系 |
| 0…* | 一個(gè)對(duì)象與另外0個(gè)或多個(gè)對(duì)象有關(guān)系 |
| m…n | 一個(gè)對(duì)象與另外最少m個(gè)最多多個(gè)對(duì)象有關(guān)系 |
聚合關(guān)系
聚合關(guān)系是一種特殊的關(guān)聯(lián)關(guān)系,聚合分為整體和部分兩個(gè)組件。聚合使用空心菱形和實(shí)線加箭頭表示
示例
可以看出,engine對(duì)car的存在可以沒(méi)有感知,也就是一個(gè)引擎可以裝在這個(gè)車?yán)铮部梢匝b在另一臺(tái)車?yán)铮糠挚梢元?dú)立于整體之外存在。使用聚合可以將若干個(gè)功能重疊的類中可以復(fù)用的部分抽離出來(lái),使用聚合來(lái)復(fù)用抽離出來(lái)的功能。
組合關(guān)系
組合關(guān)系表示的也是部分和整體之間的關(guān)系,只是組合的部分也要依賴于整體存在,組合關(guān)系使用實(shí)心菱形和實(shí)線加箭頭表示。
示例
這里的嘴和頭是相互依賴存在的。
實(shí)現(xiàn)關(guān)系
實(shí)現(xiàn)關(guān)系表示類實(shí)現(xiàn)接口,實(shí)現(xiàn)使用虛線和三角箭頭表示:
辨析
- 總的來(lái)說(shuō),所有的關(guān)系都包含了依賴關(guān)系,只是有的更加細(xì)化。
- 關(guān)聯(lián)包含了組合和聚合,聚合和組合的區(qū)別是聚合的部分可以獨(dú)立于整體存在,組合的部分不能獨(dú)立于整體存在。
總結(jié)
以上是生活随笔為你收集整理的uml及建模工具(常用uml建模工具)(统一建模语言)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python怎么调用另一个文件的函数_p
- 下一篇: 详解P2P技术