小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

UML類圖介紹及畫法

 歸葉米古 2017-05-03

箭頭:

指向父類或接口。
指向依賴物。
指向子元素。

 

 

 

繼承、實現(xiàn)是三角型箭頭,其他都為箭頭

組合、聚合都有一個菱形端,且都為實線,其他都無菱形端

繼承是實線,實現(xiàn)是虛線

關(guān)聯(lián)是實線

依賴是虛線

 

        一般化關(guān)系/泛化/繼承

        實現(xiàn)

 

        關(guān)聯(lián)

        聚合

            組合/合成 

 

        依賴

 

傳統(tǒng)應(yīng)用程序設(shè)計中所說的依賴一般指“類之間的關(guān)系”,那先讓我們復(fù)習一下類之間的關(guān)系:

     泛化:表示類與類之間的繼承關(guān)系、接口與接口之間的繼承關(guān)系;

     實現(xiàn):表示類對接口的實現(xiàn);

     依賴:當類與類之間有使用關(guān)系時就屬于依賴關(guān)系,不同于關(guān)聯(lián)關(guān)系,依賴不具有“擁有關(guān)系”,而是一種“相識關(guān)系”,只在某個特定地方(比如某個方法體內(nèi))才有關(guān)系。

     關(guān)聯(lián):表示類與類或類與接口之間的依賴關(guān)系,表現(xiàn)為“擁有關(guān)系”;具體到代碼可以用實例變量來表示;

     聚合:屬于是關(guān)聯(lián)的特殊情況,體現(xiàn)部分-整體關(guān)系,是一種弱擁有關(guān)系;整體和部分可以有不一樣的生命周期;是一種弱關(guān)聯(lián);

 

     組合:屬于是關(guān)聯(lián)的特殊情況,也體現(xiàn)了體現(xiàn)部分-整體關(guān)系,是一種強“擁有關(guān)系”;整體與部分有相同的生命周期,是一種強關(guān)聯(lián);

 

1. 類(Class

一般包含3個組成部分。第一個是類名;第二個是屬性(attributes);第三個是該類提供的方法(類的性質(zhì)可以放在第四部分;如果類中含有內(nèi)部類,則會出現(xiàn)第五個組成部分)。類名部分是不能省略的,其他組成部分可以省略。

 

類名書寫規(guī)范:正體字說明類是可被實例化的,斜體字說明類為抽象類。

 

屬性和方法書寫規(guī)范:修飾符 [描述信息] 屬性、方法名稱 [參數(shù)] [:返回類型|類型]

 

屬性和方法之前可附加的可見性修飾符:

 

加號(+)表示public;減號(-)表示private;#號表示protected;省略這些修飾符表示具有package(包)級別的可見性。

      如果屬性或方法具有下劃線,則說明它是靜態(tài)的。

         描述信息使用 << 開頭和使用 >> 結(jié)尾。

         類的性質(zhì)是由一個屬性、一個賦值方法和一個取值方法組成。書寫方式和方法類似。

1

 

Java代碼  收藏代碼
  1. public class TaxCalculator  
  2. {        
  3.          private longtaxRate ;  
  4.          private intsalary;  
  5.   
  6.          public TaxCalculator(long taxRate)  
  7.          {  
  8.                    this.taxRate = taxRate ;  
  9.          }  
  10.   
  11.         public long countTax()  
  12.          {  
  13.                   return taxRate*salary;  
  14.          }  
  15.   
  16.          public int getSalary()  
  17.          {  
  18.                    return salary;  
  19.          }  
  20.   
  21.          public void setSalary(int salary)  
  22.          {  
  23.                    this.salary = salary;  
  24.          }  
  25.   
  26. }   
 

TaxCalculator

-taxRate:long

+TaxCalculator(a:long)

+countTax():long

salary:long

 

      
2.
包(Package

 

包是一種常規(guī)用途的組合機制。UML中的一個包直接對應(yīng)于Java中的一個包。在Java中,一個包可能含有其他包、類或者同時含有這兩者。進行建模時,通常使用邏輯性的包,用于對模型進行組織;使用物理性的包,用于轉(zhuǎn)換成系統(tǒng)中的Java包。每個包的名稱對這個包進行了惟一性的標識。:

 



 

3. 接口(Interface

 

接口是一系列操作的集合,它指定了一個類所提供的服務(wù)。它直接對應(yīng)于Java中的一個接口類型。接口的表示有大概兩種方式。具體畫法見下例:

 

例:

 

Java代碼  收藏代碼
  1. public interface TaxCalculator  
  2. {  
  3.          public long countTax();  
  4.   
  5.          public int getSalary();  
  6.   
  7.          public void setSalary(int salary);  
  8.   
  9. }   
 

畫法一:

 



 

 

      畫法二 :    

 

Interface

TaxCalculator

+countTax():long

+getSalary():int

+setSalary()

 
 

4. 關(guān)系

 

常見的關(guān)系有:

一般化關(guān)系(繼承)、

實現(xiàn)關(guān)系(接口實現(xiàn))、

聚合關(guān)系、

合成關(guān)系、

依賴關(guān)系。

請注意不同關(guān)系在圖中連線表示的不同。

 

4.1一般化關(guān)系(Generalization

 

在有的書籍和資料中也叫做泛化關(guān)系。

 

       一般化關(guān)系表示類與類、接口與接口之間的繼承關(guān)系。關(guān)系中的箭頭由子類指向父類。在Java中,用extends關(guān)鍵字來直接表示這種關(guān)系。

 

Java代碼  收藏代碼
  1. public abstract class Employee{  
  2.   
  3. }  
  4.   
  5. public class Programmer extends Employee{  
  6.   
  7. }   
 繼承:

 



 

 

4.2實現(xiàn)(Realization

 

實例關(guān)系指定兩個實體之間的一個合同。換言之,一個實體定義一個合同,而另一個實體保證履行該合同。關(guān)系中的箭頭由實現(xiàn)接口的類指向被實現(xiàn)的接口。在Java中,實現(xiàn)關(guān)系可直接用implements關(guān)鍵字來表示。

 

Java代碼  收藏代碼
  1. public interface CollegePerson{  
  2.   
  3. }  
  4.   
  5. public class Professor implements CollegePerson{  
  6.   
  7. }  
 接口實現(xiàn):

 

表示方法一:(在Rose2003 下實現(xiàn)如下,連接線沒有箭頭,因為方向顯而易見)



 

 

表示方法二: 



 

 

 

 

4.3關(guān)聯(lián)(Association

 

表示類與類之間的連接。它使一個類的可見屬性和方法被另一個類使用。關(guān)聯(lián)可以是雙向或者單向的。雙向的關(guān)聯(lián)箭頭是可選的,單向的箭頭指向遍歷或者查詢的方向。在Java中,關(guān)聯(lián)使用實例變量來實現(xiàn)。在關(guān)聯(lián)關(guān)系中可以使用附加的基數(shù)來說明類之間對應(yīng)的個數(shù)。

 

基數(shù)

含義

0..1

零個或者一個實例

0..*或者*

沒有限制,任意

1

有且只能一個實例

1..*

至少有一個實例

 

常見的基數(shù)

 

例:以權(quán)限中的用戶組、用戶角色為例,一個用戶角色可以屬于一個或者多個用戶組,一個用戶組則可以包含多個用戶角色。如果用戶組采用下面的方法來獲得用戶角色的權(quán)限

Java代碼  收藏代碼
  1. public class UserGroup{  
  2.   
  3. private UserRole uRole ;  
  4.   
  5.           ......  
  6.   
  7. }  
  8.   
  9. public class UserRole{  
  10.   
  11. }   
 

 

則表現(xiàn)在圖中為:(注意箭頭的畫法)



 

 


注意:一個關(guān)聯(lián)關(guān)系往往是聚合關(guān)系或者是合成關(guān)系。

 

4.4聚合(Aggregation

 

聚合是關(guān)聯(lián)的一種形式,代表兩個類之間的整體/局部關(guān)系。聚合暗示著整體在概念上處于比局部更高的一個級別,而關(guān)聯(lián)暗示兩個類在概念上位于相同的級別。在Java中,聚合也是使用實例變量來實現(xiàn)的。
關(guān)聯(lián)和聚合的區(qū)別純粹是概念上的,在Java語法上分辨不出來的。聚合還暗示著實例圖中不存在回路。換言之,只能是一種單向關(guān)系。

 

例:汽車與輪胎的關(guān)系可以很好的說問題。

 

Java代碼  收藏代碼
  1. public class Car{  
  2.   
  3.          private Tyres tyres;  
  4. }  
  5.   
  6. public class Tyres{  
  7.   
  8. }   
 聚合:

 



 

 

 

4.5合成、組合(Composition

 

合成是聚合的一種特殊形式,暗示局部整體內(nèi)部的生存期職責。合成關(guān)系是不能共享的。所以,雖然局部不一定要隨整體的銷毀而被銷毀,但整體要么負責保持局部的存活狀態(tài),要么負責將其銷毀。局部不可與其他整體共享。但是,整體可將所有權(quán)轉(zhuǎn)交給另一個對象,后者隨即將承擔生存期職責。

 

       例:人和他的腿就是一個好的例子。

 

Java代碼  收藏代碼
  1. public class Man{  
  2.   
  3.          private Legs legs;  
  4.   
  5. }  
  6.   
  7. public class Legs{  
  8.   
  9. }   
 合成:

 



 

 

 

4.6依賴(Dependency

 

依賴也是類與類之間的連接,并且依賴總是單向的。實體之間一個使用關(guān) 系暗示一個實體的規(guī)范發(fā)生變化后,可能影響依賴于它的其他實例。更具體地說,它可轉(zhuǎn)換為對不在實例作用域內(nèi)的一個類或?qū)ο蟮娜魏晤愋偷囊?。其中包括一個 局部變量,對通過方法調(diào)用而獲得的一個對象的引用(如下例所示),或者對一個類的靜態(tài)方法的引用(同時不存在那個類的一個實例)。也可利用依賴來表示包和包之間的關(guān)系。由于包中含有類,所以你可根據(jù)那些包中的各個類之間的關(guān)系,表示出包和包的關(guān)系。

 

例:給一個雇員計算薪水的時候,要使用計算器的例子

 

Java代碼  收藏代碼
  1. public class Employee{  
  2.   
  3.          public void calcSalary(Calculator cSalary)  
  4.          {  
  5.   
  6.          }  
  7. }   
 依賴:




 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多