類圖是軟件工程的統一建模語言一種靜態結構圖,該圖描述了系統的類集合,類的屬性和類之間的關係。幫助人們簡化對系統的理解,它是系統分析和設計階段的重要產物,也是系統編碼和測試的重要模型依據。學習好類圖的繪製,是一位合格的軟件工程師應有的技能。html
1. 類(Class)
通常包含3個組成部分。 第一個是類名;第二個是屬性(attributes);第三個是該類提供的方法(類的性質能夠放在第四部分;若是類中含有內部類,則會出現第五個組成部分)。類名部分是不能省略的,其餘組成部分能夠省略。
類名書寫規範: 正體字說明類是可被實例化的,斜體字說明類爲抽象類。
屬性和方法書寫規範: 修飾符 [描述信息] 屬性、方法名稱 [參數] [:返回類型|類型]. 屬性和方法以前可附加的可見性修飾符: 加號(+)表示public;減號(-)表示private;#號表示protected;省略這些修飾符表示具備package(包)級別的可見性。java
若是屬性或方法具備下劃線,則說明它是靜態的。
描述信息使用 << 開頭和使用 >> 結尾。web
java
bash
public class TaxCalculator
{
private longtaxRate ;
private intsalary;
public TaxCalculator(long taxRate){
this.taxRate = taxRate ;
}
public long countTax(){
return taxRate*salary;
}
public int getSalary(){
return salary;
}
public void setSalary(int salary){
this.salary = salary;
}
}
複製代碼
類圖中,類與類之間通常會有六種關係,他們分別是繼承(Generalization)、實現(Implements)、組合(Composition)、聚合(Aggressgation)、依賴(Dependency)、關聯(Association)學習
在有的書籍和資料中也叫作「泛化關係」,"通常化關係"。測試
通常化關係表示類與類、接口與接口之間的繼承關係。關係中的箭頭由子類指向父類。在Java中,用extends關鍵字來直接表示這種關係。ui
實例關係指定兩個實體之間的一個合同。換言之,一個實體定義一個合同,而另外一個實體保證履行該合同。關係中的箭頭由實現接口的類指向被實現的接口。 在Java中,實現關係可直接用implements關鍵字來表示。this
在這裏SuperMan類同樣繼承了Person類,由於超人還有一個特性是會飛,因此他還實現了一個Fly的接口。實現關係用一個虛線空心箭頭的連線來表示,箭頭指向接口。局部不必定要隨總體的銷燬而被銷燬,但總體要麼負責保持局部的存活狀態,要麼負責將其銷燬。局部不可與其餘總體共享。編碼
組合是聚合的一種特殊形式,暗示「局部」在「總體」內部的生存期職責。組合表示的是兩個對象之間一種強「擁有」的關係,若是B組合成爲A,那麼B是A的一個總體,B和A的生命週期是同樣的。例如是一種部分與總體的關係,部分與總體之間的生命週期是同樣的。組合關係用一個一個帶箭頭的連線表示,尾巴上有實心的菱形,箭頭指向被擁有的對象。上面的數字表示二者之間的數量關係。
java
spa
public class Person{
private Legs hands;
}
public class Hand{
}
複製代碼
在這裏,Hand和Person是組合關係,Hand是Person的部分,Person擁有Hand,並且Hand的生命週期依賴Person的生命週期。也就是說Person沒有了,Person的Hand也沒有了。在這裏表示一個Hand必定歸宿一個Person而一個Person可能有0個或者多個Hand。
聚合是關聯的一種形式,表明兩個類之間的總體/局部關係。聚合暗示着總體在概念上處於比局部更高的一個級別,而關聯暗示兩個類在概念上位於相同的級別。在Java中,聚合也是使用實例變量來實現的。
關聯和聚合的區別純粹是概念上的,在Java語法上分辨不出來的。聚合還暗示着實例圖中不存在迴路。換言之,只能是一種單向關係。
依賴也是類與類之間的鏈接,而且依賴老是單向的。實體之間一個「使用」關 系暗示一個實體的規範發生變化後,可能影響依賴於它的其餘實例。更具體地說,它可轉換爲對不在實例做用域內的一個類或對象的任何類型的引用。其中包括一個 局部變量,對經過方法調用而得到的一個對象的引用(以下例所示),或者對一個類的靜態方法的引用(同時不存在那個類的一個實例)。也可利用「依賴」來表示包和包之間的關係。因爲包中含有類,因此你可根據那些包中的各個類之間的關係,表示出包和包的關係。
若是一個對象須要知道另外一個對象,則對象之間是一種關聯的關係。關聯能夠是單向的,即一個對象知道另外一個對象,而另外一個對象不知道該對象,也能夠是雙向的,即兩個對象相互知道。關聯式用一條實現表示,單向關聯帶一個箭頭,指向被知道的對象,雙向關聯無箭頭。例如學生須要瞭解考試對象的狀況,考試對象須要瞭解學生的狀況,這是一種雙向關聯關係。
轉自: www.cnblogs.com/javawebsoa/…