文章簡(jiǎn)介
1、了解UML統(tǒng)一建模語(yǔ)言
2、重點(diǎn)關(guān)注類圖以及使用
一、UML簡(jiǎn)介
UML:描述、構(gòu)建和圖形化文檔系統(tǒng)的可視化描述語(yǔ)言。分為靜態(tài)和動(dòng)態(tài)兩種。
靜態(tài)圖:有助于設(shè)計(jì)包、類名、屬性等。
包圖:PackageDiagram
組件圖:ComponentDiagram
對(duì)象圖:ObjectDiagram
部署圖:DeploymentDiagram
復(fù)合結(jié)構(gòu)圖:CompositeStructureDiagram
用例圖:UseCaseDiagram
類圖:ClassDiagram
動(dòng)態(tài)圖:有助于設(shè)計(jì)邏輯、代碼行為、方法體。
交互概觀圖:InteractiveOverviewDiagram
順序圖:SequenceDiagram
通信圖:communicationDiagram
狀態(tài)圖:StateDiagram
活動(dòng)圖:ActivityDiagram
定時(shí)圖:TimingDiagram
二、類圖以及類圖說(shuō)明
類圖:類的屬性以及方法。以及類與類之間的關(guān)聯(lián)。
1、類圖說(shuō)明:
- 類:使用三層矩形框表示。第一層顯示類的名稱,抽象類使用斜體表示。第二層表示類的屬性;第三層表示類的方法。

- 接口:與類圖相比,頂端有<<Interface>>顯示。第一層是接口名稱。第二層是接口中的常量。第三層是接口中的方法。

2、類與類(對(duì)象)之間的關(guān)系以及類圖描述。
類與類之間的關(guān)系主要有如下幾種:泛化(繼承)、依賴、關(guān)聯(lián)、組合。
綜述:UML中對(duì)象的關(guān)系都是在相應(yīng)的軟件環(huán)境或?qū)嶋H場(chǎng)景下定義的。區(qū)別聚合和組合的關(guān)系,在于它們之中整體和部分的關(guān)系強(qiáng)、弱,以及它們之間的依附關(guān)系。不同場(chǎng)景,不同定義。
2.1、泛化:一個(gè)元素是另一個(gè)元素的特殊化。也類似的成為繼承關(guān)系。在UML中,泛化關(guān)系用空心三角形+實(shí)線來(lái)表示,箭頭指向?yàn)楦割悺?br> 案例代碼:
// 泛化
People person = new Man();
System.out.println(person);
/* 泛化演示類 2016-10-27 start */
static class People {
public String toString() {
return "人類";
}
}
static class Man extends People {
public String toString() {
return "男人";
}
}
static class WoMan extends People {
public String toString() {
return "女人";
}
}
/* 泛化演示類 2016-10-27 end */

2.2、依賴:某個(gè)元素在一定程度上依賴于另一個(gè)元素,同時(shí),一個(gè)類的改動(dòng)可能胡影響另一個(gè)類的運(yùn)行效果,則兩個(gè)類存在依賴關(guān)系。例如:工具類,依賴工具類中的方法進(jìn)而獲得展示的UI名稱。
案例代碼:
//依賴
Coder coder = new Coder();
System.out.println(coder.coding());
/*依賴演示類 start*/
static class Computer{
public static String codingWithComputer(){
return "coding with computer";
}
}
static class Coder{
public static String coding(){
return Computer.codingWithComputer();
}
}
/*依賴演示類 end*/

2.3、關(guān)聯(lián):當(dāng)一個(gè)類的實(shí)例與另一個(gè)類的一些特定實(shí)例存在固定的對(duì)應(yīng)關(guān)系,則稱兩個(gè)類存在關(guān)聯(lián)關(guān)系。
案例代碼:
//關(guān)聯(lián)
Person age18 = new Person("372926198502184567");//人和身份證ID:1對(duì)1關(guān)聯(lián)
System.out.println("身份證ID:"+age18.getPersonId());
/*關(guān)聯(lián)演示類 start*/
static class IDCard{
public final String ID;
public IDCard(String id){
ID = id;
}
}
static class Person{
IDCard idcard;
public Person(String 身份證ID){
idcard = new IDCard(身份證ID);
}
public String getPersonId(){
return idcard.ID;
}
}
static class Class{
List<Person> persons = new ArrayList<Person>();
}
/*關(guān)聯(lián)演示類 end*/

2.4、組合:組合關(guān)系是類之間一種整體與部分之間的關(guān)系,如一只青蛙有四條腿,青蛙類與青蛙腿類之間的關(guān)系就是組合關(guān)系。
案例代碼:
//組合
青蛙 qingwa = new 青蛙();
青蛙手 qingwaHand = new 青蛙手();
/*組合演示類 start*/
static class 青蛙{
青蛙手 m青蛙手;
青蛙腳 m青蛙腳;
}
static class 青蛙手{
public void work() {
System.out.println("“支撐平衡");
}
}
static class 青蛙腳{
public void work() {
System.out.println("“支撐平衡");
}
}
/*組合演示類 end*/

2.5、聚合:
聚合關(guān)系是類之間的一種較弱的耦合關(guān)系,如一個(gè)字符串?dāng)?shù)組和一個(gè)字符串就是一種聚合關(guān)系。
部分的生命周期可以超越整體。如電腦和鼠標(biāo)。
案例代碼:
//聚合
Company company = new Company();//公司與員工、部門之間是弱的包含關(guān)系
Employee emplyee = new Employee();
Department department = new Department();
/*聚合演示類 start*/
static class Company{
Department mDepartment;
Employee mEmployee;
public void getDescription(){
System.out.println("公司");
}
}
static class Employee{
public void getDescription(){
System.out.println("雇員");
}
}
static class Department{
public void getDescription(){
System.out.println("部門");
}
}
/*聚合演示類 end*/
