用例圖(包含、擴(kuò)展)? 類圖(泛化(繼承關(guān)系)、實(shí)現(xiàn)、關(guān)聯(lián)《聚合、組合》、依賴)
一、用例圖
用例圖中元素包括:參與者、用例。
? ? ? ?1、 參與者表示與應(yīng)用程序或系統(tǒng)進(jìn)行交互的用戶或外部系統(tǒng),用小人表示。
? ? ? ? 2、用例表示對系統(tǒng)提供的服務(wù)進(jìn)行描述,用橢圓表示。
? ? ? ? 3、用例圖中涉及的關(guān)系:包含、擴(kuò)展、泛化、關(guān)聯(lián),其中包含用《include》表示,擴(kuò)展用《extend》表示,包含和擴(kuò)展都是虛線箭頭,包含是指向被分解出來的功能用例,擴(kuò)展是指向基礎(chǔ)用例。如下圖所示

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

二、類圖
類圖中最基本元素就是類和接口,類圖是顯示類、接口及它們之間靜態(tài)結(jié)構(gòu)和關(guān)系的圖。
? ? ? ? 1、類圖的三層結(jié)構(gòu):第一層為類名,第二層為屬性名,第三層為方法名
? ? ? ? 2、類圖中的關(guān)系:關(guān)聯(lián)關(guān)系(聚合、組合)、依賴及一般關(guān)系,這幾種都是靜態(tài)關(guān)系。
? ? ? ? ? ????? 2.1 一般關(guān)系:泛化(實(shí)線三角)、實(shí)現(xiàn)(虛線三角)
? ??


????????????????2.2 關(guān)聯(lián)關(guān)系:關(guān)聯(lián)可以是單向也可以是雙向的,單向的話需要有一個實(shí)線箭頭,雙向是可以不用箭頭的,類與類之間的連接,它使一個類知道另一個類的屬性和方法。

相當(dāng)于下面的java代碼:
class Driver{
priavte Car car;//在Driver類中出現(xiàn)了一個類型為Car的實(shí)例變量
}
class Car{
}
在每一關(guān)聯(lián)的端點(diǎn)還可以有一個基數(shù),表名一端的類可以有幾個實(shí)例,n..m中間只有兩個點(diǎn),不多不少。

????????????2.3 聚合和組合
? ? ? ? 聚合和組合是關(guān)聯(lián)關(guān)系中強(qiáng)關(guān)聯(lián)關(guān)系,聚合關(guān)系中的屬性是可以共享的,就相當(dāng)于一個顯示器并不是只對應(yīng)一個主機(jī),它這個顯示器可以作為不同主機(jī)的外設(shè)。與關(guān)聯(lián)關(guān)系一樣,聚合也是通過實(shí)例變量來實(shí)現(xiàn)的 。在聚合中,整體沒有了,部分依然可以使用。聚合是一個空心菱形指向整體。

????????組合和聚合不一樣的就是組合的關(guān)聯(lián)性更強(qiáng),整體與部分是不可拆的,沒有了整體,部分也是不能存活的,是不可共享的,照正常來說一般,人死了,它的四肢也就死了。組合是一個實(shí)心菱形指向整體。

? ? ????2.4 依賴?
? ? ? ?依賴關(guān)系總是單向的,依賴關(guān)系表示一個依賴于另一個類的定義。

與關(guān)聯(lián)關(guān)系不一樣,Person類中并沒有Car和House類的屬性。Car和House的實(shí)例以參數(shù)的方式存入buy()方法中去。
java代碼:
??????? class Person{
?? public void buy(Car car){
......
}
public void buy(House house){
......
}
???????? }
一般而言,依賴關(guān)系體現(xiàn)在java語言中為局部變量、方法的參數(shù),以及對靜態(tài)方法的調(diào)用。換言之,一個類A的某一個局部變量類型是另一類B,那么類A就依賴于類B。如果一個方法的參量是另一類B,那么這個方法所在的類A依賴于類B?;蛘呷绻粋€類A調(diào)用另一個類B的靜態(tài)方法,那么類A依賴于類B。