版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
UML系統(tǒng)分析與設(shè)計(jì)班級(jí)A:B150411-12課堂授課:第1-9、11-15周周二第8-9節(jié),教4-204第2、4、8、10、12、14周四第6-7節(jié),教4-204課程實(shí)驗(yàn):第7、9、11、13周周四第8-9節(jié)
軟信實(shí)驗(yàn)室(計(jì)算機(jī)學(xué)科樓)課程考試考核方式和成績(jī)?cè)u(píng)定平時(shí)成績(jī):共占總評(píng)的30%。根據(jù)出勤和上課情況、作業(yè)、實(shí)驗(yàn)等方面綜合打分。期末考試:占總評(píng)的70%。筆試、閉卷、中文。課程總成績(jī)=平時(shí)成績(jī)+期末考試成績(jī)??荚嚢才糯ㄕ?qǐng)關(guān)注教務(wù)處通知
考試:題型與分值客觀題:選擇題(10小題,每題2分):20分填空題(5小題,每題2分):10分判斷題(5小題,每題2分):10分名詞解釋題(2小題,每題5分):10分簡(jiǎn)答題(3小題,每題6分):18分解答題(2小題,每題10分):20分主觀題綜合題:12分考試:范圍選擇題、填空題、判斷題見(jiàn)精簡(jiǎn)PPT名詞解釋題(課本附錄A等)構(gòu)件圖關(guān)聯(lián)類(lèi)構(gòu)造型限定符組合狀態(tài)重?cái)?shù)考試:范圍簡(jiǎn)答題見(jiàn)作業(yè)題型解答題見(jiàn)作業(yè)題型綜合題類(lèi)似課程實(shí)驗(yàn)UML系統(tǒng)分析與設(shè)計(jì)(精簡(jiǎn))班級(jí)A:B150411-12等第1講:統(tǒng)一建模語(yǔ)言概述1.1軟件建模為什么軟件建模?模型可以促進(jìn)項(xiàng)目有關(guān)人員對(duì)系統(tǒng)的理解和交流模型有助于挑選出代價(jià)較小的解決方案模型可以縮短系統(tǒng)的開(kāi)發(fā)周期怎樣軟件建模?1.抽象出系統(tǒng)的不同視圖2.用精確的表示法來(lái)建立模型3.在模型轉(zhuǎn)換為實(shí)現(xiàn)的過(guò)程中逐漸添加進(jìn)相關(guān)細(xì)節(jié)成功建模的三要素表示法工具過(guò)程第1講:統(tǒng)一建模語(yǔ)言概述1.1軟件建模分析與設(shè)計(jì)模型描述現(xiàn)實(shí)世界應(yīng)用的結(jié)構(gòu)(分析階段)描述被提議軟件系統(tǒng)的結(jié)構(gòu)(設(shè)計(jì)階段)面向?qū)ο蠓椒ㄔ诜治雠c設(shè)計(jì)階段使用同樣的標(biāo)記法結(jié)構(gòu)化方法使用不同的分析與設(shè)計(jì)標(biāo)記法應(yīng)用系統(tǒng)UML主要構(gòu)成視圖(views)一個(gè)系統(tǒng)應(yīng)從不同的角度進(jìn)行描述,從一個(gè)角度觀察到的系統(tǒng)稱(chēng)為一個(gè)視圖(view)。視圖由多個(gè)圖(Diagrams)構(gòu)成,不是一個(gè)圖表(Graph),而是在某一個(gè)抽象層上,對(duì)系統(tǒng)的抽象表示。要為系統(tǒng)建立一個(gè)完整的模型圖,需定義一定數(shù)量的視圖,每個(gè)視圖表示系統(tǒng)的一個(gè)特殊的方面。視圖把建模語(yǔ)言和系統(tǒng)開(kāi)發(fā)時(shí)選擇的方法或過(guò)程連接起來(lái)。第1講:統(tǒng)一建模語(yǔ)言概述1.3
UML概念模型UML主要構(gòu)成視圖(views)第1講:統(tǒng)一建模語(yǔ)言概述1.3
UML概念模型設(shè)計(jì)視圖過(guò)程視圖實(shí)現(xiàn)視圖部署視圖用例視圖Use
caseView描述系統(tǒng)的外部特性、系統(tǒng)功能等。UML主要構(gòu)成視圖(views)第1講:統(tǒng)一建模語(yǔ)言概述1.3
UML概念模型設(shè)計(jì)視圖過(guò)程視圖實(shí)現(xiàn)視圖部署視圖用例視圖DesignView
描述系統(tǒng)設(shè)計(jì)特征,包括結(jié)構(gòu)模型視圖和行為模型視圖,前者描述系統(tǒng)的靜態(tài)結(jié)構(gòu)(類(lèi)圖、對(duì)象圖),后者描述系統(tǒng)的動(dòng)態(tài)行為(交互圖、狀態(tài)圖、活動(dòng)圖)。UML主要構(gòu)成視圖(views)第1講:統(tǒng)一建模語(yǔ)言概述1.3
UML概念模型設(shè)計(jì)視圖過(guò)程視圖實(shí)現(xiàn)視圖部署視圖用例視圖ProcessView表示系統(tǒng)內(nèi)部的控制機(jī)制。常用類(lèi)圖描述過(guò)程結(jié)構(gòu),用交互圖描述過(guò)程行為。UML主要構(gòu)成視圖(views)第1講:統(tǒng)一建模語(yǔ)言概述1.3
UML概念模型設(shè)計(jì)視圖過(guò)程視圖實(shí)現(xiàn)視圖部署視圖用例視圖DeploymentView配置視圖描述系統(tǒng)的物理配置特征。用配置圖表示。UML主要構(gòu)成視圖(views)第1講:統(tǒng)一建模語(yǔ)言概述1.3
UML概念模型設(shè)計(jì)視圖過(guò)程視圖實(shí)現(xiàn)視圖部署視圖用例視圖ImplementationView表示系統(tǒng)的實(shí)現(xiàn)特征,常用構(gòu)件圖表示。UML主要構(gòu)成模型元素(Modelelements)代表面向?qū)ο笾械念?lèi),對(duì)象,關(guān)系和消息等概念構(gòu)成圖的最基本的常用的元素一個(gè)模型元素可以用于多個(gè)不同的圖中第1講:統(tǒng)一建模語(yǔ)言概述1.3
UML概念模型第2講:軟件開(kāi)發(fā)過(guò)程2.1面向?qū)ο蟮能浖_(kāi)發(fā)面向?qū)ο蟮能浖治霁@取用戶(hù)基本需求標(biāo)識(shí)類(lèi)和對(duì)象定義類(lèi)的結(jié)構(gòu)和層次表示類(lèi)(對(duì)象)間的關(guān)系為對(duì)象行為建模第2講:軟件開(kāi)發(fā)過(guò)程2.2
Rational統(tǒng)一過(guò)程RUP(RationalUnifiedProcess)二維開(kāi)發(fā)模型在RUP中,軟件開(kāi)發(fā)生命周期根據(jù)時(shí)間和RUP的核心工作流劃分為二維空間。第2講:軟件開(kāi)發(fā)過(guò)程2.2
Rational統(tǒng)一過(guò)程RUP(RationalUnifiedProcess)二維開(kāi)發(fā)模型在RUP中,工作流橫軸表示項(xiàng)目的時(shí)間維,是過(guò)程展開(kāi)的生命周期特征,體現(xiàn)開(kāi)發(fā)過(guò)程的動(dòng)態(tài)結(jié)構(gòu)。第2講:軟件開(kāi)發(fā)過(guò)程2.2
Rational統(tǒng)一過(guò)程RUP(RationalUnifiedProcess)9個(gè)核心工作流,分為6個(gè)核心過(guò)程工作流(CoreProcessWorkflows)和3個(gè)核心支持工作流(CoreSupportingWorkflows)。第2講:軟件開(kāi)發(fā)過(guò)程2.2
Rational統(tǒng)一過(guò)程RUP(RationalUnifiedProcess)四個(gè)階段:軟件產(chǎn)品生命周期被分成單獨(dú)的開(kāi)發(fā)周期:初始(先啟)、細(xì)化(精化)、構(gòu)造、發(fā)布(產(chǎn)品化)第2講:軟件開(kāi)發(fā)過(guò)程2.2
Rational統(tǒng)一過(guò)程RUP(RationalUnifiedProcess)四個(gè)階段初始(先啟):定義整個(gè)項(xiàng)目的范圍細(xì)化(精化):制定項(xiàng)目計(jì)劃、描述功能、建立架構(gòu)框架構(gòu)造(構(gòu)建):構(gòu)造軟件產(chǎn)品發(fā)布(產(chǎn)品化):將軟件產(chǎn)品移交到最終用戶(hù)手中先啟精化構(gòu)建產(chǎn)品化時(shí)間第2講:軟件開(kāi)發(fā)過(guò)程2.3
敏捷開(kāi)發(fā)敏捷宣言人和交互重于過(guò)程和工具可以工作的軟件重于求全責(zé)備的文檔客戶(hù)合作重于合同談判隨時(shí)應(yīng)對(duì)變化重于循規(guī)蹈矩。團(tuán)隊(duì)方法論工具第3講:用例圖3.0用例建模用例圖
用例圖是從用戶(hù)的角度來(lái)描述系統(tǒng)所實(shí)現(xiàn)的功能,它標(biāo)明了用例的參與者,同時(shí)確定了參與者和用例之間的關(guān)聯(lián)關(guān)系。在軟件的需求分析階段,往往采用用例圖來(lái)建立系統(tǒng)需求模型。第3講:用例圖3.0用例建模用例圖三種主要建模元素用例(UseCase)參與者(Actor)依賴(lài)、類(lèi)屬和關(guān)聯(lián)關(guān)系用例圖可選元素注釋和約束包系統(tǒng)邊界框第3講:用例圖3.0用例建模用例圖元素之間的關(guān)系(relationship)關(guān)聯(lián)(association)包含(include)擴(kuò)展(extend)泛化(generalization)第3講:用例圖3.1參與者具有某一種特定功能的角色,參與者是虛擬的概念,它可以是人,也可以是外部系統(tǒng)或設(shè)備等。參與用例的執(zhí)行過(guò)程通過(guò)向系統(tǒng)輸入或請(qǐng)求系統(tǒng)輸入某些事件來(lái)觸發(fā)系統(tǒng)的執(zhí)行由參與用例時(shí)所擔(dān)當(dāng)?shù)慕巧珌?lái)表示每個(gè)參與者可以參與一個(gè)或多個(gè)用例參與者不是系統(tǒng)的一部分,它們處于系統(tǒng)的外部。
第3講:用例圖3.1參與者參與者間的關(guān)系在用例圖中,使用泛化關(guān)系來(lái)描述多個(gè)參與者之間的公共行為。參與者間的泛化關(guān)系第3講:用例圖3.2用例對(duì)系統(tǒng)、子系統(tǒng)或類(lèi)與參與者交互動(dòng)作序列的說(shuō)明用例的執(zhí)行給參與者帶來(lái)可見(jiàn)的價(jià)值是對(duì)一組場(chǎng)景(腳本,scenarios)共同行為特征的抽象場(chǎng)景是用例的一次完整、具體的執(zhí)行過(guò)程;是在系統(tǒng)中按照某個(gè)順序執(zhí)行一系列相關(guān)動(dòng)作,實(shí)現(xiàn)某種功能的操作集合多個(gè)用例組成系統(tǒng),參與者以某種場(chǎng)景與系統(tǒng)交互,請(qǐng)求系統(tǒng)執(zhí)行用例,以獲得可見(jiàn)的價(jià)值用例與場(chǎng)景的關(guān)系,如同類(lèi)與對(duì)象的關(guān)系用例表示符號(hào):第3講:用例圖3.2用例:事件流事件流場(chǎng)景中系統(tǒng)行為的一個(gè)特定動(dòng)作序列描述參與者執(zhí)行用例時(shí),發(fā)生的所有可能交互腳本與用例的關(guān)系就象實(shí)例與類(lèi)的關(guān)系,腳本是用例的一個(gè)實(shí)例。對(duì)一個(gè)用例的完整說(shuō)明,包括:基本事件流(basiccourseofevents):描述交互時(shí)的正常場(chǎng)景擴(kuò)展事件流,即可選的或例外的事件流(alternativeandexceptionalcoursesofevents):正常場(chǎng)景之外的情況第3講:用例圖3.2用例:關(guān)系1.參與者與用例之間的關(guān)聯(lián)(association)關(guān)系參與者到用例的單向箭頭只表示誰(shuí)啟動(dòng)用例,不考慮信息的雙向流動(dòng)每個(gè)用例都由角色啟動(dòng),除了包含和擴(kuò)展用例第3講:用例圖3.2用例:關(guān)系2.用例之間的泛化(generalization)關(guān)系原因:如果系統(tǒng)中的一個(gè)或幾個(gè)用例是某個(gè)一般用例的特殊化時(shí),就需要使用用例的泛化關(guān)系。圖示:用例中的泛化關(guān)系用帶空心箭頭的實(shí)線(xiàn)來(lái)表示,箭頭的方向指向父用例說(shuō)明:子用例表示父用例的特殊形式,子用例從父用例繼承行為和屬性,還可以添加自己的行為,或覆蓋、改變所繼承的行為。第3講:用例圖3.2用例:關(guān)系3.用例之間的包含(include)關(guān)系原因:(1)如果兩個(gè)以上用例有大量一致功能,可將這個(gè)功能分解到另一個(gè)用例中,其他用例可和這個(gè)用例建立包含關(guān)系。(2)一個(gè)用例功能太多,可用包含關(guān)系建模兩個(gè)小用例。第3講:用例圖3.2用例:關(guān)系3.用例之間的包含(include)關(guān)系包含關(guān)系把幾個(gè)用例的公共步驟分離成一個(gè)單獨(dú)的被包含用例。通常,把包含用例稱(chēng)為客戶(hù)用例,被包含用例稱(chēng)作提供者用例。第3講:用例圖3.2用例:關(guān)系3.用例之間的包含(include)關(guān)系圖示:帶構(gòu)造型《include》的虛線(xiàn)箭頭由基本用例指向被包含用例兩個(gè)以上的用例有共同功能,可分解到單獨(dú)用例,形成包含依賴(lài)執(zhí)行基本用例時(shí),每次都必須調(diào)用被包含用例,被包含用例也可單獨(dú)執(zhí)行。注:一個(gè)用例功能過(guò)多需分解成小用例,構(gòu)成包含依賴(lài)。第3講:用例圖3.2用例:關(guān)系4.用例之間的擴(kuò)展(extend)關(guān)系
擴(kuò)展關(guān)系是把新行為插入到已有用例的方法基礎(chǔ)用例(被擴(kuò)展用例)提供了一組擴(kuò)展點(diǎn),在這些新的擴(kuò)展點(diǎn)中可以添加新的行為擴(kuò)展用例提供了一組插入片段,這些片段能夠被插入到基礎(chǔ)用例的擴(kuò)展點(diǎn)上第3講:用例圖3.2用例:關(guān)系4.用例之間的擴(kuò)展(extend)關(guān)系基礎(chǔ)用例(被擴(kuò)展用例)不必知道擴(kuò)展用例的任何細(xì)節(jié),它僅為其提供擴(kuò)展點(diǎn)?;A(chǔ)用例即使沒(méi)有擴(kuò)展用例也是完整的,這點(diǎn)與包含關(guān)系有所不同。第3講:用例圖3.3用例圖系統(tǒng)功能模型圖,顯示系統(tǒng)與外部參與者交互作用圖中呈現(xiàn)參與者、用例,以及它們之間的關(guān)系對(duì)系統(tǒng)、子系統(tǒng)或類(lèi)的行為進(jìn)行可視化建模描述用戶(hù)的功能需求,強(qiáng)調(diào)誰(shuí)在使用系統(tǒng)、系統(tǒng)可以完成哪些功能使用戶(hù)能夠理解如何使用圖中元素使開(kāi)發(fā)者能夠?qū)崿F(xiàn)圖中元素注用例分析技術(shù)是一種公認(rèn)有效的用戶(hù)需求獲取、分析和描述技術(shù)第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)(Class)的UML圖標(biāo):屬性屬性(Attribute)是類(lèi)的命名的性質(zhì),屬性在類(lèi)圖標(biāo)的屬性分隔框中用文字串說(shuō)明。屬性有在類(lèi)中唯一的屬性名或標(biāo)識(shí)符。冒號(hào)“:”后跟屬性值的數(shù)據(jù)類(lèi)型。屬性名后跟的方括號(hào)中的內(nèi)容是可選項(xiàng)目。多重性(Multiplicity)用多值表達(dá)式表示,其值是該類(lèi)的每個(gè)實(shí)例的屬性值的個(gè)數(shù)。多值表達(dá)式的格式為:integer,integer,…或低界..高界屬性可視性屬性名[多重性]:類(lèi)型=初始值第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)(Class)的UML圖標(biāo):屬性—可視性可視性(Visibility)用以下可視性標(biāo)記表示:+(公共),#(保護(hù)),–(私用)可視性也可以用以下關(guān)鍵字表示:public(公共)、protected(保護(hù))、private(私用)若可視性標(biāo)記為“+”或“public”,則為公共屬性,可以被外部對(duì)象訪(fǎng)問(wèn)。若可視性標(biāo)記為“#”或“protected”,則為保護(hù)屬性,可以被本類(lèi)或子類(lèi)的對(duì)象訪(fǎng)問(wèn)。若可視性標(biāo)記為“–”或“private”,則為私用屬性,不可以被外部對(duì)象訪(fǎng)問(wèn),只能為本類(lèi)的對(duì)象使用??梢曅钥梢匀笔?,表示該屬性不可視。第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)的UML圖標(biāo):操作(類(lèi)的行為特征或動(dòng)態(tài)特征)一個(gè)類(lèi)可以有多個(gè)操作,也可以沒(méi)有一個(gè)操作;沒(méi)有一個(gè)操作的類(lèi)常用于表達(dá)接口或數(shù)據(jù)表。操作用文字串說(shuō)明,在類(lèi)中有唯一的操作名或標(biāo)識(shí)符。參數(shù)列表是可選項(xiàng)目,即一個(gè)操作可以有參數(shù),也可以沒(méi)有參數(shù),由逗號(hào)分隔的操作的形式參數(shù)組成,其格式為:參數(shù)名:類(lèi)型=缺省值,…返回列表由逗號(hào)分隔的操作的返回值類(lèi)型表達(dá)式組成,其格式為:返回類(lèi)型或返回名字=類(lèi)型,…操作可視性操作名(參數(shù)列表):返回列表(性質(zhì))第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)的UML圖標(biāo):總結(jié)類(lèi)(Class)具有相似結(jié)構(gòu)、行為和關(guān)系的一組對(duì)象的描述組成名稱(chēng):類(lèi)的唯一標(biāo)識(shí)屬性:描述類(lèi)的靜態(tài)特征操作:說(shuō)明類(lèi)所提供的服務(wù)職責(zé):定義類(lèi)的責(zé)任和義務(wù)約束:指明類(lèi)滿(mǎn)足的規(guī)則符號(hào)第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)的UML圖標(biāo):總結(jié)屬性[可見(jiàn)性]屬性名[:類(lèi)型][‘[’多重性[次序]‘]’][=初始值][{特性}]可見(jiàn)性:可訪(fǎng)問(wèn)性多重性:屬性值個(gè)數(shù)格式次序:屬性值順序特性:屬性約束操作[可見(jiàn)性]操作名[(參數(shù)列表)][:返回類(lèi)型][{特性}]第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)的UML圖標(biāo):接口類(lèi)、抽象類(lèi)、模板類(lèi)接口:一組操作的集合,只有操作的聲明而沒(méi)有實(shí)現(xiàn)標(biāo)準(zhǔn)圖形、變體圖形,沒(méi)有屬性不要求實(shí)現(xiàn)類(lèi)和接口類(lèi)概念本質(zhì)上是一致的,僅是實(shí)現(xiàn)了接口類(lèi)定義者的契約抽象類(lèi):不能被實(shí)例化的類(lèi),一般至少包含一個(gè)抽象操作類(lèi)名、抽象操作名均為斜體模版類(lèi):一種參數(shù)化的類(lèi),在編譯時(shí)把模版參數(shù)綁定到不同的數(shù)據(jù)類(lèi)型,從而產(chǎn)生不同的類(lèi);模版化的類(lèi)具有相同行為,但數(shù)據(jù)類(lèi)型不同。(標(biāo)準(zhǔn)圖形)(變體圖形)接口抽象類(lèi)模版參數(shù)模版類(lèi)第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)的UML圖標(biāo):分析類(lèi)邊界類(lèi)(boundary)邊界類(lèi)處理系統(tǒng)環(huán)境與系統(tǒng)內(nèi)部之間的通信,邊界類(lèi)為用戶(hù)或另一個(gè)系統(tǒng)(即參與者)提供了接口,例如窗體、對(duì)話(huà)框、報(bào)表、與外部設(shè)備或系統(tǒng)交互的類(lèi)等邊界類(lèi)可以通過(guò)用例確定,因?yàn)閰⑴c者必須通過(guò)邊界類(lèi)參與用例邊界類(lèi)的UML符號(hào)表示:第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)的UML圖標(biāo):分析類(lèi)實(shí)體類(lèi)(entity)實(shí)體類(lèi)是模擬必須被存儲(chǔ)的信息和其關(guān)聯(lián)行為的類(lèi)。保存永久信息,最終可能映射數(shù)據(jù)庫(kù)中的表和字段實(shí)體類(lèi)的UML符號(hào)表示:第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象類(lèi)的UML圖標(biāo):分析類(lèi)控制類(lèi)(control)控制類(lèi)是用來(lái)為特定于一個(gè)或多個(gè)用例的控制行為建模的類(lèi)。一個(gè)用例有一個(gè)控制類(lèi),協(xié)調(diào)其他類(lèi)工作和控制總體邏輯流程例如:命令處理程序第4講:類(lèi)圖和對(duì)象圖
4.1
類(lèi)和對(duì)象對(duì)象(Object)的UML圖標(biāo)對(duì)象是唯一的,可以標(biāo)識(shí)的;每個(gè)對(duì)象都是不同的,即使它具有相同的屬性。對(duì)象的UML圖標(biāo)用實(shí)線(xiàn)矩形框表示,含有若干分隔框。對(duì)象名分隔框中包含一個(gè)對(duì)象的名字,對(duì)象名的格式為:
對(duì)象名:類(lèi)名對(duì)象名分隔框中的狀態(tài)列表,表示該對(duì)象的并發(fā)狀態(tài)。對(duì)象的屬性分隔框含有該對(duì)象的屬性值。對(duì)象圖標(biāo)不含有操作框。第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系類(lèi)之間的關(guān)系關(guān)聯(lián)(association)泛化(generalization)實(shí)現(xiàn)(realization)依賴(lài)(dependence)聚合組合第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系關(guān)聯(lián)(association)關(guān)聯(lián)用一條把類(lèi)連接在一起的實(shí)線(xiàn)表示,一個(gè)關(guān)聯(lián)至少有兩個(gè)關(guān)聯(lián)端,每個(gè)關(guān)聯(lián)端連接到一個(gè)類(lèi),關(guān)聯(lián)端是有序的。關(guān)聯(lián)線(xiàn)旁可以標(biāo)出關(guān)聯(lián)的名字,線(xiàn)旁的小實(shí)心三角箭頭表示關(guān)聯(lián)的方向,從源類(lèi)指向目標(biāo)類(lèi),箭頭起關(guān)聯(lián)的導(dǎo)航作用。
第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系關(guān)聯(lián)(association)關(guān)聯(lián)可以是單向的或雙向的,如果該關(guān)聯(lián)是雙向的,就不必標(biāo)出方向箭頭。在關(guān)聯(lián)端可有多重性標(biāo)記,規(guī)定該類(lèi)中有多少個(gè)對(duì)象參與該關(guān)聯(lián)。在關(guān)聯(lián)的類(lèi)圖標(biāo)旁可以標(biāo)出類(lèi)的角色名(Role),角色表示被關(guān)聯(lián)的類(lèi)參與關(guān)聯(lián)的特定的行為。
第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系關(guān)聯(lián)(association)帶有限定符的關(guān)聯(lián)稱(chēng)為限定關(guān)聯(lián)(QualifiedAssociation)。限定符的值確定如何劃分和標(biāo)識(shí)該關(guān)聯(lián)的目標(biāo)類(lèi)的對(duì)象。源類(lèi)的一個(gè)帶有限定符值的對(duì)象,唯一地選擇目標(biāo)類(lèi)的一個(gè)劃分。目標(biāo)類(lèi)的每一個(gè)對(duì)象只能是某一個(gè)劃分的成員。第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系關(guān)聯(lián)(association)關(guān)聯(lián)本身也有特性,通過(guò)關(guān)聯(lián)類(lèi)(AssociationClass)可以進(jìn)一步描述關(guān)聯(lián)的屬性、操作,以及其他信息。第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系關(guān)聯(lián)(association)總結(jié)雙向關(guān)聯(lián)單向關(guān)聯(lián)聚合關(guān)聯(lián)弱的整體與部分關(guān)系組合關(guān)聯(lián)強(qiáng)的整體與部分關(guān)系關(guān)聯(lián)類(lèi)自反關(guān)聯(lián)限定關(guān)聯(lián)派生關(guān)聯(lián)第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系關(guān)聯(lián)(association):聚合(Aggregation)表示事物的部分/整體關(guān)系的較弱的情況。聚合也稱(chēng)為“has-a”聯(lián)系。在關(guān)聯(lián)線(xiàn)端加一個(gè)小空心菱形表示聚合,菱形連接代表整體事物的類(lèi),稱(chēng)之為聚合類(lèi),另一個(gè)關(guān)聯(lián)端連接代表部分事物的類(lèi)。例:圓和多邊形是圖形格式的兩個(gè)聚合類(lèi)第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系關(guān)聯(lián)(association):組合(Composition)表示事物的部分/整體關(guān)系的較強(qiáng)的情況。組合也稱(chēng)為“contains-a”聯(lián)系。在關(guān)聯(lián)線(xiàn)端加一個(gè)小實(shí)心菱形表示組合,菱形連接代表整體事物的類(lèi),稱(chēng)之為組合類(lèi),另一個(gè)關(guān)聯(lián)端連接代表部分事物的類(lèi)。例:圓由點(diǎn)組成,“圓”是組合類(lèi),“點(diǎn)”是成分類(lèi);多邊形也是由點(diǎn)組成的,是一個(gè)組合類(lèi)。第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系關(guān)聯(lián)(association):關(guān)聯(lián)類(lèi)(Associationclass)既是關(guān)聯(lián)又是類(lèi),有屬于關(guān)聯(lián)類(lèi)的屬性?xún)蓚€(gè)類(lèi)之間具有多對(duì)多的關(guān)系,并且有些屬性不屬于關(guān)聯(lián)兩端任何一個(gè)類(lèi)第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系泛化(generalization)一般元素與特殊元素的關(guān)系目的子類(lèi)繼承、共享父類(lèi)的屬性和操作可以使子類(lèi)的實(shí)例用于任何父類(lèi)被 聲明使用的地方,實(shí)現(xiàn)多態(tài)繼承父類(lèi)的公共(public)和保 護(hù)(protected)特性被 子類(lèi)繼承父類(lèi)派生出的子類(lèi)表面相同,行為不同第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系泛化(generalization):多態(tài)每個(gè)子類(lèi)的實(shí)現(xiàn)方法各不相 同,但外界的調(diào)用是一樣的例如:
Shape*myShape; Line*myLine myLine=newLine; myShape=myLine;
myShape.draw();第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系實(shí)現(xiàn)(realization)一個(gè)元素完成另外一個(gè)元素的操作功能例如:接口類(lèi)及其實(shí)現(xiàn)接口沒(méi)有屬性,方法只聲明不實(shí)現(xiàn),由實(shí)現(xiàn)類(lèi)具體定義方法的實(shí)現(xiàn)部分第4講:類(lèi)圖和對(duì)象圖
4.2關(guān)系對(duì)象之間的關(guān)系鏈接(link)
意味著導(dǎo)航,代表一個(gè)對(duì)象對(duì)另一對(duì)象的引用第4講:類(lèi)圖和對(duì)象圖
4.3類(lèi)圖最廣泛的一種UML模型,描述系統(tǒng)的結(jié)構(gòu)表述類(lèi)、協(xié)作、接口及其關(guān)系類(lèi)圖元素類(lèi)、接口、協(xié)作、關(guān)系、注釋、約束等關(guān)系連接類(lèi)、協(xié)作與接口注釋對(duì)類(lèi)和接口進(jìn)行說(shuō)明約束對(duì)類(lèi)和接口進(jìn)行約束第4講:類(lèi)圖和對(duì)象圖
4.4對(duì)象圖表示對(duì)象和對(duì)象之間鏈接關(guān)系的圖,類(lèi)圖的實(shí)例表示對(duì)象和對(duì)象之間鏈接關(guān)系的圖表達(dá)了系統(tǒng)數(shù)據(jù)在給定時(shí)刻的一個(gè)“快照”,代表系統(tǒng)的一個(gè)局部狀態(tài)全部對(duì)象的鏈接圖,表達(dá)了系統(tǒng)的對(duì)象模型,對(duì)象模型是軟件開(kāi)發(fā)OO方法學(xué)的核心。第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素活動(dòng)(Activity):指示要完成某項(xiàng)工作的動(dòng)作或表示工作流的步驟現(xiàn)實(shí)世界中的一項(xiàng)工作,如寫(xiě)文章、修機(jī)器等(或者)執(zhí)行某個(gè)軟件的例行程序,如運(yùn)行類(lèi)中的操作等。活動(dòng)圖的基本要素狀態(tài)轉(zhuǎn)移、動(dòng)作流分支分叉、匯合泳道對(duì)象流...第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:狀態(tài)(State)狀態(tài)(State):在對(duì)象的生命周期中滿(mǎn)足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況使用帶圓端的方框表示動(dòng)作狀態(tài)活動(dòng)圖中最小單位的構(gòu)造塊,表示原子動(dòng)作三個(gè)特性:原子性、不可中斷性、瞬時(shí)性活動(dòng)狀態(tài)可被分解成其他子活動(dòng)或動(dòng)作狀態(tài),能夠被中斷,占有有限的時(shí)間可理解為一個(gè)組合,其控制流由其他活動(dòng)狀態(tài)或動(dòng)作狀態(tài)組成。第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:狀態(tài)(State)狀態(tài)(State):在對(duì)象的生命周期中滿(mǎn)足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況使用帶圓端的方框表示特殊狀態(tài)起始狀態(tài)(startstate):表示一個(gè)工作流程的開(kāi)始,用實(shí)心圓點(diǎn)來(lái)表示。終止?fàn)顟B(tài)(endstate):表示一個(gè)活動(dòng)圖的最后和終結(jié)狀態(tài),用實(shí)心圓點(diǎn)外加一個(gè)小圓圈來(lái)表示第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:動(dòng)作狀態(tài)(ActionState)動(dòng)作狀態(tài)(ActionState):用于為實(shí)體的原子動(dòng)作或算法的執(zhí)行步驟建立模型可以有入轉(zhuǎn)移,入轉(zhuǎn)移可以是動(dòng)作流或?qū)ο罅鳌V辽儆幸粭l出轉(zhuǎn)移,它不是基于外部事件的,而是隱含表示內(nèi)部動(dòng)作的完成。不能有入口動(dòng)作和出口動(dòng)作,也不能有內(nèi)部轉(zhuǎn)移。必須指定在單條泳道內(nèi),表明負(fù)責(zé)該泳道的對(duì)象運(yùn)行該動(dòng)作狀態(tài)中的動(dòng)作。在一張活動(dòng)圖中,一個(gè)動(dòng)作狀態(tài)允許多處出現(xiàn),實(shí)際上這表示同一個(gè)動(dòng)作的不同狀態(tài)。動(dòng)作狀態(tài)必須延遲所有的無(wú)關(guān)事件。所謂無(wú)關(guān)事件是指不出現(xiàn)在動(dòng)作狀態(tài)的出轉(zhuǎn)移中的事件。第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:轉(zhuǎn)移(transition)轉(zhuǎn)移(transition):兩個(gè)狀態(tài)間的一種關(guān)系表示對(duì)象將在當(dāng)前狀態(tài)中執(zhí)行動(dòng)作,并在某個(gè)特定事件發(fā)生或某個(gè)特定的條件滿(mǎn)足時(shí)進(jìn)入后繼狀態(tài)。用一條簡(jiǎn)單的實(shí)箭線(xiàn)表示一個(gè)轉(zhuǎn)移:第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:動(dòng)作流(ActionFlow)動(dòng)作流(ActionFlow)是一個(gè)實(shí)體的不同動(dòng)作狀態(tài)之間的轉(zhuǎn)移,說(shuō)明狀態(tài)之間的控制流。一個(gè)無(wú)條件的動(dòng)作流代表無(wú)觸發(fā)轉(zhuǎn)移或完成轉(zhuǎn)移,對(duì)它不附加監(jiān)護(hù)條件,在一個(gè)動(dòng)作狀態(tài)的動(dòng)作完成后自動(dòng)發(fā)生動(dòng)作狀態(tài)的轉(zhuǎn)移,激活下一個(gè)動(dòng)作狀態(tài)。在表示一個(gè)有條件的動(dòng)作流的實(shí)箭線(xiàn)上需要標(biāo)出“[監(jiān)護(hù)條件]/動(dòng)作”(動(dòng)作部分可以缺?。?。方括號(hào)中的保安條件是一個(gè)布爾表達(dá)式,當(dāng)其值為真時(shí),執(zhí)行斜杠“/”后面的動(dòng)作,發(fā)生動(dòng)作狀態(tài)的轉(zhuǎn)移,進(jìn)入下一個(gè)動(dòng)作狀態(tài)。第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:分支(Branch)分支(Branch):描述基于某個(gè)條件的可選擇路徑一個(gè)分支可以有一個(gè)進(jìn)入轉(zhuǎn)移和兩個(gè)或多個(gè)輸出轉(zhuǎn)移。在每條輸出轉(zhuǎn)移上都有監(jiān)護(hù)條件表達(dá)式保護(hù),當(dāng)且僅當(dāng)監(jiān)護(hù)條件表達(dá)式為真時(shí),該輸出路徑才有效。在所有輸出轉(zhuǎn)移中,其監(jiān)護(hù)條件不能重疊,而且它們應(yīng)該覆蓋所有的可能性。分支在圖形表示上用菱形表示動(dòng)作流可以有多條件的分支決策情況,分支決策可以是鏈?zhǔn)降暮头擎準(zhǔn)降牡?講:活動(dòng)圖5.1活動(dòng)圖的基本要素:分叉(fork)和匯合(join)分叉(fork)和匯合(join)在UML中使用分叉和匯合表示并行發(fā)生的事件流分叉表示把一個(gè)單獨(dú)的控制流分成兩個(gè)或多個(gè)并發(fā)的控制流。一個(gè)分叉可以有一個(gè)進(jìn)入轉(zhuǎn)移和兩個(gè)或多個(gè)輸出轉(zhuǎn)移,每一個(gè)轉(zhuǎn)移表示一個(gè)獨(dú)立的控制流。匯合表示兩個(gè)或多個(gè)并發(fā)控制流的同步發(fā)生,一個(gè)匯合可以有兩個(gè)或多個(gè)進(jìn)入轉(zhuǎn)移和一個(gè)輸出轉(zhuǎn)移。分叉和匯合應(yīng)該是平衡的分叉和匯合在圖形上都使用同步條來(lái)表示,同步條通常用一條粗的水平線(xiàn)(同步桿,Synchronizationbar)表示:第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:分叉(fork)和匯合(join)分叉(fork)和匯合(join)“分叉”同步桿有一條入轉(zhuǎn)移箭線(xiàn)和兩條或多條出轉(zhuǎn)移箭線(xiàn),每一條表示一個(gè)獨(dú)立的控制流。“分叉”表示當(dāng)入轉(zhuǎn)移被觸發(fā)時(shí),所有與出轉(zhuǎn)移對(duì)應(yīng)的活動(dòng)就并行進(jìn)行?!皡R合”同步桿有兩條或多條入轉(zhuǎn)移箭線(xiàn)和一條出轉(zhuǎn)移箭線(xiàn),每一條表示一個(gè)獨(dú)立的控制流。在“匯合”之前的所有與入轉(zhuǎn)移對(duì)應(yīng)的活動(dòng)一直是并行進(jìn)行的。在“匯合”點(diǎn)這些并發(fā)的控制流實(shí)現(xiàn)同步,即只有當(dāng)所有的入轉(zhuǎn)移全部完成其活動(dòng)后才發(fā)生一個(gè)出轉(zhuǎn)移。第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:泳道(swimlane)泳道(swimlane)將一個(gè)活動(dòng)圖中的活動(dòng)狀態(tài)進(jìn)行分組,每一組表示一個(gè)特定的類(lèi)、人或部門(mén),他們負(fù)責(zé)完成組內(nèi)的活動(dòng)。描述每個(gè)活動(dòng)是由哪個(gè)對(duì)象負(fù)責(zé)完成每個(gè)組被稱(chēng)為一個(gè)泳道,用一條垂直實(shí)線(xiàn)與鄰居分開(kāi)每個(gè)活動(dòng)都明確屬于一個(gè)泳道,不可以跨越泳道,而轉(zhuǎn)移則可以跨越泳道第5講:活動(dòng)圖5.1活動(dòng)圖的基本要素:對(duì)象流(objectstream)對(duì)象流(objectstream)包括依賴(lài)關(guān)系和對(duì)象的應(yīng)用被稱(chēng)為對(duì)象流。對(duì)象流是動(dòng)作和對(duì)象間的關(guān)聯(lián)對(duì)象流可用于對(duì)下列關(guān)系建模:動(dòng)作狀態(tài)對(duì)對(duì)象的使用動(dòng)作狀態(tài)對(duì)對(duì)象的影響在UML中,使用矩形表示對(duì)象,對(duì)象和動(dòng)作之間使用帶箭頭的虛線(xiàn)連接,帶箭頭的虛線(xiàn)表示對(duì)象流第6講:交互圖(InteractionDiagram)6.1
順序圖描述了對(duì)象之間傳送消息的時(shí)間順序,用來(lái)表示用例中的行為順序。當(dāng)執(zhí)行一個(gè)用例行為時(shí),順序圖中的每條消息對(duì)應(yīng)了一個(gè)類(lèi)操作或狀態(tài)機(jī)中引起轉(zhuǎn)換的觸發(fā)事件。序列圖包含了4個(gè)標(biāo)記符號(hào),分別是:對(duì)象類(lèi)角色(ClassRole)生命線(xiàn)(Lifeline)消息(Message)激活(Activation)第6講:交互圖(InteractionDiagram)6.1
順序圖描述了對(duì)象之間傳送消息的時(shí)間順序,用來(lái)表示用例中的行為順序。順序圖包含了4個(gè)標(biāo)記符號(hào),分別是:對(duì)象類(lèi)角色(ClassRole):矩形,符號(hào)與對(duì)象圖相同生命線(xiàn)(Lifeline):虛線(xiàn),表示對(duì)象生存期消息(Message):箭頭線(xiàn),表示對(duì)象間消息通信激活(Activation):矩形條,表示對(duì)象正在執(zhí)行一些活動(dòng)第6講:交互圖(InteractionDiagram)6.1
順序圖激活順序圖可以描述對(duì)象的激活(Activation)和去激活(Deactivation)。激活表示該對(duì)象被占用以完成某個(gè)任務(wù)去激活指的是對(duì)象處于空閑狀態(tài),在等待消息。為了表示對(duì)象是激活的,可以將對(duì)象的生命線(xiàn)拓寬成為矩形。第6講:交互圖(InteractionDiagram)6.2
協(xié)作圖(UML2中的通信圖)描述對(duì)象之間的消息交互,強(qiáng)調(diào)對(duì)象在交互中承擔(dān)角色語(yǔ)義上與順序圖是完全等價(jià)的,可以相互轉(zhuǎn)換協(xié)作圖的組成元素對(duì)象類(lèi)角色消息鏈接第6講:交互圖(InteractionDiagram)6.2
協(xié)作圖(UML2中的通信圖)作用描述、強(qiáng)調(diào)交互發(fā)生時(shí),每個(gè)對(duì)象承擔(dān)的職責(zé)顯示對(duì)象相互協(xié)作時(shí)充當(dāng)?shù)慕巧珡?qiáng)調(diào)交互的時(shí)間和序列,選擇順序圖建模強(qiáng)調(diào)交互的上下文相關(guān),選擇協(xié)作圖建模闡明對(duì)象之間交互的角色,以實(shí)現(xiàn)特定用例或用例中特定部分的行為,便于確定類(lèi)的職責(zé)和接口第7講:狀態(tài)機(jī)圖7.1狀態(tài)機(jī)狀態(tài)機(jī)被定義為一個(gè)行為狀態(tài)機(jī)表示一個(gè)模型元素在其生命期間的情況:從該模型元素的開(kāi)始狀態(tài)起,響應(yīng)事件,執(zhí)行某些動(dòng)作,引起轉(zhuǎn)移到新?tīng)顟B(tài),又在新?tīng)顟B(tài)下響應(yīng)事件,執(zhí)行動(dòng)作,引起轉(zhuǎn)移到另一個(gè)狀態(tài),如此繼續(xù),直到終結(jié)狀態(tài)。UNIX進(jìn)程的狀態(tài)和轉(zhuǎn)移狀態(tài)機(jī)概念編譯技術(shù):用有限狀態(tài)機(jī)描述詞法分析過(guò)程操作系統(tǒng):進(jìn)程調(diào)度、緩沖區(qū)調(diào)度等采用狀態(tài)機(jī)描述UML:對(duì)系統(tǒng)的動(dòng)態(tài)特征建模第7講:狀態(tài)機(jī)圖7.1狀態(tài)機(jī)狀態(tài)機(jī)組成狀態(tài)(State):一個(gè)模型元素在生存期的一種狀況,如滿(mǎn)足某些條件,進(jìn)行某些活動(dòng),或等待某些事件的出現(xiàn)等。一個(gè)狀態(tài)在一個(gè)有限的時(shí)間段內(nèi)存在。轉(zhuǎn)移(Transition):一個(gè)模型元素的不同狀態(tài)之間的聯(lián)系。在事件的觸發(fā)下,一個(gè)狀態(tài)可以轉(zhuǎn)移到另一個(gè)狀態(tài)。事件(Event):一個(gè)有意義的出現(xiàn)(Occurrence)的說(shuō)明。該出現(xiàn)在某個(gè)時(shí)間和空間點(diǎn)發(fā)生,并且立即觸發(fā)一個(gè)狀態(tài)的轉(zhuǎn)移?;顒?dòng)(Activity):在狀態(tài)機(jī)中進(jìn)行的一個(gè)非原子的執(zhí)行,它由一系列的動(dòng)作組成。動(dòng)作(Action):一個(gè)可執(zhí)行的原子計(jì)算,它導(dǎo)致?tīng)顟B(tài)的變更或返回一個(gè)值。第7講:狀態(tài)機(jī)圖7.2狀態(tài)機(jī)圖狀態(tài)機(jī)圖的圖形元素
1.狀態(tài)狀態(tài)用一個(gè)帶圓角的矩形框表示,框內(nèi)標(biāo)有狀態(tài)的名稱(chēng)和其他一些信息狀態(tài)圖標(biāo)可以進(jìn)一步劃分成3個(gè)分隔框:名稱(chēng)框、內(nèi)部轉(zhuǎn)移框和嵌套狀態(tài)機(jī)圖框在名稱(chēng)框中標(biāo)出狀態(tài)的名稱(chēng)在內(nèi)部轉(zhuǎn)移框中規(guī)定動(dòng)作或活動(dòng)簡(jiǎn)單狀態(tài):嵌套狀態(tài)機(jī)圖分隔框可缺省組合狀態(tài)(CompositeState):包含有子狀態(tài),在嵌套狀態(tài)機(jī)圖的分隔框內(nèi)放置被嵌套的子狀態(tài)機(jī)圖。狀態(tài)的圖形表示
第7講:狀態(tài)機(jī)圖7.2狀態(tài)機(jī)圖狀態(tài)機(jī)圖的圖形元素
2.轉(zhuǎn)移轉(zhuǎn)移用實(shí)箭線(xiàn)表示,箭尾連接出發(fā)狀態(tài),即源狀態(tài),箭頭連接到達(dá)狀態(tài),即目標(biāo)狀態(tài)。在箭線(xiàn)上可以標(biāo)示與該轉(zhuǎn)移有關(guān)的選項(xiàng):事件、監(jiān)護(hù)條件(GuardCondition)和動(dòng)作。當(dāng)處于源狀態(tài)的對(duì)象接收到一個(gè)事件,并且監(jiān)護(hù)條件得到滿(mǎn)足(如果有監(jiān)護(hù)條件的話(huà))時(shí),則執(zhí)行相應(yīng)的動(dòng)作,并從源狀態(tài)轉(zhuǎn)移到目標(biāo)狀態(tài)。如果在轉(zhuǎn)移箭線(xiàn)上不標(biāo)示觸發(fā)轉(zhuǎn)移的事件時(shí),則從源狀態(tài)轉(zhuǎn)移到目標(biāo)狀態(tài)是自動(dòng)進(jìn)行的。第7講:狀態(tài)機(jī)圖7.2狀態(tài)機(jī)圖狀態(tài)機(jī)圖的圖形元素3.初始狀態(tài)(InitialState)模型元素的初始狀況,代表一個(gè)狀態(tài)機(jī)圖的起始點(diǎn),是一個(gè)偽狀態(tài)(PseudoState)用一個(gè)實(shí)心的圓表示4.終結(jié)狀態(tài)(FinalState)
模型元素的最后的狀態(tài),代表一個(gè)狀態(tài)機(jī)圖的終止點(diǎn),是一個(gè)偽狀態(tài)。用一個(gè)圓中套一個(gè)小實(shí)心圓表示。第7講:狀態(tài)機(jī)圖7.2狀態(tài)機(jī)圖狀態(tài)機(jī)圖的圖形元素5.判定(Decision)在狀態(tài)機(jī)圖中的一個(gè)特定的位置,工作流(Workflow)在此按監(jiān)護(hù)條件的取值而發(fā)生分支。用空心小菱形表示。一般,判定只有一個(gè)入轉(zhuǎn)移和兩個(gè)出轉(zhuǎn)移,監(jiān)護(hù)條件為布爾表達(dá)式。根據(jù)監(jiān)護(hù)條件表達(dá)式的值為“真”或“假”,觸發(fā)不同的分支轉(zhuǎn)移。判定也可以是有一個(gè)入轉(zhuǎn)移和多個(gè)出轉(zhuǎn)移。第7講:狀態(tài)機(jī)圖7.2狀態(tài)機(jī)圖狀態(tài)機(jī)圖的圖形元素6.同步(Synchronization)同步可視化地定義了并發(fā)工作流的分叉(Fork)與匯合(Join)。分叉是一個(gè)源狀態(tài)分為兩個(gè)或兩個(gè)以上的目標(biāo)狀態(tài),匯合是兩個(gè)以上的源狀態(tài)連接為一個(gè)目標(biāo)狀態(tài)。在分叉與匯合之間的工作流是并行執(zhí)行的。同步在狀態(tài)機(jī)圖中用一條粗短實(shí)線(xiàn)表示,稱(chēng)為同步桿第7講:狀態(tài)機(jī)圖7.3狀態(tài)組合狀態(tài)一個(gè)不含內(nèi)嵌套狀態(tài)的狀態(tài),稱(chēng)為簡(jiǎn)單狀態(tài)。如果一個(gè)狀態(tài)內(nèi)嵌套了若干個(gè)狀態(tài),則稱(chēng)該狀態(tài)為超狀態(tài)(Superstate)或組合狀態(tài)(CompositeState),其中被嵌套的狀態(tài)稱(chēng)為子狀態(tài)(Substate)。子狀態(tài)本身仍然可以是一個(gè)組合狀態(tài)。超狀態(tài)中的每一個(gè)被嵌套的狀態(tài)機(jī)圖所表示的子狀態(tài)機(jī),都對(duì)應(yīng)于該超狀態(tài)內(nèi)的正在進(jìn)行的一個(gè)活動(dòng)。子狀態(tài)機(jī)圖的所在區(qū)域必有自己的初始狀態(tài)和終結(jié)狀態(tài)。對(duì)組合狀態(tài)的一個(gè)入轉(zhuǎn)移代表對(duì)其子區(qū)域內(nèi)的初始狀態(tài)的入轉(zhuǎn)移;對(duì)子區(qū)域內(nèi)的終結(jié)狀態(tài)的轉(zhuǎn)移代表包含它的組合狀態(tài)的相應(yīng)活動(dòng)的完成。注意,動(dòng)作(Action)與活動(dòng)(Activity)的含義是不同的。第7講:狀態(tài)機(jī)圖7.3狀態(tài)歷史狀態(tài)在一個(gè)組合狀態(tài)中所包含的一個(gè)由順序子狀態(tài)構(gòu)成的子狀態(tài)機(jī)中,必定有一個(gè)子初始狀態(tài)。每次進(jìn)入該組合狀態(tài),被嵌套的子狀態(tài)機(jī)從它的子初始狀態(tài)開(kāi)始運(yùn)作(除非直接轉(zhuǎn)移到特定的子狀態(tài))。有的情況下,當(dāng)離開(kāi)一個(gè)組合狀態(tài)后,又重新進(jìn)入該組合狀態(tài),但是不希望從它的子初始狀態(tài)開(kāi)始運(yùn)作,而是直接進(jìn)入到上次離開(kāi)該組合狀態(tài)時(shí)的最后一個(gè)子狀態(tài)。歷史狀態(tài)(HistoryState)代表上次離開(kāi)組合狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài)。每當(dāng)轉(zhuǎn)移到組合狀態(tài)中的歷史狀態(tài)時(shí),對(duì)象便恢復(fù)上次離開(kāi)該組合狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài),并執(zhí)行入口動(dòng)作。第7講:狀態(tài)機(jī)圖7.3狀態(tài)歷史狀態(tài)歷史狀態(tài)用一個(gè)含有字母“H”的小圓圈表示。歷史狀態(tài)只是一個(gè)偽狀態(tài)(PseudoState)的圖形標(biāo)記,只能作為一個(gè)組合狀態(tài)中的子狀態(tài),不能在頂層狀態(tài)機(jī)圖中使用。歷史狀態(tài)可以有任意個(gè)從外部狀態(tài)來(lái)的入轉(zhuǎn)移,至多有一個(gè)無(wú)標(biāo)簽的出轉(zhuǎn)移,它進(jìn)入到一個(gè)子狀態(tài)機(jī)。一個(gè)影碟機(jī)對(duì)象工作的部分狀態(tài)機(jī)圖第7講:狀態(tài)機(jī)圖7.6狀態(tài)機(jī)圖的應(yīng)用7.6.2CD播放器小結(jié)第8講:物理圖(PhysicalDiagram)8.0
導(dǎo)引UML提供了兩種物理表示圖形:構(gòu)件圖和部署圖。構(gòu)件圖表示系統(tǒng)中的不同物理構(gòu)件及其關(guān)系。表達(dá)的是系統(tǒng)代碼本身的結(jié)構(gòu)。部署圖由節(jié)點(diǎn)構(gòu)成,節(jié)點(diǎn)代表系統(tǒng)的硬件,構(gòu)件在節(jié)點(diǎn)上駐留并執(zhí)行。表示系統(tǒng)的軟件構(gòu)件與硬件之間的關(guān)系。表達(dá)的是運(yùn)行系統(tǒng)的結(jié)構(gòu)。構(gòu)件圖和部署圖用于建立系統(tǒng)的實(shí)現(xiàn)模型。第8講:物理圖(PhysicalDiagram)8.1
構(gòu)件圖(ComponentDiagram)1、構(gòu)件的定義系統(tǒng)的物理的可替換的單位,它把系統(tǒng)的實(shí)現(xiàn)打包,并提供一組接口的實(shí)現(xiàn)(Realization)。代表系統(tǒng)的一個(gè)物理實(shí)現(xiàn)塊,代表邏輯模型元素如類(lèi)、接口、協(xié)同等的物理打包。本身遵從和提供一組接口的實(shí)現(xiàn),它們代表了由駐留在構(gòu)件內(nèi)部的模型元素所實(shí)現(xiàn)的服務(wù)。用于對(duì)系統(tǒng)配置節(jié)點(diǎn)上的物理事物建立模型。構(gòu)件的類(lèi)型系統(tǒng)的配置構(gòu)件,如COM+構(gòu)件、JavaBeans等。軟件開(kāi)發(fā)過(guò)程中的產(chǎn)物,如軟件代碼(源碼、二進(jìn)制碼和可執(zhí)行碼)等。第8講:物理圖(PhysicalDiagram)8.1
構(gòu)件圖2、構(gòu)件的表示法圖標(biāo)是一個(gè)大矩形的左邊嵌二個(gè)小矩形。必須有名字在構(gòu)件名之后或之下,可以用括在花括號(hào)中的文字(即標(biāo)記值)說(shuō)明構(gòu)件的性質(zhì),如“{version=2.0}”等。第8講:物理圖(PhysicalDiagram)8.1構(gòu)件圖8、構(gòu)件的依賴(lài)關(guān)系依賴(lài)關(guān)系圖publicclassA{ ……}publicclassBextendsA{ ……}publicclassA{ publicvoidanOperation(BtheB){ ……}}第8講:物理圖(PhysicalDiagram)8.1構(gòu)件圖8、構(gòu)件的依賴(lài)關(guān)系依賴(lài)關(guān)系圖publicclassA{ privateBaLink; ……}}第8講:物理圖(PhysicalDiagram)8.1構(gòu)件圖9、構(gòu)件圖:定義構(gòu)件圖由構(gòu)件、接口和構(gòu)件之間的關(guān)系構(gòu)成,其中的構(gòu)件可以是源碼、二進(jìn)制碼或可執(zhí)行程序。表示系統(tǒng)中的不同物理部件及其關(guān)系,它表達(dá)的是系統(tǒng)代碼本身的結(jié)構(gòu)。只有型(Type)的形式,沒(méi)有實(shí)例形式。為了顯示構(gòu)件的實(shí)例需要使用部署圖。用于下列事物建立模型:系統(tǒng)的源代碼、系統(tǒng)的發(fā)布版本、物理數(shù)據(jù)庫(kù)、自適應(yīng)系統(tǒng)等。建立業(yè)務(wù)模型,此時(shí)的構(gòu)件是業(yè)務(wù)的過(guò)程和文檔。建立開(kāi)發(fā)期間的軟件產(chǎn)物的依賴(lài)關(guān)系,用于系統(tǒng)開(kāi)發(fā)的管理。第8講:物理圖(PhysicalDiagram)8.2
部署圖(DeploymentDiagram)1、節(jié)點(diǎn)的定義存在于運(yùn)行期間的系統(tǒng)的物理元素代表計(jì)算機(jī)資源,通常為處理器(Processor)或其他硬件設(shè)備,系統(tǒng)的構(gòu)件可以配置在節(jié)點(diǎn)上。圖標(biāo)為一個(gè)三維立方體圖形,如下圖所示。第8講:物理圖(PhysicalDiagram)8.2部署圖1、節(jié)點(diǎn)的定義存在于運(yùn)行期間的系統(tǒng)的物理元素節(jié)點(diǎn)必須有名字,可以是一個(gè)簡(jiǎn)單名,或用路徑名。與類(lèi)一樣,節(jié)點(diǎn)可以用標(biāo)記值說(shuō)明名字的性質(zhì)。與類(lèi)一樣,節(jié)點(diǎn)可以區(qū)分為型和實(shí)例,型代表計(jì)算資源的不同類(lèi)型,實(shí)例代表特定的具體的計(jì)算機(jī)資源。對(duì)象和構(gòu)件實(shí)例可以駐留在節(jié)點(diǎn)實(shí)例上,而且可以從一個(gè)節(jié)點(diǎn)向另一個(gè)節(jié)點(diǎn)遷移。節(jié)點(diǎn)執(zhí)行構(gòu)件,構(gòu)件是被節(jié)點(diǎn)執(zhí)行的事物。一個(gè)節(jié)點(diǎn)可以與其它的節(jié)點(diǎn)、構(gòu)件、對(duì)象有關(guān)聯(lián)。節(jié)點(diǎn)和類(lèi)、協(xié)同、構(gòu)件等模型元素一樣可以組織成包。第8講:物理圖(PhysicalDiagram)8.2部署圖2、節(jié)點(diǎn)的關(guān)系節(jié)點(diǎn)與節(jié)點(diǎn)通過(guò)物理連接(Connection)發(fā)生關(guān)系物理連接如以太網(wǎng)絡(luò)、共享總線(xiàn)等,從硬件方面保證了系統(tǒng)的節(jié)點(diǎn)協(xié)同運(yùn)行。節(jié)點(diǎn)與節(jié)點(diǎn)、節(jié)點(diǎn)與構(gòu)件之間存在著多種類(lèi)型的關(guān)系。第8講:物理圖(PhysicalDiagram)8.2部署圖2、節(jié)點(diǎn)的關(guān)系(1)通信關(guān)系(關(guān)聯(lián))通信關(guān)系是節(jié)點(diǎn)之間的一種關(guān)聯(lián),是節(jié)點(diǎn)之間的通信路徑或連接的模型。通信關(guān)系的表示法是用一條實(shí)關(guān)聯(lián)線(xiàn)連接兩個(gè)節(jié)點(diǎn)。在實(shí)關(guān)聯(lián)線(xiàn)上可以加構(gòu)造型以表達(dá)節(jié)點(diǎn)間的通信路徑或連接的性質(zhì)。通信關(guān)系表示法示例
第8講:物理圖(PhysicalDiagram)8.2部署圖2、節(jié)點(diǎn)的關(guān)系(2)成為關(guān)系成為關(guān)系是構(gòu)件與構(gòu)件、構(gòu)件與對(duì)象、對(duì)象與對(duì)象之間的依賴(lài)關(guān)系。成為關(guān)系不是節(jié)點(diǎn)之間的關(guān)系,但是它是構(gòu)件或?qū)ο笤诠?jié)點(diǎn)之間的遷移的模型。成為關(guān)系說(shuō)明源對(duì)象(或構(gòu)件)和目標(biāo)對(duì)象(或構(gòu)件)是在不同時(shí)間點(diǎn)的同一個(gè)對(duì)象(或構(gòu)件),而且它們的狀態(tài)和角色不同。成為關(guān)系可以用標(biāo)記值“{time=…}”說(shuō)明其時(shí)間性質(zhì),即構(gòu)件或?qū)ο笤谑裁磿r(shí)間發(fā)生遷移活動(dòng)。第8講:物理圖(PhysicalDiagram)8.2部署圖2、節(jié)點(diǎn)的關(guān)系(2)成為關(guān)系表示法是用一條虛箭線(xiàn)從一個(gè)節(jié)點(diǎn)中的構(gòu)件指向另一個(gè)節(jié)點(diǎn)中的構(gòu)件或從一個(gè)節(jié)點(diǎn)中的對(duì)象指向另一個(gè)節(jié)點(diǎn)中的對(duì)象,并可在虛箭線(xiàn)上加有構(gòu)造型<<becomes>>。成為關(guān)系表示法示例
第8講:物理圖(PhysicalDiagram)8.2部署圖3、部署圖的定義由節(jié)點(diǎn)與節(jié)點(diǎn)之間的關(guān)系構(gòu)成,包括構(gòu)件之間、節(jié)點(diǎn)與構(gòu)件之間、構(gòu)件與構(gòu)件之間的關(guān)系。表示分布式系統(tǒng)的軟件構(gòu)件與硬件之間的關(guān)系,它表達(dá)的是運(yùn)行系統(tǒng)的結(jié)構(gòu)。主要用于對(duì)在網(wǎng)絡(luò)環(huán)境運(yùn)行的分布式系統(tǒng)建立系統(tǒng)物理模型,或者對(duì)嵌入式系統(tǒng)建模??梢杂糜诮I(yè)務(wù)模型,此時(shí)的“運(yùn)行系統(tǒng)”就是業(yè)務(wù)的組織機(jī)構(gòu)和資源(人力、設(shè)備等)。第9講:模型管理圖9.1包:語(yǔ)義和表示包(Package)是一種對(duì)模型元素進(jìn)行成組組織的通用機(jī)制。包用于定義一個(gè)名字空間(Namespace)或容器(Container),它本身是UML的一種模型元素。對(duì)包中的元素作為一個(gè)整體對(duì)待,并且控制它們的可視性和存取。包的圖標(biāo)是一個(gè)大矩形(內(nèi)容框)的左上角帶一個(gè)小矩形(名字框)名字可是一個(gè)簡(jiǎn)單名或路徑名。在包名之后或之下,可用括在花括號(hào)中的文字(約束)說(shuō)明包的性質(zhì),如“{abstract}”、“{version}”等第9講:模型管理圖9.2包的聯(lián)系:依賴(lài)與輸入依賴(lài)包與包之間的聯(lián)系主要有兩種:依賴(lài)和泛化。依賴(lài):兩個(gè)包所含模型元素之間存在著一個(gè)或多個(gè)依賴(lài)
對(duì)于由類(lèi)組成的包,如果在兩個(gè)包的任何類(lèi)之間存在著任何一種依賴(lài),則這兩個(gè)包之間存在著依賴(lài)。包的依賴(lài)聯(lián)系同樣是用一條虛箭線(xiàn)表示,虛箭線(xiàn)從依賴(lài)包(源)指向獨(dú)立包(目標(biāo))。包的依賴(lài)聯(lián)系沒(méi)有傳遞性。第9講:模型管理圖9.2包的聯(lián)系:依賴(lài)與輸入依賴(lài)包與包之間的聯(lián)系主要有兩種:依賴(lài)和泛化。包的依賴(lài)聯(lián)系可以加上許多構(gòu)造型規(guī)定它的語(yǔ)義,其中最常見(jiàn)的一種依賴(lài)是輸入依賴(lài)。輸入依賴(lài)(ImportDependency)是包與包之間的一種存取(Access)依賴(lài)關(guān)系。輸入(Importing)是指允許一個(gè)包中的元素存取另一個(gè)包中的元素。輸入依賴(lài)是單向的,沒(méi)有傳遞性。包的公共部分,即其可視性為“公共”的模型元素,稱(chēng)為包的輸出(Export)。包的輸出只對(duì)另一個(gè)與它有輸入依賴(lài)的包才是可視的、可存取的。注意:存取依賴(lài)聯(lián)系的另一個(gè)構(gòu)造型<<Access>>,與<<Import>>的含義略有差別。第9講:模型管理圖9.2包的聯(lián)系:合并包與包之間的聯(lián)系主要有兩種:依賴(lài)和泛化。包之間的合并聯(lián)系是一種依賴(lài)關(guān)系,用一條帶有構(gòu)造型<<Merge>>的虛箭線(xiàn)表示,從接受合并包(ReceivingPackage)指向被合并包(MergedPackage)。允許被合并包的內(nèi)容與接受合并包的內(nèi)容合并:即(在概念上而非物理上)把被合并包中的全部元素合并加入到接受合并包中被合并包與接受合并包中的那些具有相同名稱(chēng)的元素則合并成一個(gè)唯一的元素,它擁有兩者的特征。當(dāng)定義在不同的包中的模型元素具有相同的名稱(chēng)并且表達(dá)相同的概念時(shí),就需要使用包合并聯(lián)系。第9講:模型管理圖9.2包的聯(lián)系:泛化包與包之間的聯(lián)系主要有兩種:依賴(lài)(尤其是輸入依賴(lài))和泛化。泛化:特殊性包必須遵循一般性包的接口一般性包可加上一個(gè)性質(zhì)說(shuō)明“{abstract}”,表明它只不過(guò)是定義了一個(gè)接口,該接口可以由多個(gè)特殊包實(shí)現(xiàn)。與類(lèi)的繼承相同,特殊包從一般包繼承其所含的公共類(lèi),并且可重載和添加自己的類(lèi)。特殊包可代替一般包,用在一般包使用的任何地方。第9講:模型管理圖9.3包圖包圖由包和包之間的聯(lián)系構(gòu)成。包圖的圖形節(jié)點(diǎn)是包,節(jié)點(diǎn)之間用?。ㄒ蕾?lài)或泛化)連接。包圖是維護(hù)和控制系統(tǒng)總體結(jié)構(gòu)的重要建模工具。包在很多方面與類(lèi)相似,但是在建立系統(tǒng)模型時(shí)特別要注意區(qū)別包與類(lèi)。類(lèi)是問(wèn)題領(lǐng)域或解決方案中的事物的抽象,包是把這些事物組織成模型的一種機(jī)制。包可以沒(méi)有標(biāo)識(shí),因?yàn)樗鼪](méi)有實(shí)例,在運(yùn)行系統(tǒng)中不可見(jiàn);類(lèi)必須有標(biāo)識(shí),它有實(shí)例,類(lèi)的實(shí)例(對(duì)象)是運(yùn)行系統(tǒng)的組成元素。一個(gè)簡(jiǎn)單的約束約束是布爾斷言(Booleanassertions)非形式寫(xiě)出的約束應(yīng)當(dāng)用花括號(hào)“{}”括起來(lái)放在所描述的模型元素的內(nèi)部或緊靠所描述元素的地方也可放在注解的圖標(biāo)內(nèi),用虛線(xiàn)連接到所描述的模型元素第10講:約束(Constraint)第10講:約束(Constraint)10.2對(duì)象約束語(yǔ)言對(duì)象約束語(yǔ)言(ObjectConstraintLanguage,OCL)用于表示UML模型中施加于模型元素上的約束。OCL是一種純表達(dá)式語(yǔ)言,它用表達(dá)式表示約束。OCL的表達(dá)式確保沒(méi)有副作用,對(duì)一個(gè)OCL表達(dá)式進(jìn)行求值將返回一個(gè)值,它在系統(tǒng)模型中不改變。OCL是一種規(guī)格說(shuō)明語(yǔ)言(SpecificationLanguage)。所有有關(guān)實(shí)現(xiàn)的問(wèn)題都不能用OCL表達(dá)。OCL不是一種程序設(shè)計(jì)語(yǔ)言,不能用OCL編寫(xiě)程序,不能用OCL編寫(xiě)程序邏輯和控制流程。每個(gè)OCL約束有一個(gè)上下文將OCL表達(dá)式和被約束的模型元素連接在一起。約束能夠表示在圖上或者寫(xiě)在一個(gè)獨(dú)立的文本文檔中附加到該模型。在被約束元素中在一個(gè)附加的注解(note)中第10講:約束(Constraint)10.3
約束的上下文(Context)人事系統(tǒng)第10講:約束(Constraint)10.4
導(dǎo)航表達(dá)式從上下文對(duì)象開(kāi)始,我們沿著鏈接到達(dá)其他對(duì)象通過(guò)一個(gè)關(guān)聯(lián)進(jìn)行導(dǎo)航,需要使用:關(guān)聯(lián)端的角色名(therolenameatthefarendoftheassociation)或者關(guān)聯(lián)端的類(lèi)名(thenameoftheclassatthefarend)導(dǎo)航過(guò)程需要遍歷這個(gè)對(duì)象網(wǎng)的一部分,所以稱(chēng)表示這些對(duì)象的表達(dá)是為導(dǎo)航表達(dá)式圓點(diǎn)標(biāo)識(shí)進(jìn)行分隔第10講:約束(Constraint)10.4
導(dǎo)航表達(dá)式類(lèi)不變量(ClassInvariants)類(lèi)不變量是類(lèi)的性質(zhì),是指對(duì)該類(lèi)的所有實(shí)例,在所有時(shí)間,該不變量為真?!癮naccount’sbalancemustbeinagivenrange”contextSavingsAccountinv: balance>0andbalance<25000第10講:約束(Constraint)10.7構(gòu)造型的約束前置條件(Preconditions)特別為操作而使用的約束前置條件(Preconditions
)表示的是在一個(gè)操作調(diào)用前必須為真的事情“youcanonlywithdrawanamountlessthanthebalanceinanaccount”contextSavingsAccount::withdraw(amt:Real)pre:amt<balance第10講:約束(Constraint)10.7構(gòu)造型的約束后置條件(Postconditions)后置條件(Postconditions)指明操作的結(jié)果,通過(guò)比較該操作執(zhí)行前和執(zhí)行后的屬性值表示。“withdrawtheamountgiventoit”contextSavingsAccount::withdraw(amt:Real)post:balance=balance@pre-amt‘balance@pre’denotesthebalancebeforetheoperationexecuted第10講:約束(Constraint)10.7構(gòu)造型的約束第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)類(lèi)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)泛化第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)類(lèi)的重?cái)?shù)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):?jiǎn)蜗颍ǔ醪剑┑?1講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):?jiǎn)蜗颍ǜ倪M(jìn))第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):?jiǎn)蜗虻?1講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):?jiǎn)蜗颍蛇x關(guān)聯(lián))第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):雙向(引用完整性)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):雙向(兩個(gè)類(lèi)同時(shí)維護(hù)關(guān)聯(lián))第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):雙向(一個(gè)類(lèi)維護(hù)關(guān)聯(lián))第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):限定關(guān)聯(lián)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)關(guān)聯(lián)的實(shí)現(xiàn):關(guān)聯(lián)類(lèi)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)約束的實(shí)現(xiàn)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:類(lèi)的實(shí)現(xiàn)操作的實(shí)現(xiàn)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:逆向工程(源代碼產(chǎn)生UML文檔)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:逆向工程(源代碼產(chǎn)生UML文檔)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:逆向工程(源代碼產(chǎn)生UML文檔)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:逆向工程(源代碼產(chǎn)生UML文檔)第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:實(shí)現(xiàn)原則開(kāi)-閉原則1988年,BertrandMeyer提出了開(kāi)閉原則“軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉”軟件系統(tǒng)中包含的各種組件,例如模塊(Modules)、類(lèi)(Classes)以及功能(Functions)等等,應(yīng)該在不修改現(xiàn)有代碼的基礎(chǔ)上,引入新功能?!伴_(kāi)”,是指對(duì)于組件功能的擴(kuò)展是開(kāi)放的,是允許對(duì)其進(jìn)行功能擴(kuò)展的;“閉”,是指對(duì)于原有代碼的修改是封閉的,即不應(yīng)該修改原有的代碼。第11講:統(tǒng)一建模語(yǔ)言應(yīng)用11.4
實(shí)現(xiàn)模型:實(shí)現(xiàn)原則無(wú)具體超類(lèi)避免維護(hù)具體的超類(lèi)Liskov替換原則Liskov于1987年提出了一個(gè)關(guān)于繼承的原則“繼承必須確保超類(lèi)所擁有的性質(zhì)在子類(lèi)中仍然成立?!币簿褪钦f(shuō),當(dāng)一個(gè)子類(lèi)的實(shí)例應(yīng)該能夠替換任何其超類(lèi)的實(shí)例時(shí),它們之間才具有is-A關(guān)系。交互決定結(jié)構(gòu)根據(jù)對(duì)象之間的交互確定設(shè)計(jì)中的對(duì)象所屬的類(lèi)之間的結(jié)構(gòu)關(guān)系UML系統(tǒng)分析與設(shè)計(jì)(習(xí)題)班級(jí)A:B150417班級(jí)B:B150411-12等作業(yè)11.3Asthetextmakesclear,thatitisimportanttodistinguishthefollowingtwothings:? TheuseofUMLnotationstodescribeasoftwaresystem;? TheuseofUMLnotationstosupportadevelopmentprocess.ItcouldbearguedthatbecauseUML,alongwithsimilarnotationsandlanguages,hasevolvedtosupportdevelopment,itsnotationscannotbeunderstoodwithoutreferencetotheiruseinthedevelopmentprocess.ItcanthereforehelpinlearningUMLtoconnectthevariousnotationswiththeirtypicaluses.Ontheotherhand,themeaningofthevariousdiagramsinnowaydependsontheiruseinoneoranotherprocess.Diagramsdocumentcertainpropertiesofasoftwaresystem,nottheprocessbywhichitwasdeveloped.作業(yè)11.3Asmanydifferentprocessesareusedfordevelopingsoftware,itisimportanttohaveanunderstandingofUMLnotationsthatisindependentoftheirapplicationinthedevelopmentprocess.Itismoreplausiblethattheroleofadesignprocessistoassistdesignerstoproducedesignsthatareinsomesense"well-structured".Theanalogywithprogramminglanguagesmighthelptomakethisclear.Simplyknowingthesyntaxofalanguagedoesnotmeanthatprogrammerswillautomaticallywriteelegant,maintainableandefficientprograms.Definitionofthesepropertiesisnotpartofthelanguageitself;itismoreaquestionoflearninghowthelanguageisbestapplied.MuchthesamegoesforadesignlanguagelikeUML,andoneroleforadesignprocessistoensurethatthedesignswhichareproducedhavetherequiredhigh-levelproperties.作業(yè)24.2作業(yè)24.2ThisdiagramisnotquiteequivalenttoFigure4.7.BothdiagramsspecifythesamecapabilitiesfortheReceptionistandHeadWaiteractors,butinadditionFigure4.7definesanactorStaffwhoonlyhastheabilitytodisplaybookings.Nosuchactorisdefinedinthediagramabove,thoughaStaffactorcouldeasilybeaddedifrequired.Becausethisisasimplediagram,thereisnotmuchdifferenceincomplexitybetweenthetwoversions.Inmorecomplicateddiagrams,however,theuseofactorgeneralizationcansignificantlyreducethenumberofassociationsthathavetobeshown,thussimplifyingthediagram.Theuseof"superactors"alsomakesiteasiertoseewhenusecasescanbeperformedbyavarietyofactors.作業(yè)32.2(中文課本第28頁(yè))作業(yè)32.2(a)解答作業(yè)32.2(中文課本第28頁(yè))作業(yè)32.2(b)解答作業(yè)32.2(中文課本第28頁(yè))作業(yè)32.2(c)解答作業(yè)42.5(中文課本第30頁(yè))作業(yè)42.5(a)解答作業(yè)42.5(b)解答Althoughitisplausibletoassumethattheorderofmessagesinthisdiagramischeckpoint;read;read;read;transcribe,thisassumptionisbasedentirelyonourknowledgeofthereal-worldsituationbeingmodelled.Onewayofspecifyingtheorderofmessageswouldbetonumberthem.WaysofspecifyingthesequencingofmessagesmoreformallyarediscussedinChapter9.Afurtherambiguityinthisdiagramisthatitisnotentirelyclearwhetherasingletranscribemessageissentafterallthedatahasbeenreadfromthesensors,orifeachreadisfollowedbyacorrespondingtranscribe.作業(yè)42.5(c)解答Aclassdiagramconsistentwiththeobjectdiagramgivenaboveisshownbelow.AnabstractSensorclassisintroducedsothatthethreelinksfromthemonitoringstationtotheindividualsensorobjectscanbemodelledbyoneassociation.作業(yè)58.2(中文課本第138頁(yè))作業(yè)58.2(中文課本第138頁(yè))作業(yè)58.2(a)解答作業(yè)58.2(b)解答作業(yè)58.2(c)解答作業(yè)58.2(d)解答作業(yè)58.2(e)解答作業(yè)68.3(中文課本第138頁(yè))作業(yè)68.3解答(a)Valid.(b)Invalid,becauseaccordingtotheclassdiagrameveryinstanceofCmustbelinkedtopreciselyoneinstanceofclassD.So`standalone'instancesofCarenotpermitted.(c)Invalid,becausetheinstanceofclassDislinkedtotwoinstancesofclassC,contrarytotheclassdiagramwhichspecifiesthatitshouldbelinkedtoatmostoneinstanceofC.(d)Invalid,becausetheinstanceofclassCislinkedtotwoinstancesofclassD,contrarytotheclassdiagramwhichspecifiesthatitshouldbelinkedtoexactlyoneinstanceofD.(e)Invalid,becausethereisnoassociationintheclassdiagramforthelinkbetweenthetwoinstancesofclassDtobeaninstanceof.(f)Valid.InstancesofclassDareoptionallylinkedtoinstancesofclassC,sothereisnoproblemwitha`standalone'instanceofD.作業(yè)78.5(中文課本第138頁(yè))作業(yè)78.5解答作業(yè)88.9(中文課本第140頁(yè))作業(yè)88.9解答IftheabstractdrawoperationwasomittedfromtheShapeclass,itwouldbeimpossibletoinvokethe`draw'operationonashapewithoutknowingwhatsubclassitbelongedto.Inotherwords,codesuchasthefollowingwouldnotwork:Shapes=newRectangle();s.draw();作業(yè)88.9解答Itwouldbenecessarytocasttheobjecttoitsspecificsubclassfirst:Shapes=newRectangle();((Rectangle)s).draw();Thiswouldfrustrateamajorbenefitofusinggeneralization,namelyt
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 游戲客服工作計(jì)劃
- 2025初三班主任班級(jí)工作計(jì)劃
- 4年度信息工作計(jì)劃
- 小學(xué)年度工作計(jì)劃范文2025年
- 幼兒園老師工作計(jì)劃報(bào)告例文
- 制定銷(xiāo)售計(jì)劃書(shū)范文
- 電力工程設(shè)計(jì)組織計(jì)劃
- 上證聯(lián)合研究計(jì)劃課題
- “新家庭計(jì)劃-家庭發(fā)展能力建設(shè)”工作方案
- 《歐盟與歐元》課件
- 西安明德理工學(xué)院
- 建筑公司對(duì)項(xiàng)目部對(duì)管理辦法
- 醫(yī)務(wù)科運(yùn)用PDCA循環(huán)提高危急值管理合格率品管圈成果匯報(bào)
- 構(gòu)美-空間形態(tài)設(shè)計(jì)學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 民法典??荚囶}及答案
- 收款賬戶(hù)確認(rèn)書(shū)
- IPTV系統(tǒng)的分析研究的開(kāi)題報(bào)告
- 全北師大版英語(yǔ)必修一寫(xiě)作+范文
- 爭(zhēng)做新時(shí)代好少年好隊(duì)員主題班會(huì)ppt
- 橋梁養(yǎng)護(hù)資金保障制度
- 小學(xué)音樂(lè)大概念下的大單元教學(xué)設(shè)計(jì)探究 論文
評(píng)論
0/150
提交評(píng)論