<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,快速開發
    最近關心的內容:SSH,seam,flex,敏捷,TDD
    本站的官方站點是:顛覆軟件

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks

    UML 類圖介紹

    一、 UML 簡介

    UML Unified Modeling Language )即統一建模語言,是 OMG Object Management Group )發表的圖標式軟件設計語言。

    UML 的功能:

    可視化:使用圖表的形式來表現業務關系或者物理關系,可以促進對問題的理解和解決。

    說明: UML 提供了一種通用的、精通的、沒有歧義的通信機制進行。

    建造: UML 通過自己的語法規則使得可以通過使用建模工具軟件將設計模式映射到一種語言上。

    建文檔:使用 UML 進行設計可以同時產生系統設計文檔。

    UML 包括:

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

    ?????? ?????? 類圖( Class diagrams

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

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

    ?????? ?????? 狀態圖( Statechart diagrams

    ?????? ?????? 活動圖( Activity diagrams

    ?????? ?????? 構件圖( Component diagrams

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

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

    類圖是最常用的 UML 圖,顯示出類、接口以及它們之間的靜態結構和關系;它用于描述系統的結構化設計。

    類圖最基本的元素是類或者接口。

    ?

    二、類圖

    ?

    1. 類( Class

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

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

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

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

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

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

    ?????? 描述信息使用 << 開頭和使用 >> 結尾。

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

    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

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

    例:

    ?

    ?


    3.
    接口( Interface

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

    例:

    public interface TaxCalculator

    {

    ????? public long countTax();

    ????? public int getSalary();

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

    }

    畫法一:

    ????? 畫法二:

    畫法二 :

    ????? 畫法二:

    ?????

    Interface

    TaxCalculator

    +countTax():long

    +getSalary():int

    +setSalary()

    ?

    ?

    4. 關系

    常見的關系有:一般化關系、實現關系、聚合關系、合成關系和依賴關系。請注意不同關系在圖中連線表示的不同。 ?????

    4.1 一般化關系( Generalization

    在有的書籍和資料中也叫做“泛化關系”。

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

    ????? 例:

    public abstract class Employee{

    }

    public class Programmer extends Employee{

    }

    ?

    ?

    ?

    ?

    4.2 實現( Realization

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

    例:

    public interface CollegePerson{

    }

    public class Professor implements CollegePerson{

    }

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

    表示方法二:

    表示方法二:

    ?

    ?

    4.3 關聯( Association

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

    ?

    基數

    含義

    0..1

    零個或者一個實例

    0..* 或者 *

    沒有限制,任意

    1

    有且只能一個實例

    1..*

    至少有一個實例

    常見的基數

    ?

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

    ????? public class UserGroup{

    private UserRole uRole ;

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

    }

    public class UserRole{

    }

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


    注意:一個關聯關系往往是聚合關系或者是合成關系。


    注意:一個關聯關系往往是聚合關系或者是合成關系

    ?

    4.4 聚合( Aggregation

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

    例:汽車與輪胎的關系可以很好的說問題。

    public class Car{

    ????? private Tyres tyres;

    }

    public class Tyres{

    }

    ?

    ?

    4.5 合成( Composition ):[可以認為關系更強烈]

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

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

    public class Man{

    ????? private Legs legs;

    }

    public class Legs{

    }

    ?

    ?

    ?

    4.6 依賴( Dependency

    依賴也是類與類之間的連接,并且依賴總是單向的。實體之間一個 使用 關 系暗示一個實體的規范發生變化后,可能影響依賴于它的其他實例。更具體地說,它可轉換為對不在實例作用域內的一個類或對象的任何類型的引用。其中包括一個 局部變量,對通過方法調用而獲得的一個對象的引用(如下例所示),或者對一個類的靜態方法的引用(同時不存在那個類的一個實例)。也可利用 依賴 來表示包和包之間的關系。由于包中含有類,所以你可根據那些包中的各個類之間的關系,表示出包和包的關系。

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

    public class Employee{

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

    ????? {

    ????? }

    }

    ?

    ?

    ?


    三、小結

    ????? 在這里主要介紹了在閱讀、設計類圖中可能遇到的細節。希望能對大家有所幫助。由于個人水平有限,對 UML 認識不深,所以在正文中可能存在一些問題和不足,希望大家指正。
    posted on 2006-08-29 22:30 Alex 閱讀(1128) 評論(0)  編輯  收藏 所屬分類: 建模
    主站蜘蛛池模板: 亚洲AV无码国产精品色午友在线| 日韩精品成人亚洲专区| 亚洲AV日韩AV天堂一区二区三区 | 在线观看永久免费视频网站| 久久久久成人片免费观看蜜芽| 亚洲综合色区在线观看| 人成免费在线视频| 一个人免费观看视频www| 亚洲国产成人九九综合| 日韩精品无码区免费专区| 亚洲免费观看视频| 特级做A爰片毛片免费看无码 | 亚洲国产高清在线一区二区三区| MM1313亚洲国产精品| 亚洲国产精品一区二区九九| 99久久99这里只有免费的精品 | 天天天欲色欲色WWW免费| 羞羞网站免费观看| 亚洲日韩小电影在线观看| 免费A级毛片av无码| 色偷偷女男人的天堂亚洲网| 国产在线98福利播放视频免费| 亚洲国产精品综合久久2007| 大地影院MV在线观看视频免费| 久久久久久a亚洲欧洲AV| 福利免费观看午夜体检区| 亚洲av无码专区亚洲av不卡| 国产99视频精品免费观看7| 国产亚洲视频在线观看网址 | 99久久久精品免费观看国产 | 国产精品色午夜免费视频| 久草免费福利在线| 国产乱辈通伦影片在线播放亚洲 | 又大又黄又粗又爽的免费视频| 伊人久久大香线蕉免费视频| 亚洲人成电影在线观看青青| 亚洲高清无码在线观看| 免费国产黄网站在线观看可以下载| 亚洲欧美乱色情图片| 亚洲欧洲∨国产一区二区三区| 野花高清在线观看免费完整版中文 |