第9章面向?qū)ο笈cUML_第1頁
第9章面向?qū)ο笈cUML_第2頁
第9章面向?qū)ο笈cUML_第3頁
第9章面向?qū)ο笈cUML_第4頁
第9章面向?qū)ο笈cUML_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第9章面向?qū)ο笈cUML

面向?qū)ο蟮乃枷胱畛醭霈F(xiàn)于挪威奧斯陸大學和挪威計算機中心共同研制的Simula67語言中,隨著的Smalltalk76和80語言推出,面向?qū)ο蟮牡某绦蛟O(shè)計方法得到了比較完善的實現(xiàn)。此后,面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計和軟件開發(fā),擴展到如數(shù)據(jù)庫系統(tǒng),交互式界面,分布式系統(tǒng),網(wǎng)絡(luò)管理結(jié)構(gòu)和人工智能等領(lǐng)域。

面向?qū)ο蟮募夹g(shù)已成為軟件開發(fā)的一種新方法,新技術(shù)。9.1面向?qū)ο蟮幕靖拍?.1.1什么是面向?qū)ο蟮拈_發(fā)方法

OOSD(Object-OrientedSoftwareDevelopment)法是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程,指導(dǎo)開發(fā)活動的系統(tǒng)方法。問題空間—軟件系統(tǒng)所涉及到的應(yīng)用領(lǐng)域和業(yè)務(wù)范圍(現(xiàn)實世界)。解空間—用于解決某些問題的軟件系統(tǒng)。一、軟件開發(fā)過程問題空間(現(xiàn)實世界)解空間(軟件系統(tǒng))映射二、面向?qū)ο蠹夹g(shù)的特點1.對軟件開發(fā)過程所有階段進行綜合考慮。使問題空間與解空間具有一致性,降低復(fù)雜性。2.軟件生存期各階段所使用的方法、技術(shù)具有高度的連續(xù)性,用符合人類認識世界的思維方式來分析、解決問題。自然、連續(xù)問題空間(現(xiàn)實世界)解空間(軟件系統(tǒng))實體1實體2實體n對象1對象n對象23.將OOA、OOD、OOP有機地集成在一起。有利于系統(tǒng)的穩(wěn)定性.

OOA(Object-OrientedAnalysis)

OOD(Object-OrientedDesign)

OOP(Object-OrientedProgram)

以對象為中心各種構(gòu)造系統(tǒng),而不是以功能為中心,能很好地適應(yīng)需求變化.4.具有良好的可重用性由于對象所具有的封裝性和信息隱蔽,具有很強的獨立性。

理解面向?qū)ο蟮幕靖拍顚τ趯W習和掌握面向?qū)ο蟮拈_發(fā)方法是十分重要的。9.1.2面向?qū)ο蟮幕靖拍铑悾–lass)對象(Object)消息(Information)多態(tài)性(Polymorphism)繼承(Inheritance)永久對象(Persistentobject)1.對象(Object)對象(Object)是客觀事物或概念的抽象表述,即對客觀存在的事物的描述統(tǒng)稱為對象。對象可以是事、物、或抽象概念,是將一組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作或過程封裝在一起的實體。

屬性(attribute)—對象本身的性質(zhì)。操作(operation)—給對象定義一組運算。對象將它自身的屬性及運算“包裝起來”,稱為“封裝”(encapsulation).

對象的最基本的特征是封裝性和繼承性。2.類(Class)類又稱對象類(ObjectClass),是一組具有相同屬性和相同操作的對象的集合。在一個類中,每個對象都是類的實例(instance),它們都可以使用類中提供的函數(shù)。類具有屬性,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性,類具有操作,它是對象的行為的抽象,操作實現(xiàn)的過程稱為方法(method),方法有方法名,方法體和參數(shù)。

由于對象是類的實例,在進行分析和設(shè)計時,通常把注意力集中在類上,而不是具體的對象上。幾何對象顏色位置移動(delta:矢量)選擇(P:指針型):布爾型旋轉(zhuǎn)(角度)圖5.1對象類的描述人姓名:字符串年齡:整型改換工作改換地址文件文件名文件大小最近更新日期打印(人)張紅兵28繪圖員人民路8號(人)李軍24程序員無圖5.2對象的描述對象和類的描述類和對象一般采用“名字”、“屬性”和“運算”來描述。類名屬性運算

對象

類3.繼承

(Inheritance)

繼承是使用現(xiàn)存的定義作為基礎(chǔ),建立新定義的技術(shù)。是父類和子類之間共享數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關(guān)系。繼承性分:

單重繼承:一個子類只有一個父類。即子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)和方法。

多重繼承:一個子類可有多個父類。繼承多個父類的數(shù)據(jù)結(jié)構(gòu)和方法?;愖宇怉子類B圖5.4繼承性描述現(xiàn)存類定義父類(基類)新類定義子類(派生類)繼承圖5.3繼承性4.消息(Message)

消息就是向?qū)ο蟀l(fā)出的服務(wù)請求(互相聯(lián)系、協(xié)同工作等)。對象之間的聯(lián)系可表示為對象間的消息傳遞,即對象間的通訊機制。一個消息應(yīng)該包含以下信息:消息名、接收消息對象的標識、服務(wù)標識、消息和方法、輸入信息、回答信息。

在對象的操作中當一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的消息。5.多態(tài)性和動態(tài)綁定

多態(tài)性(Polymorphism)是指相同的操作或函數(shù)、過程作用于不同的對象上并獲得不同的結(jié)果。

即相同的操作的消息發(fā)送給不同的對象時,每個對象將根據(jù)自己所屬類中定義的操作去執(zhí)行,產(chǎn)生不同的結(jié)果。

例如:“繪圖”操作,作用在“橢圓”和“矩形”上,畫出不同的圖形。

動態(tài)綁定(dynamicbinding)是在運行時根據(jù)對象接收的消息動態(tài)地確定要連接的服務(wù)代碼。

使用虛函數(shù)可實現(xiàn)動態(tài)聯(lián)編,不同聯(lián)編可以選擇不同的實現(xiàn),這便是多態(tài)性。繼承是動態(tài)聯(lián)編的基礎(chǔ),虛函數(shù)是動態(tài)聯(lián)編的關(guān)鍵。6.永久對象(Persistentobject)

所謂永久對象是指生存期可以超越程序的執(zhí)行時間而長期存在的對象。

目前,大多數(shù)OOPL不支持永久對象,如果一個對象要長期保存,必須依靠于文件系統(tǒng)或數(shù)據(jù)庫管理系統(tǒng)實現(xiàn),程序員需要作對象與文件系統(tǒng)或數(shù)據(jù)庫之間數(shù)據(jù)格式的轉(zhuǎn)換,以及保存和恢復(fù)所需的操作等煩瑣的工作。為了實現(xiàn)永久對象,使上述煩瑣工作由系統(tǒng)自動完成,需要較強的技術(shù)支持;需要一個基于永久對象管理系統(tǒng)OMS(objectmanagementsystem),能夠描述和處理永久對象的編程語言。9.3UML統(tǒng)一建模語言9.3UML概述

UML(UnifiedModelingLanguage)是軟件界第一個統(tǒng)一的建模語言,該方法結(jié)合了Booch,OMT,和OOSE方法的優(yōu)點,統(tǒng)一了符號體系,并從其它的方法和工程實踐中吸收了許多經(jīng)過實際檢驗的概念和技術(shù)。

它是一種標準的表示,已成為國際軟件界廣泛承認的標準。是一種基于面向?qū)ο蟮目梢暬耐ㄓ?General)建模語言。為不同領(lǐng)域的用戶提供了統(tǒng)一的交流標準—UML圖。

UML應(yīng)用領(lǐng)域很廣泛,可用于軟件開發(fā)建模的各個階段,商業(yè)建模(BusinessModeling),也可用于其它類型的系統(tǒng)。<documents>UML2.0<documents>UML1.2<documents>UML1.1<documents>UML1.0<documents>UML0.9<documents>UnifiedMethod0.8<documents>UML1.3<documents>UML1.41995文檔版類1996精華相關(guān)1997年1月最初提交給

OMG1997年9月最后提交給OMG19981999

2000年(計劃的較小修訂)

2001年計劃的重要修訂文字上的修改沒有顯著的技術(shù)變化UML形成9.3.1UML的主要內(nèi)容

UML的定義包括UML語義和UML表示法兩個部分。(1)UML語義描述基于UML的精確元模型(meta-model)定義。元模型為UML的所有元素在語法和語義上提供了簡單、一致、通用的定義性說明,使開發(fā)者能在語義上取得一致,消除了因人而異的表達方法所造成的影響。此外UML還支持對元模型的擴展定義。

UML支持各種類型的語義。如布爾、表達式、列表、階、名字、坐標、字符串和時間等,還允許用戶自定義類型。(2)UML表示法定義UML符號的表示法,為開發(fā)者或開發(fā)工具使用這些圖形符號和文本語法為系統(tǒng)建模提供了標準。這些圖形符號和文字所表達的是應(yīng)用級的模型,在語義上它是UML元模型的實例。UML是一種標準化的圖形建模語言,它是面向?qū)ο蠓治雠c設(shè)計的一種標準表示。由:

視圖(views),

圖(Diagrams),

模型元素(Modelelements)

通用機制(generalmechanism)等幾個部分構(gòu)成。

UML的主要構(gòu)成UML的主要內(nèi)容一個系統(tǒng)應(yīng)從不同的角度進行描述,從一個角度觀察到的系統(tǒng)稱為一個視圖(view)。視圖由多個圖(Diagrams)構(gòu)成,它不是一個圖表(Graph),而是在某一個抽象層上,對系統(tǒng)的抽象表示。如果要為系統(tǒng)建立一個完整的模型圖,需定義一定數(shù)量的視圖,每個視圖表示系統(tǒng)的一個特殊的方面。另外,視圖還把建模語言和系統(tǒng)開發(fā)時選擇的方法或過程連接起來。視圖(views)設(shè)計視圖實現(xiàn)視圖配置視圖過程視圖Usecase視圖UsecaseView描述系統(tǒng)的外部特性、系統(tǒng)功能等。ImplementationView

表示系統(tǒng)的實現(xiàn)特征,常用構(gòu)件圖表示。DesignView

描述系統(tǒng)設(shè)計特征,包括結(jié)構(gòu)模型視圖和行為模型視圖,前者描述系統(tǒng)的靜態(tài)結(jié)構(gòu)(類圖、對象圖),后者描述系統(tǒng)的動態(tài)行為(交互圖、狀態(tài)圖、活動圖)。ProcessView

表示系統(tǒng)內(nèi)部的控制機制。常用類圖描述過程結(jié)構(gòu),用交互圖描述過程行為。DeploymentView

配置視圖描述系統(tǒng)的物理配置特征。用配置圖表示。UML常用視圖UML語言定義了五種類型,9種不同的圖,把它們有機的結(jié)合起來就可以描述系統(tǒng)的所有視圖。用例圖(Usecasediagram)

從用戶角度描述系統(tǒng)功能,并指出各功能的操作者。靜態(tài)圖(Staticdiagram),表示系統(tǒng)的靜態(tài)結(jié)構(gòu)。包括類圖、對象圖、包圖。行為圖(Behaviordiagram),描述系統(tǒng)的動態(tài)模型和組成對象間的交互關(guān)系。包括狀態(tài)圖、活動圖。交互圖(Interactivediagram),描述對象間的交互關(guān)系。包括順序圖、合作圖。實現(xiàn)圖(Implementationdiagram)用于描述系統(tǒng)的物理實現(xiàn)。包括構(gòu)件圖、部件圖。

圖(Diagrams)圖通用機制(generalmechanism)

用于表示其他信息,比如注釋,模型元素的語義等。另外,為了適應(yīng)用戶的需求,它還提供了擴展機制(Extensibilitymechanisms)

,包括構(gòu)造型(Stereotype)、標記值(Taggedvalue)和約束(Constraint).使用UML語言能夠適應(yīng)一個特殊的方法(或過程),或擴充至一個組織或用戶。模型元素(Modelelements)代表面向?qū)ο笾械念?,對象,關(guān)系和消息等概念,是構(gòu)成圖的最基本的常用的元素。一個模型元素可以用于多個不同的圖中。通用模型元素

模型元素是UML構(gòu)造系統(tǒng)的各種元素,是UML構(gòu)建模型的基本單位。分為以下兩類:1.基元素是由UML定義的模型元素。如:類、結(jié)點、構(gòu)件、注釋、關(guān)聯(lián)、依賴和泛化等。2.構(gòu)造型元素在基元素的基礎(chǔ)上增加了新的定義而構(gòu)造的新的模型元素。如擴展基元素的語義(不能擴展語法結(jié)構(gòu)),也允許用戶自定義。構(gòu)造型元素用括在雙尖括號<<>>中的字符串表示。目前UML提供了40多個預(yù)定義的構(gòu)造型元素。如包含<<include>>、擴展<<Extend

>>。常用模型元素常用的模型元素

可以在圖中使用的概念統(tǒng)稱為模型元素。模型元素在圖中用其相應(yīng)的視圖元素(符號)表示,圖中給出了常用的元素符號:類、對象、結(jié)點、包和組件等。用例包結(jié)點狀態(tài)組件屬性類操作對象屬性操作接口注釋模型元素

關(guān)聯(lián):連接(connect)模型元素及鏈接(link)實例。

依賴:表示一個元素以某種方式依賴于另一種元素。

泛化:表示一般與特殊的關(guān)系,即“一般”元素是“特殊”關(guān)系的泛化。

聚合:表示整體與部分的關(guān)系。連接關(guān)系關(guān)聯(lián)組合聚合依賴細化泛化(繼承)模型元素與模型元素之間的連接關(guān)系也是模型元素,常見的關(guān)系有關(guān)聯(lián)(association)、泛化(generalization)、依賴(dependency)和聚合(aggregation),其中聚合是關(guān)聯(lián)的一種特殊形式。這些關(guān)系的圖示符號如圖所示。9.3用例建模

1992年由Jacobson提出了Usecase的概念及可視化的表示方法—Usecase圖,并加入由他所倡導(dǎo)的OOSE。受到了IT界的歡迎,被廣泛應(yīng)用到了面向?qū)ο蟮南到y(tǒng)分析中。用例驅(qū)動的系統(tǒng)分析與設(shè)計方法已成為面向?qū)ο蟮南到y(tǒng)分析與設(shè)計方法的主流。

UML的用例模型一直被推薦為識別和捕獲需求的首選工具!!

用例建模技術(shù),用于描述系統(tǒng)的功能需求。在宏觀上給出模型的總體輪廓。通過對典型用例的分析,使開發(fā)者能夠有效地了解用戶的需求。9.3.1用例建模概述網(wǎng)絡(luò)中間層狀態(tài)包檢測防火墻系統(tǒng)開/關(guān)防火墻防火墻規(guī)則表管理基于歷史狀態(tài)的包處理網(wǎng)卡驅(qū)動程序(NICDriver)防火墻規(guī)則管理員TCP/IP協(xié)議棧(TCPIP.SYS)<<use>>9.3.2用例模型(Usecasemodel)

用例模型描述外部執(zhí)行者(Actor)所理解的系統(tǒng)功能。即待開發(fā)系統(tǒng)的功能需求。它驅(qū)動了需求分析之后各階段的開發(fā)工作,還被用于驗證和檢測所開發(fā)的系統(tǒng),影響了UML

的各個模型。用例模型由若干個用例圖構(gòu)成,用例圖中主要描述執(zhí)行者和用例之間的關(guān)系。在UML中,構(gòu)成用例圖的主要元素是用例和執(zhí)行者及其它們之間的聯(lián)系。創(chuàng)建用例模型的工作包括:

定義系統(tǒng)、確定執(zhí)行者和用例、描述用例、定義用例間的關(guān)系、確認模型。

如何建立用例模型

建立系統(tǒng)用例模型的過程就是對系統(tǒng)進行功能需求分析的過程。定義系統(tǒng)確定執(zhí)行者和用例描述執(zhí)行者和用例關(guān)系確認模型●確定系統(tǒng)范圍;●分析系統(tǒng)功能。

●執(zhí)行者通常是使用系統(tǒng)功能的外部用戶或系統(tǒng)?!裼美且粋€子系統(tǒng)或系統(tǒng)的一個獨立、完整功能。各模型元素之間有:關(guān)聯(lián)、使用、擴展及泛化等關(guān)系。確認用例模型與用戶需求的一致性,通常由用戶與開發(fā)者共同完成。一、確定執(zhí)行者(Actor)執(zhí)行者是指用戶在系統(tǒng)中所扮演的角色,執(zhí)行者用類似人的圖形來表示,但執(zhí)行者可以是人,也可以是一個外界系統(tǒng)。如何確定執(zhí)行者:1、誰使用系統(tǒng)的主要功能(主執(zhí)行者)?2、誰需要從系統(tǒng)獲得對日常工作的支持和服務(wù)?3、需要誰維護管理系統(tǒng)的日常運行(副執(zhí)行者)?4、系統(tǒng)需要控制哪些硬件設(shè)備?5、系統(tǒng)需要與其它哪些系統(tǒng)交互?6、誰需要使用系統(tǒng)產(chǎn)生的結(jié)果(值)?一、執(zhí)行者供貨買飲料取貨款客戶供貨人收銀員自動售貨系統(tǒng)回例1二、用例如何確定用例:1、與系統(tǒng)實現(xiàn)有關(guān)的主要問題是什么?2、系統(tǒng)需要哪些輸入/輸出?這些輸入/輸出從何而來?到哪里去?3、執(zhí)行者需要系統(tǒng)提供哪些功能?4、執(zhí)行者是否需要對系統(tǒng)中的信息進行讀、創(chuàng)建、修改、刪除或存儲?二、用例回例1二、用例二、用例(usecase)

從本質(zhì)上講,一個用例是用戶與計算機之間的一次典型交互作用。在UML中,用例被定義成系統(tǒng)執(zhí)行的一系列動作(功能)。用例有以下特點:用例實現(xiàn)一個具體的用戶目標。用例由執(zhí)行者激活,并將結(jié)果值反饋給執(zhí)行者。用例必須具有功能上的完整描述。二、用例三、用例之間的關(guān)系

執(zhí)行者與用例之間通常是一種關(guān)聯(lián)。用例之間的聯(lián)系:<<Use>>表示一個用例使用另一個用例。<<Extend>>通過向被擴展的用例添加動作來擴展用例。<<include>>表示一個用例的行為包含了另一個用例的行為。售貨供貨取貨款顧客供貨人收銀員售散裝飲料打開機器關(guān)閉機器打開機器關(guān)閉機器<<擴展>><<使用>><<使用>><<使用>><<使用>>自動售貨機系統(tǒng)含有使用和擴展關(guān)系的用例圖其中:<<Use>>,<<Extend>>是一種泛化關(guān)系。

<<include>>是一種依賴關(guān)系。9.3.3用例圖實例例1建立項目與資源管理系統(tǒng)的Usecase圖

系統(tǒng)的主要功能是:包括項目管理,資源管理和系統(tǒng)管理三大管理功能。

1.項目管理包括項目的增加、刪除、更新。

2.資源管理包括對資源和技能的添加、刪除和更新。

3.系統(tǒng)管理包括系統(tǒng)的啟動和關(guān)閉,數(shù)據(jù)的存儲和備份等功能。說明:技能表示人力資源。1.分析確定系統(tǒng)的執(zhí)行者(角色)到確定到確定

項目管理員、資源管理員、系統(tǒng)管理員、備份數(shù)據(jù)系統(tǒng)。項目管理,資源管理和系統(tǒng)管理。2.確定用例3.對用例進行分解,畫出下層的Usecase圖角色:角色職責:角色職責識別:角色描述模板

還應(yīng)畫出相應(yīng)的執(zhí)行者描述模板及用例描述模板。

對上層的用例進行分解,并將執(zhí)行者分配到各層次的Usecase圖中。用例名:功能描述:主要步驟:相關(guān)用例:相關(guān)信息:(優(yōu)先級性能,頻度…)用例描述模板例1項目與資源管理系統(tǒng)(PRMS)添加技能刪除技能更新技能資源管理員添加資源刪除資源更新資源查找技能<<Use>>查找資源<<Use>><<Use>><<Use>>把技能指定給資源從資源中清除技能<<Extend>><<Extend>>資源管理UseCase圖

UseCase圖可以自頂而下不斷精化,抽象出不同層次的UseCase圖。系統(tǒng)管理員項目管理員資源管理員資源管理項目管理系統(tǒng)管理備份系統(tǒng)PRMS高層UseCase圖注:這里的“技能”是指人力資源。例1項目與資源管理系統(tǒng)(PRMS)項目管理員添加項目刪除項目更新項目添加活動刪除活動更新活動查找項目<<Use>>添加任務(wù)<<Use>>分配資源給任務(wù)取消對任務(wù)的資源分配<<Extend>><<Extend>>刪除任務(wù)更新任務(wù)<<Extend>><<Extend>><<Extend>><<Extend>><<Extend>><<Extend>>項目管理UseCase圖系統(tǒng)管理UseCase圖系統(tǒng)管理員添加技能存儲數(shù)據(jù)啟動系統(tǒng)關(guān)閉系統(tǒng)查找技能<<Use>><<Use>><<Use>>備份資源數(shù)據(jù)備份項目數(shù)據(jù)<<Extend>><<Extend>><<Use>>備份數(shù)據(jù)備份系統(tǒng)

任何建模語言都以靜態(tài)建模機制為基礎(chǔ),標準建模語言UML也不例外。所謂靜態(tài)建模是指對象之間通過屬性互相聯(lián)系,而這些關(guān)系不隨時間而轉(zhuǎn)移。類和對象的建模,是UML建模的基礎(chǔ)。我們認為,熟練掌握基本概念、區(qū)分不同抽象層次以及在實踐中靈活運用,是三條最值得注意的建?;驹瓌t。

UML的靜態(tài)建模機制包括:

用例圖(Usecasediagram)

類圖(Classdiagram)

對象圖(Objectdiagram)

包圖(Packagediagram)

構(gòu)件圖(Componentdiagram)

配置圖(Deploymentdiagram)9.4靜態(tài)建模9.4.1對象類與對象

UML中的對象類圖(ClassDiagram)與對象圖(ObjectDiagram)表達了對象模型的靜態(tài)結(jié)構(gòu),能夠有效地建立專業(yè)領(lǐng)域的計算機系統(tǒng)對象模型。類圖(Classdiagram)由系統(tǒng)中使用的類以及它們之間的關(guān)系組成,分為長式和短式。類及類型名均用英文大寫字母開頭,屬性及操作名為小寫字母開頭。常見類型有:Char,Boolean,Double,Float,Integer,Object,Short,String等。類圖是構(gòu)建其它圖的基礎(chǔ)。對象是對象類的實例(instance),用對象圖來描述。對象圖亦分長式和短式。屬性:類型類名操作類名對象名:類名屬性操作對象名圖6.24類與對象的描述(1)屬性(attribute)

屬性用來描述類的特征,表示需要處理的數(shù)據(jù)。

屬性定義:

visibilityattribute-name:type=initial-value{property-string}

其中:可見性(visibility)表示該屬性對類外的元素是否可訪問。分為:

public(+)公有的,即模型中的任何類都可以訪問該屬性。

private(-)私有的,表示不能被別的類訪問。

protected(#)受保護的,表示該屬性只能被該類及其子類訪問。如果可見性未申明,表示其可見性不確定。(2)操作對數(shù)據(jù)的具體處理方法的描述則放在操作部分,操作說明了該類能做些什么工作。操作通常稱為函數(shù),它是類的一個組成部分,只能作用于該類的對象上。

操作定義:

visibilityoperating-name(parameter-list):return-type{property-string}

可見性操作名(參數(shù)表);返回類型{約束特性}

其中:可見性同上。參數(shù)表:參數(shù)名:類型,…

Parameter-name:type=default-value

返回類型:操作返回的結(jié)果類型。類圖的描述二、類的識別是面向?qū)ο蠓椒ǖ囊粋€難點,但又是建模的關(guān)鍵。常用的方法有:

1.名詞識別法

2.系統(tǒng)實體識別法

3.從用例中識別類

4.利用分解與抽象技術(shù)關(guān)鍵是要定義類的“屬性”及“操作”。1.名詞識別法

識別問題域中的實體,實體的描述通常用名詞、名詞短語、名詞性代詞的形式出現(xiàn)。用指定語言對系統(tǒng)進行描述;從系統(tǒng)描述中標識名詞、名詞短語、名詞性代詞;識別確定(取、舍)類。描述過程應(yīng)與領(lǐng)域?qū)<夜餐献魍瓿?,并遵循問題域中的概念和命名。1.名詞識別法

識別問題域中的實體,實體的描述通常用名詞、名詞短語、名詞性代詞的形式出現(xiàn)。用指定語言對系統(tǒng)進行描述;從系統(tǒng)描述中標識名詞、名詞短語、名詞性代詞;識別確定(取、舍)類。

為了發(fā)現(xiàn)對象和類,開發(fā)人員要在系統(tǒng)需求和系統(tǒng)分析的文檔中查找名詞和名詞短語,包括:可感知的事物、角色、事件、互相作用、人員、場所、組織、設(shè)備和地點等。

識別問題域中的實體,實體的描述通常用名詞、名詞短語、名詞性代詞的形式出現(xiàn)。用指定語言對系統(tǒng)進行描述;從系統(tǒng)描述中標識名詞、名詞短語、名詞性代詞;識別確定(取、舍)類。1.名詞識別法根據(jù)下述原則進一步確定類:①去掉冗余類:如兩個類表述同一信息,應(yīng)保留最具有描述能力的類。②去掉不相干的類:刪除與問題無關(guān)或關(guān)系不大的類。③刪除模糊的類或性質(zhì)獨立性不強的類:有些初始類邊界定義不確切,或范圍太廣,應(yīng)該刪除。⑤所描述的操作不適宜作為對象類,并被其自身所操縱,所描述的只是實現(xiàn)過程中的暫時的對象,應(yīng)刪去。2.系統(tǒng)實體識別法

不關(guān)心系統(tǒng)的運作流程及實體之間的通信狀態(tài),而只考慮系統(tǒng)中的人員、組織、地點、表格、報告等實體,經(jīng)過分析將他們識別為類(或?qū)ο螅?。被標識的實體有:系統(tǒng)需要存儲、分析、處理的信息實體;系統(tǒng)內(nèi)部需要處理的設(shè)備;與系統(tǒng)交互的外部系統(tǒng);系統(tǒng)相關(guān)人員;系統(tǒng)的組織實體。例1有一個購物超市,顧客可在貨架上自由挑選商品,由收款機收款,收款機讀取商品上的條型碼標簽,并計算商品價格。收款機應(yīng)保留所有交易的記錄,以備帳務(wù)復(fù)查及匯總使用。通過分析問題的陳述,確定以下幾類實體:⑴信息實體:交易記錄、商品、稅務(wù)信息、銷售記錄、貨存記錄。⑵設(shè)備:收款機、條型碼掃描器。⑶交互系統(tǒng):信用卡付款系統(tǒng)。⑷人員職責:收款員、顧客、會計、經(jīng)理。⑸系統(tǒng)的組織實體:本例不考慮。以上列出的實體,都可以直接識別為類。3.從用例中識別類

根據(jù)用例的描述來識別類;如用例的描述中出現(xiàn)哪些實體?用例執(zhí)行過程中產(chǎn)生并存儲哪些信息?與用例關(guān)聯(lián)的角色向用例輸入什么信息?用例又向該角色輸出哪些信息?在確定類時,常使用兩類技術(shù):

⑴分解技術(shù)將整體類和組合類分解??煽刂茊蝹€類的規(guī)模。

⑵抽象技術(shù)根據(jù)一些類的相似性建立抽象類,并建立抽象類與這些類之間的繼承關(guān)系。抽象類實現(xiàn)了系統(tǒng)內(nèi)部的重用,很好地控制了復(fù)雜性,并為所有子類定義了一個公共的界面,使設(shè)計局部化,提高系統(tǒng)的可修改性和可維護性。

UML中類的關(guān)系有關(guān)聯(lián)(association),聚集(aggregation),泛化(generalization),依賴(depending)和細化(refinement)。一、關(guān)聯(lián)

關(guān)聯(lián)是類之間的連結(jié),分為:1.常規(guī)關(guān)聯(lián)2.多元關(guān)聯(lián)3.有序關(guān)聯(lián)4.受限關(guān)聯(lián)5.或關(guān)聯(lián)6.關(guān)聯(lián)類公司員工0..*顧傭0..*工作于管理

1..*工人老板0..1常規(guī)關(guān)聯(lián)

或關(guān)聯(lián)用戶工作站

授權(quán)**授權(quán)優(yōu)先級特權(quán)開始一個時間片關(guān)聯(lián)類9.4.2UML中類之間的關(guān)系保險公司保險合同人公司***{or}7、其它關(guān)聯(lián)

遞歸關(guān)聯(lián)(Recursiveassociation)

即一個類到自身的關(guān)聯(lián)。節(jié)點連接**遞歸關(guān)聯(lián)人治療病人醫(yī)生帶有職責的遞歸關(guān)聯(lián)二、聚集(aggregation)

聚集是一種特殊的關(guān)聯(lián),它指出類間的“整體-部分”關(guān)系。1、共享聚集(sharedaggregation)

其“部分”對象可以是任意“整體”對象的一部分。當“整體”端的重數(shù)不是1時,稱聚集是共享的。整體類部分類2、組合聚集(compositionaggregation)

其“整體”(重數(shù)為0、1)擁有它的“部分”。部分僅屬于同一對象,整體與部分同時存在。整體類部分類窗口工具框顯示區(qū)標題共享聚集窗口標題工具框顯示區(qū)組合聚集項目人員**三、泛化泛化指出類之間的“一般與特殊關(guān)系”,即繼承關(guān)系。父類與子類之間構(gòu)成類的分層結(jié)構(gòu)。一般類特殊人員教師學生抽象類

指沒有實例的類,定義一些抽象的操作,即不提供實現(xiàn)方法的操作,只提供操作的特征。并附以{abstract}。交疊泛化在繼承樹中,若存在某種具有公共父類的多重繼承,稱為是交疊(overlapping)的。否則是不交的(disjoint)。完全泛化一般類特化出它所有的子類,稱為完全泛化,記為{complete}。

不完全泛化即未特化出它所有的子類,稱為是不完全泛化

的,表示為{incomplete}.三、泛化{complete}人女人男人性別完全泛化交通工具drive()汽車drive()輪船drive()drive()啟動輪子轉(zhuǎn)動drive()啟動螺旋漿Person駕駛drive()是抽象操作泛化中的多態(tài)性及帶識別名稱的泛化{propulsion}{propulsion}{overlapping}交通工具重疊泛化汽車船水陸兩棲車繼承性的實例繼承樹圖形{abstract}顏色中心位置筆的粗細移動()旋轉(zhuǎn)()顯示(){abstract}2維{abstract}定位填充類型縮放填充多邊形邊數(shù)頂點數(shù)顯示園直徑顯示旋轉(zhuǎn)線端點顯示0維{abstract}點顯示樣條控制點顯示弧半徑起始角弧度角顯示1維{abstract}定位縮放維數(shù)OrderLine

Quantity:Integer

isSatisfied1*1*1*Customer

nameaddress

CreditRating()Order

dataReceived

isPrepaidnumber:String

dispatch()close()PersonalCustomercreditCardCorporateCustomer

contactName

creditRating

creditLimit

remind()

billForMonth()

EmployeeProduct0..1+LineItem具有泛化關(guān)系的類圖9.4.3包圖2.什么是UML包?

●是將許多類集合成一個更高層次的單位,形成一個高內(nèi)聚、低耦合的類的集合。

●是一種分組機制,把各種各樣的模型元素通過內(nèi)在的語義連接為一個整體。

●構(gòu)成包的模型元素稱為包的內(nèi)容,包通常用于對模型的組織管理,因此有時又將包稱為子系統(tǒng)(subsystem)。

●包與包之間不能共用一個相同的模型元素,包的實例沒有任何語義(含義)。僅在模型執(zhí)行期間包才有意義。

1.為什么要引入包?

引入包(Package)是為了降低系統(tǒng)的復(fù)雜性。9.5 動態(tài)建模9.5動態(tài)模型動態(tài)模型主要描述系統(tǒng)的動態(tài)行為和控制結(jié)構(gòu)。動態(tài)行為包括系統(tǒng)中對象生存期內(nèi)可能的狀態(tài)及事件發(fā)生時狀態(tài)的轉(zhuǎn)移,對象間動態(tài)合作關(guān)系,對象之間的交互過程以及交互順序,描述了為滿足用例要求所進行的活動及活動間的約束關(guān)系。在動態(tài)模型中,對象間的交互是通過對象間消息的傳遞來完成的。在其生命周期中根據(jù)通信的結(jié)果不斷改變自身的狀態(tài)。動態(tài)模型狀態(tài)圖(statediagram):描述某個對象,子系統(tǒng),系統(tǒng)的生命周期。

活動圖(activitydiagram)

:描述操作實現(xiàn)中完成的工作以及用例實例或?qū)ο笾械幕顒?,活動圖是狀態(tài)圖的一個變種。順序圖(sequencediagram)

:是一種交互圖,描述對象之間的動態(tài)合作關(guān)系以及合作過程中的行為次序,常用來描述一個用例的行為。合作圖(collaborationdiagram)

:用于描述相互合作的對象間的交互關(guān)系,它描述的交互關(guān)系是對象間的消息連接關(guān)系。9.5動態(tài)模型包括4類圖:狀態(tài)圖、活動圖、順序圖、合作圖。UML中的消息一、簡單消息(simple)

表示控制流,描述控制如何從一個對象傳遞到另一個對象,但不描述通信的細節(jié)。二、同步消息(synchronous)

是一種嵌套的控制流,用操作調(diào)用實現(xiàn)。操作的執(zhí)行者要到消息相應(yīng)操作執(zhí)行完并回送一個簡單消息后,再繼續(xù)執(zhí)行。三、異步消息(asynchronous)

是一種異步的控制流,消息的發(fā)送者在消息發(fā)送后就繼續(xù)執(zhí)行,不等待消息的處理。狀態(tài)圖(StateDiagram)用來描述一個特定對象的所有可能的狀態(tài)及其引起狀態(tài)轉(zhuǎn)移的事件。一個狀態(tài)圖包括一系列的狀態(tài)以及狀態(tài)之間的轉(zhuǎn)移。狀態(tài)所有對象都具有狀態(tài),狀態(tài)是對象執(zhí)行了一系列活動的結(jié)果。當某個事件發(fā)生后,對象的狀態(tài)將發(fā)生變化。狀態(tài)圖中定義的狀態(tài)有:9.5.1狀態(tài)圖初態(tài)—狀態(tài)圖的起始點,一個狀態(tài)圖只能有一個初態(tài)。終態(tài)—是狀態(tài)圖的終點。而終態(tài)則可以有多個。中間狀態(tài)—包括三個區(qū)域:名字域、狀態(tài)變量與活動域。復(fù)合狀態(tài)—可以進一步細化的狀態(tài)稱作復(fù)合狀態(tài)。中間態(tài)初態(tài)終態(tài)狀態(tài)名狀態(tài)變量活動

響應(yīng)事件的內(nèi)部動作或活動的列表,定義為:事件名(參數(shù)表[條件])/動作表達式狀態(tài)變量是狀態(tài)圖所顯示的類的屬性?;顒恿谐隽嗽谠摖顟B(tài)時要執(zhí)行的事件和動作。

3個標準事件:

entry事件用于指明進入該狀態(tài)時的特定動作。

exit事件用于指明退出該狀態(tài)時的特定動作。

do事件用于指明在該狀態(tài)中時執(zhí)行的動作。

無參數(shù)遷移舉例—login狀態(tài)login狀態(tài)loginlogintime=curenttimeentry/type“l(fā)ogin”do/getusenamedo/getpasswordhelp/displayhelpexit/login(use_name.password)

狀態(tài)遷移一個對象的狀態(tài)的變遷稱為狀態(tài)遷移。通常是由事件觸發(fā)的,此時應(yīng)標出觸發(fā)轉(zhuǎn)移的事件表達式。狀態(tài)圖在第一層上行向上移動到達上行空閑到達向下移動下行超時向第一層移動到達電梯狀態(tài)圖或關(guān)系的子狀態(tài)

嵌套狀態(tài)圖

狀態(tài)圖可能有嵌套的子狀態(tài)圖,且子狀態(tài)圖可以是另一個狀態(tài)圖。子狀態(tài)又可分為兩種:“與”子狀態(tài)和“或”子狀態(tài),與子狀態(tài)及或子狀態(tài)狀態(tài)圖前進后退低速高速運行向前向后行使

細化的狀態(tài)表示

UML給出了電梯細化的狀態(tài)表示。狀態(tài)名狀態(tài)變量活動細化電梯狀態(tài)圖On

firstfloorGoup(floor)Movingupdo/movingtofloorGoup(floor)Idletimer=0do/increasetimerarrivedMovingdowndo/movingtofloorGodown(floor)timer=timer-outMovingtofirstfloorarrivedarrived事件

事件是激發(fā)狀態(tài)遷移的條件或操作。在UML中,有4類事件:1.某條件變?yōu)檎?;表示狀態(tài)遷移的上的警戒條件。2.收到來自外部對象的信號(signal)表示為狀態(tài)遷移上的事件特征,也稱為消息。3.收到來自外部對象的某個操作中的一個調(diào)用,表示為狀態(tài)遷移上的事件特征,也稱為消息。4.狀態(tài)遷移上的時間表達式。狀態(tài)圖之間的消息發(fā)送狀態(tài)圖之間可以發(fā)送消息,用虛箭頭表示。消息發(fā)送狀態(tài)圖on/stopoffon/playoff()on()play()stop()off()/stop()CDplayerRemoteControloffonon()off()stop()play()stop()play()off()on()順序圖構(gòu)成:一組對象(對象名和類名)對象生命線(時間軸)對象被激發(fā)對象間的通信(消息)9.5.2順序圖順序圖(SequenceDiagram)用來描述對象之間動態(tài)的交互行為,著重體現(xiàn)對象間消息傳遞的時間順序。

一、概述對象1對象2消息1消息2當收到消息時,接收對象立即開始執(zhí)行活動,即對象被激活了,通過在對象生命線上顯示一個細長矩形框來表示激活。

二、消息控制信息{條件控制信息如:[x>0]重復(fù)控制信息如:*[I=1..n]

消息延遲:用傾斜箭頭表示。

消息串:包括消息和控制信號,控制信息位于信息串的前部。有兩種使用順序圖的方式:一般格式和實例格式。實例格式詳細描述一次可能的交互。沒有任何條件和分支或循環(huán),它僅僅顯示選定情節(jié)(場景)的交互。而一般格式則描述所有的情節(jié)。因此,包括了分支,條件和循環(huán)。

三、順序圖的形式:CustomerWin:Customer1:Chang

Customerdata)2:UpdateCustomer(CustomerData)3:順序圖:Computer:PrinterServer:Printer:QueuePrint(file)[Printerfree]Print(file)[Printerbusy]Store(file)帶分支的順序圖:C1:c:D1:D:D2:DOp()Op2()Op3()Op4()有循環(huán)標記的順序圖Sendmessageop2until…呼叫者交換接受者拿起話筒響撥號聲撥號碼路由選擇鳴響音停音響鈴聲接電話停鈴聲ABCDE{B-A<1S}{C-B<10S}通過網(wǎng)絡(luò)選擇通話路徑{E-D<5S}雙方通話打電話的順序圖創(chuàng)建對象與對象的消亡

在順序圖中,還可以描述一個對象通過發(fā)送一條消息來創(chuàng)建另一個對象。

當對象消亡(destroying)時,用符號表示。:CustomerWindowsNewCustomer(Data):CustomerCustomer(Data)DeleteCustomer()創(chuàng)建或刪除對象

活動圖(ActivityDiagram)的應(yīng)用非常廣泛,它既可用來描述操作(類的方法)的行為,也可以描述用例和對象內(nèi)部的工作過程,并可用于表示并行過程?;顒訄D是由狀態(tài)圖變化而來的,它們各自用于不同的目的?;顒訄D描述了系統(tǒng)中各種活動的執(zhí)行的順序??袒粋€方法中所要進行的各項活動的執(zhí)行流程?;顒訄D中一個活動結(jié)束后將立即進入下一個活動(在狀態(tài)圖中狀態(tài)的變遷可能需要事件的觸發(fā))。9.5.3活動圖一、概述二、活動圖的模型元素

構(gòu)成活動圖的模型元素有:活動、轉(zhuǎn)移、對象、信號、泳道等。1.活動是構(gòu)成活動圖的核心元素,是具有內(nèi)部動作的狀態(tài),由隱含的事件觸發(fā)活動的轉(zhuǎn)移。在概念層描述中,活動表示要完成的一些任務(wù);在說明層和實現(xiàn)層中,活動表示類中的方法?;顒用鸞條件1][條件2]

活動活動的描述二、活動圖的模型元素活動還有其它的圖符:初態(tài)、終態(tài)、判斷、同步。初態(tài)終態(tài)[條件1][條件2]判斷同步線活動圖的模型元素2.轉(zhuǎn)移轉(zhuǎn)移描述活動之間的關(guān)系,描述由于隱含事件引起的活動變遷,即轉(zhuǎn)移可以連接各活動。轉(zhuǎn)移用帶箭頭的直線表示,可標注執(zhí)行該轉(zhuǎn)移的條件,無標注表示順序執(zhí)行?;顒訄D的模型元素:有泳道的活動圖3.泳道

泳道進一步描述完成活動的對象,并聚合一組活動。泳道也是一種分組機制。

泳道可以直接顯示動作在哪一個對象中執(zhí)行,或顯示的是一項組織工作的哪部分?!裾埱蠓?wù)支付取貨提貨開訂單供貨顧客售貨庫房●請求服務(wù)支付取貨提貨開訂單供貨5.控制圖符活動圖中可發(fā)送和接收信號,發(fā)送符號對應(yīng)于與轉(zhuǎn)移聯(lián)系在一起的發(fā)送短句。接收符號也同轉(zhuǎn)移聯(lián)系在一起。發(fā)送信號接收信號4.對象流

活動圖中可以出現(xiàn)對象,對象作為活動的輸入/輸出,用虛箭頭表示。測量測量值顯示控制圖符對象流開機器開動調(diào)制咖啡信號燈滅倒咖啡咖啡壺控制圖符舉例合作圖(CollaborationDiagram),也稱為協(xié)作圖,用于描述相互合作的對象間的交互關(guān)系和鏈接(Link)關(guān)系。雖然順序圖和合作圖都用來描述對象間的交互關(guān)系,但側(cè)重點不一樣。順序圖著重體現(xiàn)交互的時間順序,合作圖則著重體現(xiàn)交互對象間的靜態(tài)鏈接關(guān)系。9.5.4合作圖一、合作圖中的模型元素合作圖中對象的外觀與順序圖中的一樣。如果一個對象在消息的交互中被創(chuàng)建,則可在對象名稱之后標以{new}。類似地,如果一個對象在交互期間被刪除,則可在對象名稱之后標以{destroy}。1.對象對象名{new}對象名{destroy}2.鏈接(Link)

鏈接用于表示對象間的各種關(guān)系,包括組成關(guān)系的鏈接(CompositionLink)、聚集關(guān)系的鏈接(AggregationLink)、限定關(guān)系的鏈接(QualifiedLink)以及導(dǎo)航鏈接(NavigationLink)。各種鏈接關(guān)系與類圖中的定義相同,在鏈接的端點位置可以顯示對象的角色名和模板信息。對象A對象B對象C對象D對象G對象H對象E對象F限定詞各種關(guān)系的鏈接

對于鏈接還可以加上“角色”與“約束”,在鏈角色上附加的約束有g(shù)lobal(全局),local(局部),parameter(參數(shù)),self(自身)。3.消息在對象之間的靜態(tài)鏈接關(guān)系上可標注消息,消息類型有簡單消息,同步消息和異步消息三種。用標號表示消息執(zhí)行的順序。消息定義的格式如下:消息類型標號控制信息:返回值:=消息名參數(shù)表控制信息{條件控制信息如:[x>y]重復(fù)控制信息如:*[I=1..n]

標號有3種:順序執(zhí)行:按整數(shù)大小執(zhí)行。1,2…嵌套執(zhí)行:標號中帶小數(shù)點。1.1,1.2,1.3,…

并行執(zhí)行:標號中帶小寫字母。1.1.1a,1.1.1b,…

在控制器控制下進行布線,找出左端點r0和右端點r1,創(chuàng)建對象“直線”,并在窗口顯示出來。

1.1*[i:=1..n]:drawsegment(i):控制器:窗口:直線{new}:布線i-1i左:端點右:端點<<參數(shù)>>窗口<<局部>>直線內(nèi)容{new}窗口<<自授>>1.1.2Create(r0,r1)1.1.3display(window)1.1.1b:r1:=position()1.1.1a:r0:=position()

1:displaypositions(window)1.1.3.1add(self)Redisplay()電路設(shè)計的合作圖布線二、合作圖舉例下圖為一銷售結(jié)果統(tǒng)計的合作圖。統(tǒng)計銷售結(jié)果的合作圖:SalesStatistics

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論