自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

專家推薦 經(jīng)典UML類圖教程

開發(fā) 架構(gòu)
UML類圖你是否熟悉,這里向大家介紹一下UML類圖教程,UML類圖(ClassDiagram)描述類和類之間的靜態(tài)關(guān)系。相信通過本文的介紹你對UML類圖一定會有深刻的認識。

本節(jié)向大家介紹一下UML類圖教程, 類圖(ClassDiagram)描述類和類之間的靜態(tài)關(guān)系。與數(shù)據(jù)模型不同,它不僅顯示了信息的結(jié)構(gòu),同時還描述了系統(tǒng)的行為。類圖是定義其它圖的基礎(chǔ)。下面請看詳細介紹。

UML類圖教程

數(shù)千年以前,人類就已經(jīng)開始采用分類的方法有效地簡化復雜問題,幫助人們了解客觀世界。在面向?qū)ο蠼<夹g(shù)中,我們使用同樣的方法將客觀世界的實體映射為對象,并歸納成一個個類。類(Class)、對象(Object)和它們之間的關(guān)聯(lián)是面向?qū)ο蠹夹g(shù)中最基本的元素。對于一個想要描述的系統(tǒng),其類模型和對象模型揭示了系統(tǒng)的結(jié)構(gòu)。在UML中,類和對象模型分別由類圖和對象圖表示。類圖技術(shù)是OO方法的核心。

  (1)類圖

  類圖(ClassDiagram)描述類和類之間的靜態(tài)關(guān)系。與數(shù)據(jù)模型不同,它不僅顯示了信息的結(jié)構(gòu),同時還描述了系統(tǒng)的行為。類圖是定義其它圖的基礎(chǔ)。在類圖的基礎(chǔ)上,狀態(tài)圖、合作圖等進一步描述了系統(tǒng)其他方面的特性。

  (2)類和對象

  對象(Object)與我們對客觀世界的理解相關(guān)。我們通常用對象描述客觀世界中某個具體的實體。所謂類(Class)是對一類具有相同特征的對象的描述。而對象是類的實例(Instance)。建立類模型時,我們應(yīng)盡量與應(yīng)用領(lǐng)域的概念保持一致,以使模型更符合客觀事實,易修改、易理解和易交流。
  UML類圖教程中類描述一類對象的屬性(Attribute)和行為(Behavior)。在UML中,類的可視化表示為一個劃分成三個格子的長方形(下面兩個格子可省略)。圖1中,"客戶"就是一個典型的類。
  類的獲取和命名 最頂部的格子包含類的名字。類的命名應(yīng)盡量用應(yīng)用領(lǐng)域中的術(shù)語,應(yīng)明確、無歧義,以利于開發(fā)人員與用戶之間的相互理解和交流。類的獲取是一個依賴于人的創(chuàng)造力的過程,必須與領(lǐng)域?qū)<液献?對研究領(lǐng)域仔細地分析,抽象出領(lǐng)域中的概念,定義其含義及相互關(guān)系,分析出系統(tǒng)類,并用領(lǐng)域中的術(shù)語為類命名。一般而言,類的名字是名詞。

  類的屬性 中間的格子包含類的屬性,用以描述該類對象的共同特點。該項可省略。圖1中"客戶"類有"客戶名"、"地址"等特性。屬性的選取應(yīng)考慮以下因素:
  ◆原則上來說,類的屬性應(yīng)能描述并區(qū)分每個特定的對象;
  ◆只有系統(tǒng)感興趣的特征才包含在類的屬性中;
  ◆系統(tǒng)建模的目的也會影響到屬性的選取。
  根據(jù)圖的詳細程度,每條屬性可以包括屬性的可見性、屬性名稱、類型、缺省值和約束特性。UML規(guī)定類的屬性的語法為:
  可見性 屬性名: 類型=缺省值 {約束特性}
  
  (3)關(guān)聯(lián)關(guān)系

  UML類圖教程中關(guān)聯(lián)(Association)表示兩個類之間存在某種語義上的聯(lián)系。例如,一個人為一家公司工作,一家公司有許多辦公室。我們就認為人和公司、公司和辦公室之間存在某種語義上的聯(lián)系。在分析設(shè)計的類圖模型中,則在對應(yīng)人類和公司類、公司類和辦公室類之間建立關(guān)聯(lián)關(guān)系。
  在圖1中最上部存在一個"屬于"/"簽定"關(guān)聯(lián):每個"保險單"屬于一個"客戶",而"客戶"可以簽定多個"保險單"。除了這個關(guān)聯(lián)外,圖1中還有另外兩個關(guān)聯(lián),分別表示每個"保險單"包含若干個"保險單上的項目",而每個"保險單上的項目"涉及單一的"保險類別"?! ?/p>

        關(guān)聯(lián)的方向 關(guān)聯(lián)可以有方向,表示該關(guān)聯(lián)單方向被使用。關(guān)聯(lián)上加上箭頭表示方向,在UML中稱為導航(Navigability)。我們將只在一個方向上存在導航表示的關(guān)聯(lián),稱作單向關(guān)聯(lián)(Uni-directionalAssociation),在兩個方向上都有導航表示的關(guān)聯(lián),稱作雙向關(guān)聯(lián)(Bi-directionalAssociation)。圖1中,"保險單"到"保險單上的項目"是單向關(guān)聯(lián)。UML規(guī)定,不帶箭頭的關(guān)聯(lián)可以意味著未知、未確定或者該關(guān)聯(lián)是雙向關(guān)聯(lián)三種選擇,因此,在圖中應(yīng)明確使用其中的一種選擇。
  關(guān)聯(lián)的命名 既然關(guān)聯(lián)可以是雙向的,最復雜的命名方法是每個方向上給出一個名字,這樣的關(guān)聯(lián)有兩個名字,可以用小黑三角表示名字的方向(見圖1中最上部的"屬于"/"簽定"關(guān)聯(lián))。為關(guān)聯(lián)命名有幾種方法,其原則是該命名是否有助于理解該模型。

        角色 關(guān)聯(lián)兩頭的類以某種角色參與關(guān)聯(lián)。例如圖2中,"公司"以"雇主"的角色,"人"以"雇員"的角色參與的"工作合同"關(guān)聯(lián)。"雇主"和"雇員"稱為角色名。如果在關(guān)聯(lián)上沒有標出角色名,則隱含地用類的名稱作為角色名。角色還具有多重性(Multiplicity),表示可以有多少個對象參與該關(guān)聯(lián)。在圖2中,雇主(公司)可以雇傭(簽工作合同)多個雇員,表示為"*";雇員只能與一家雇主簽定工作合同,表示為"1"。多重性表示參與對象的數(shù)目的上下界限制。"*"代表0~∞,即一個客戶可以沒有保險單,也可以有任意多的保險單。"1"是1..1的簡寫,即任何一個保險單僅來自于一個客戶,可以用一個單個數(shù)字表示,也可以用范圍或者是數(shù)字和范圍不連續(xù)的組合表示。#p#

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

一個關(guān)聯(lián)可能要記錄一些信息,可以引入一個關(guān)聯(lián)類來記錄。圖3是在圖2的基礎(chǔ)上引入了關(guān)聯(lián)類。關(guān)聯(lián)類通過一根虛線與關(guān)聯(lián)連接。圖4是實現(xiàn)上述目標的另外一種方法,就是使雇用關(guān)系成為一個正式的類。

  聚集和組成

 UML類圖教程中聚集(Aggregation)是一種特殊形式的關(guān)聯(lián)。聚集表示類之間的關(guān)系是整體與部分的關(guān)系。一輛轎車包含四個車輪、一個方向盤、一個發(fā)動機和一個底盤,這是聚集的一個例子。在需求分析中,"包含"、"組成"、"分為……部分"等經(jīng)常設(shè)計成聚集關(guān)系。聚集可以進一步劃分成共享聚集(SharedAggregation)和組成。例如,課題組包含許多成員,但是每個成員又可以是另一個課題組的成員,即部分可以參加多個整體,我們稱之為共享聚集。另一種情況是整體擁有各部分,部分與整體共存,如整體不存在了,部分也會隨之消失,這稱為組成(Composition)。例如,我們打開一個視窗口,它就由標題、外框和顯示區(qū)所組成。一旦消亡則各部分同時消失。在UML中,聚集表示為空心菱形,組成表示為實心菱形。需要注意的是,一些面向?qū)ο蟠髱煂奂亩x并不一樣。大家應(yīng)注意其他面向?qū)ο蠓椒ㄅcUML中所定義的聚集的差別。

  (4)繼承關(guān)系

  人們將具有共同特性的元素抽象成類別,并通過增加其內(nèi)涵而進一步分類。例如,動物可分為飛鳥和走獸,人可分為男人和女人。在面向?qū)ο蠓椒ㄖ袑⑶罢叻Q為一般元素、基類元素或父元素,將后者稱為特殊元素或子元素。繼承(Generalization)定義了一般元素和特殊元素之間的分類關(guān)系。在UML中,繼承表示為一頭為空心三角形的連線。
  如圖1中,將客戶進一步分類成個體客戶和團體客戶,使用的就是繼承關(guān)系。
  在UML定義中對繼承有三個要求:
  ◆ 特殊元素應(yīng)與一般元素完全一致,一般元素所具有的關(guān)聯(lián)、屬性和操作,特殊元素也都隱含性地具有;
  ◆ 特殊元素還應(yīng)包含額外信息;
  ◆ 允許使用一般元素實例的地方,也應(yīng)能使用特殊元素。

  (5)依賴關(guān)系

  有兩個元素X、Y,如果修改元素X的定義可能會引起對另一個元素Y的定義的修改,則稱元素Y依賴(Dependency)于元素X。在類中,依賴由各種原因引起,如:一個類向另一個類發(fā)消息;一個類是另一個類的數(shù)據(jù)成員;一個類是另一個類的某個操作參數(shù)。如果一個類的界面改變,它發(fā)出的任何消息可能不再合法。

  (6)類圖的抽象層次和細化(Refinement)關(guān)系

  需要注意的是,雖然在軟件開發(fā)的不同階段都使用類圖,但這些類圖表示了不同層次的抽象。在需求分析階段,類圖是研究領(lǐng)域的概念;在設(shè)計階段,類圖描述類與類之間的接口;而在實現(xiàn)階段,類圖描述軟件系統(tǒng)中類的實現(xiàn)。UML類圖教程中按照SteveCook和JohnDianiels的觀點,類圖分為三個層次。需要說明的是,這個觀點同樣也適合于其他任何模型,只是在類圖中顯得更為突出。
  概念層 概念層(Conceptual)類圖描述應(yīng)用領(lǐng)域中的概念。實現(xiàn)它們的類可以從這些概念中得出,但兩者并沒有直接的映射關(guān)系。事實上,一個概念模型應(yīng)獨立于實現(xiàn)它的軟件和程序設(shè)計語言。
  說明層 說明層(Specification)類圖描述軟件的接口部分,而不是軟件的實現(xiàn)部分。面向?qū)ο箝_發(fā)方法非常重視區(qū)別接口與實現(xiàn)之間的差異,但在實際應(yīng)用中卻常常忽略這一差異。這主要是因為OO語言中類的概念將接口與實現(xiàn)合在了一起。大多數(shù)方法由于受到語言的影響,也仿效了這一做法。現(xiàn)在這種情況正在發(fā)生變化??梢杂靡粋€類型(Type)描述一個接口,這個接口可能因為實現(xiàn)環(huán)境、運行特性或者用戶的不同而具有多種實現(xiàn)。

  實現(xiàn)層 只有在實現(xiàn)層(Implementation)才真正有類的概念,并且揭示軟件的實現(xiàn)部分。這可能是大多數(shù)人最常用的類圖,但在很多時候,說明層的類圖更易于開發(fā)者之間的相互理解和交流。
  理解以上層次對于畫類圖和讀懂類圖都是至關(guān)重要的。但是由于各層次之間沒有一個清晰的界限,所以大多數(shù)建模者在畫圖時沒能對其加以區(qū)分。畫圖時,要從一個清晰的層次觀念出發(fā);而讀圖時,則要弄清它是根據(jù)哪種層次觀念來繪制的。要正確地理解類圖,首先應(yīng)正確地理解上述三種層次。雖然將類圖分成三個層次的觀點并不是UML的組成部分,但是它們對于建?;蛘咴u價模型非常有用。盡管迄今為止人們似乎更強調(diào)實現(xiàn)層類圖,但這三個層次都可應(yīng)用于UML,而且實際上另外兩個層次的類圖更有用。
  下面介紹細化概念。細化是UML中的術(shù)語,表示對事物更詳細一層的描述。兩個元素A、B描述同一件事物,它們的區(qū)別是抽象層次不同,若元素B是在元素A的基礎(chǔ)上的更詳細的描述,則稱元素B細化了元素A,或稱元素A細化成元素B。細化的圖形表示為由元素B指向元素A的、一頭為空心三角的虛線(千萬不要把方向顛倒了!)。細化主要用于模型之間的合作,表示開發(fā)各階段不同層次抽象模型的相關(guān)性,常用于跟蹤模型的演變。

  (7)約束
  在UML類圖教程中,可以用約束(Constraint)表示規(guī)則。約束是放在括號"{}"中的一個表達式,表示一個永真的邏輯陳述。在程序設(shè)計語言中,約束可以由斷言(Assertion)來實現(xiàn)。


 

 【編輯推薦】

  1. UML類圖依賴關(guān)系和其他關(guān)系區(qū)別
  2. UML類圖畫法及含義剖析
  3. 揭秘五種UML類圖關(guān)系
  4. UML類圖關(guān)系大全
  5. UML基礎(chǔ)與應(yīng)用--UML類圖解析

 

 

責任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-06-07 17:24:44

UML

2010-08-04 09:51:05

Flex學習

2010-06-28 17:26:02

UML類圖關(guān)系

2010-07-01 12:21:35

UML類圖關(guān)系

2010-06-12 17:19:18

UML用戶指南

2010-07-06 10:00:08

UML部署圖

2010-06-11 10:31:19

UML部署圖

2010-07-05 10:20:27

UML圖

2010-07-02 14:04:24

UML圖

2010-07-01 10:24:30

UML小工具

2010-06-30 14:37:20

UML類圖

2010-07-12 10:25:44

UML類圖

2010-06-11 17:18:26

UML精粹

2010-07-12 11:36:32

UML活動圖

2010-06-11 09:46:55

UML順序圖

2010-07-06 11:51:21

UML活動圖

2010-06-08 16:08:42

UML建模工具

2010-07-12 09:37:26

UML建模

2010-06-29 11:00:25

UML類圖實例

2010-06-12 18:30:57

UML類圖關(guān)系
點贊
收藏

51CTO技術(shù)棧公眾號