<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開(kāi)發(fā)
    最近關(guān)心的內(nèi)容:SSH,seam,flex,敏捷,TDD
    本站的官方站點(diǎn)是:顛覆軟件

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評(píng)論 :: 0 Trackbacks

    UML 類(lèi)圖介紹

    一、 UML 簡(jiǎn)介

    UML Unified Modeling Language )即統(tǒng)一建模語(yǔ)言,是 OMG Object Management Group )發(fā)表的圖標(biāo)式軟件設(shè)計(jì)語(yǔ)言。

    UML 的功能:

    可視化:使用圖表的形式來(lái)表現(xiàn)業(yè)務(wù)關(guān)系或者物理關(guān)系,可以促進(jìn)對(duì)問(wèn)題的理解和解決。

    說(shuō)明: UML 提供了一種通用的、精通的、沒(méi)有歧義的通信機(jī)制進(jìn)行。

    建造: UML 通過(guò)自己的語(yǔ)法規(guī)則使得可以通過(guò)使用建模工具軟件將設(shè)計(jì)模式映射到一種語(yǔ)言上。

    建文檔:使用 UML 進(jìn)行設(shè)計(jì)可以同時(shí)產(chǎn)生系統(tǒng)設(shè)計(jì)文檔。

    UML 包括:

    ?????? ?????? 用例圖( Use case diagrams

    ?????? ?????? 類(lèi)圖( Class diagrams

    ?????? ?????? 序列圖( Sequence diagrams

    ?????? ?????? 合作圖( Collaboration diagrams

    ?????? ?????? 狀態(tài)圖( Statechart diagrams

    ?????? ?????? 活動(dòng)圖( Activity diagrams

    ?????? ?????? 構(gòu)件圖( Component diagrams

    ?????? ?????? 部署圖( Deployment diagrams

    (藍(lán)色為較重要并且常用的圖)

    類(lèi)圖是最常用的 UML 圖,顯示出類(lèi)、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系;它用于描述系統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)。

    類(lèi)圖最基本的元素是類(lèi)或者接口。

    ?

    二、類(lèi)圖

    ?

    1. 類(lèi)( Class

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

    類(lèi)名書(shū)寫(xiě)規(guī)范:正體字說(shuō)明類(lèi)是可被實(shí)例化的,斜體字說(shuō)明類(lèi)為抽象類(lèi)。

    屬性和方法書(shū)寫(xiě)規(guī)范:修飾符 [ 描述信息 ] 屬性、方法名稱(chēng) [ 參數(shù) ] [ :返回類(lèi)型 | 類(lèi)型 ]

    屬性和方法之前可附加的可見(jiàn)性修飾符:

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

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

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

    ?????? 類(lèi)的性質(zhì)是由一個(gè)屬性、一個(gè)賦值方法和一個(gè)取值方法組成。書(shū)寫(xiě)方式和方法類(lèi)似。

    1

    ?????? public class TaxCalculator

    {???

    ????? private long? taxRate ;

    ????? private int? salary? ;

    ?????

    ????? 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;

    ????? }

    }

    TaxCalculator

    -taxRate:long

    +TaxCalculator(a:long)

    +countTax():long

    salary:long

    ?????
    2.
    包( Package

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

    例:

    ?

    ?


    3.
    接口( Interface

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

    例:

    public interface TaxCalculator

    {

    ????? public long countTax();

    ????? public int getSalary();

    ????? public void setSalary(int salary);

    }

    畫(huà)法一:

    ????? 畫(huà)法二:

    畫(huà)法二 :

    ????? 畫(huà)法二:

    ?????

    Interface

    TaxCalculator

    +countTax():long

    +getSalary():int

    +setSalary()

    ?

    ?

    4. 關(guān)系

    常見(jiàn)的關(guān)系有:一般化關(guān)系、實(shí)現(xiàn)關(guān)系、聚合關(guān)系、合成關(guān)系和依賴(lài)關(guān)系。請(qǐng)注意不同關(guān)系在圖中連線表示的不同。 ?????

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

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

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

    ????? 例:

    public abstract class Employee{

    }

    public class Programmer extends Employee{

    }

    ?

    ?

    ?

    ?

    4.2 實(shí)現(xiàn)( Realization

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

    例:

    public interface CollegePerson{

    }

    public class Professor implements CollegePerson{

    }

    表示方法一:(在 Rose2003 下實(shí)現(xiàn)如下,連接線沒(méi)有箭頭,因?yàn)榉较蝻@而易見(jiàn))

    表示方法二:

    表示方法二:

    ?

    ?

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

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

    ?

    基數(shù)

    含義

    0..1

    零個(gè)或者一個(gè)實(shí)例

    0..* 或者 *

    沒(méi)有限制,任意

    1

    有且只能一個(gè)實(shí)例

    1..*

    至少有一個(gè)實(shí)例

    常見(jiàn)的基數(shù)

    ?

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

    ????? public class UserGroup{

    private UserRole uRole ;

    ????? ????? ......

    }

    public class UserRole{

    }

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


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


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

    ?

    4.4 聚合( Aggregation

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

    例:汽車(chē)與輪胎的關(guān)系可以很好的說(shuō)問(wèn)題。

    public class Car{

    ????? private Tyres tyres;

    }

    public class Tyres{

    }

    ?

    ?

    4.5 合成( Composition ):[可以認(rèn)為關(guān)系更強(qiáng)烈]

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

    ????? 例:人和他的腿就是一個(gè)好的例子。

    public class Man{

    ????? private Legs legs;

    }

    public class Legs{

    }

    ?

    ?

    ?

    4.6 依賴(lài)( Dependency

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

    例:給一個(gè)雇員計(jì)算薪水的時(shí)候 , 要使用計(jì)算器的例子

    public class Employee{

    ????? public void calcSalary(Calculator cSalary)

    ????? {

    ????? }

    }

    ?

    ?

    ?


    三、小結(jié)

    ????? 在這里主要介紹了在閱讀、設(shè)計(jì)類(lèi)圖中可能遇到的細(xì)節(jié)。希望能對(duì)大家有所幫助。由于個(gè)人水平有限,對(duì) UML 認(rèn)識(shí)不深,所以在正文中可能存在一些問(wèn)題和不足,希望大家指正。
    posted on 2006-08-29 22:30 Alex 閱讀(1129) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 建模
    主站蜘蛛池模板: 亚洲精品无码av片| www成人免费视频| 热久久这里是精品6免费观看| 免费无码成人AV在线播放不卡| 成人黄软件网18免费下载成人黄18免费视频| 亚洲国产成人爱av在线播放| 久久精品九九亚洲精品| 国产偷国产偷亚洲高清人| 免费看又黄又无码的网站 | 四虎影视成人永久免费观看视频 | 久久久久亚洲精品日久生情| 美女露100%胸无遮挡免费观看| 蜜桃视频在线观看免费视频网站WWW| 日韩一区二区三区免费体验| 亚洲国产女人aaa毛片在线| 精品久久久久久亚洲中文字幕| 91香蕉国产线在线观看免费 | 亚洲精品乱码久久久久久不卡| 亚洲福利视频一区二区三区| 一级女人18片毛片免费视频| 日韩精品成人无码专区免费| 国产亚洲精品福利在线无卡一| 亚洲三级在线视频| 免费福利在线视频| 亚洲av成人一区二区三区在线观看| 亚洲成aⅴ人片在线观| 国产一级婬片A视频免费观看| 国产精品久久免费视频| 亚洲国产成人超福利久久精品| 高清永久免费观看 | 日本高清免费不卡在线| 77777_亚洲午夜久久多人| 精品免费久久久久国产一区| 日本不卡视频免费| 亚洲av无码专区在线| 免费福利在线视频| 亚洲综合精品香蕉久久网| 特级无码毛片免费视频| 全免费一级午夜毛片| 亚洲一区二区三区精品视频| 91在线手机精品免费观看|