版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第9章面向?qū)ο蠓椒ㄅcUML2實施步驟基本概念面向?qū)ο蟮奶卣髋c優(yōu)勢UML
本章概述本章首先講述面向?qū)ο蟮幕靖拍?,然后引出面向?qū)ο筌浖こ谭椒ǖ奶卣髋c優(yōu)勢,接著講述面向?qū)ο蟮膶嵤┎襟E。最后介紹統(tǒng)一建模語言UML以及UML的九種圖。本章目標(biāo):掌握面向?qū)ο蟮幕靖拍罾斫饷嫦驅(qū)ο筌浖こ谭椒ǖ奶卣髋c優(yōu)勢掌握面向?qū)ο蟮膶嵤┎襟E了解統(tǒng)一建模語言UML熟悉UML的九種圖目錄3面向?qū)ο蟮能浖こ谭椒║ML靜態(tài)建模機(jī)制動態(tài)建模機(jī)制描述物理架構(gòu)的機(jī)制9.19.29.39.49.59.1面向?qū)ο蟮能浖こ谭椒嫦驅(qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮能浖こ谭椒ǖ奶卣髋c優(yōu)勢面向?qū)ο蟮膶嵤┎襟E9.1.1面向?qū)ο蟮幕靖拍? 按照人們認(rèn)識客觀世界的系統(tǒng)思維方式,采用基于對象的概念建立模型,模擬客觀世界分析、設(shè)計、實現(xiàn)軟件的辦法。通過面向?qū)ο蟮睦砟钍褂嬎銠C(jī)軟件系統(tǒng)能與現(xiàn)實世界中的系統(tǒng)一一對應(yīng)。 指現(xiàn)實中各種各樣的實體,可以是具體的事物也可以是抽象的事物。面向?qū)ο蟾拍钪邪褜ο蟮膬?nèi)部狀態(tài)稱為屬性,把運(yùn)動規(guī)律稱為方法。面向?qū)ο髮ο?.1.1面向?qū)ο蟮幕靖拍? 類是指具有相似內(nèi)部狀態(tài)和運(yùn)動規(guī)律的實體的集合。類的概念來自于人們認(rèn)識自然認(rèn)識社會的過程。在這一過程中,人們主要運(yùn)用兩種方法:①由特殊到一般的歸納法。②從一般到特殊的演繹法。在歸納過程中,人們從一個個具體事務(wù)中把共同的特征抽象出來,形成一個一般的概念,即“歸類”過程;在演繹過程中,人們把同類事物根據(jù)不同特征分成不同的小類,即“分類”;而對于一個具體的類,它有許多具體個體,稱為“對象”。類的運(yùn)動規(guī)律是類集合中對象的共同運(yùn)動規(guī)律。類9.1.1面向?qū)ο蟮幕靖拍? 消息指對象之間相互聯(lián)系和相互作用的方式。一個消息主要由5部分組成:發(fā)送消息的對象、接收消息的對象、消息傳遞辦法、消息內(nèi)容、反饋。抽象、繼承、封裝、多態(tài)、重載等消息類的特性類的特性8封裝抽象多態(tài)抽象:是一種從一般的觀點看待事物的方法,要求集中于事物本質(zhì)特征,而非具體細(xì)節(jié)或具體實現(xiàn)。繼承重載繼承:是類不同抽象級別之間的關(guān)系。類的定義主要使用歸納和演繹法,由特殊類歸納出的一般類,稱為這些類的父類,特殊類則是一般類的子類,父類可以演繹出子類。父類是更高級別的抽象,子類可以繼承父類的所有內(nèi)部狀態(tài)和運(yùn)動規(guī)律。類的特性9封裝抽象多態(tài)封裝:對象之間的相互聯(lián)系和相互作用主要通過消息機(jī)制來實現(xiàn),對象之間不需要過多了解對方內(nèi)部的具體狀態(tài)和運(yùn)動規(guī)律。面向?qū)ο笾蓄愂欠庋b良好的模塊,類定義將說明與實現(xiàn)顯式地分開,其內(nèi)部實現(xiàn)按具體定義的作用域提供保護(hù)。繼承重載多態(tài):指同名的方法在不同的類中可以具有不同的運(yùn)動規(guī)律重載:重寫是子類對父類的允許訪問的方法的實現(xiàn)過程進(jìn)行重新編寫,返回值和形參都不能改變。即外殼不變,核心重寫。9.1.1面向?qū)ο蟮幕靖拍?0 現(xiàn)實世界中不同對象之間的相互聯(lián)系和相互作用構(gòu)成了各種不同的系統(tǒng),不同系統(tǒng)之間的相互聯(lián)系和相互作用構(gòu)成了更龐大的系統(tǒng),進(jìn)而構(gòu)成整個世界。面向?qū)ο蟾拍钪羞@些系統(tǒng)被稱為包。 在系統(tǒng)間相互作用時為了隱藏系統(tǒng)內(nèi)部的實現(xiàn),系統(tǒng)通過設(shè)立接口界面類或?qū)ο髞砼c其他系統(tǒng)進(jìn)行交互,使其他系統(tǒng)只看到這個接口界面類或?qū)ο螅@個類就被稱為接口類包包的接口類面向?qū)ο蟮能浖こ谭椒ǖ奶卣?1把數(shù)據(jù)和操作封裝在一起,形成對象。對象是構(gòu)成軟件系統(tǒng)的基本組件。把特征相似的對象抽象為類。類之間可以存在繼承或被繼承的關(guān)系,形成軟件系統(tǒng)的層次結(jié)構(gòu)。對象之間通過發(fā)送消息進(jìn)行通信。將對象的私有信息封裝起來。外界不能直接訪問對象的內(nèi)部信息,而必須是發(fā)送相應(yīng)的消息后,通過有限的接口來訪問。
面向?qū)ο蟮姆椒ǖ淖钪匾奶攸c就是把事物的屬性和操作組成一個整體,從問題域中客觀存在的事物出發(fā)來識別對象并建立由這些對象所構(gòu)成的系統(tǒng)。01020304GOAL面向?qū)ο蟮能浖こ谭椒ǖ膬?yōu)勢12
基于左邊這些優(yōu)點,面向?qū)ο蟮能浖こ谭椒ㄔ絹碓绞艿饺藗兊那嗖A。符合人類的思維習(xí)慣可復(fù)用性好穩(wěn)定性好可維護(hù)性好面向?qū)ο蟮膶嵤┎襟E13面向?qū)ο鬁y試面向?qū)ο笤O(shè)計面向?qū)ο蠓治雒嫦驅(qū)ο髮崿F(xiàn)
面向?qū)ο蠓治觯簭膯栴}陳述入手,分析和構(gòu)造所關(guān)心的現(xiàn)實世界問題域的模型,并用相應(yīng)的符號系統(tǒng)表示。模型必須是簡潔、明確地抽象目標(biāo)系統(tǒng)必須做的事,而不是如何做。分析步驟如下。確定問題域,包括定義論域,選擇論域,根據(jù)需要細(xì)化和增加論域區(qū)分類和對象,包括定義對象、定義類、命名區(qū)分整體對象以及組成部分,確定類的關(guān)系以及結(jié)構(gòu)定義屬性,包括確定屬性、安排屬性定義服務(wù),包括確定對象狀態(tài)、確定所需服務(wù)、確定消息聯(lián)結(jié)確定附加的系統(tǒng)約束01面向?qū)ο蟮膶嵤┎襟E14面向?qū)ο鬁y試面向?qū)ο笤O(shè)計面向?qū)ο蠓治雒嫦驅(qū)ο髮崿F(xiàn)
面向?qū)ο笤O(shè)計:面向?qū)ο蟮脑O(shè)計與傳統(tǒng)的以功能分解為主的設(shè)計有所不同。具體設(shè)計步驟如下。應(yīng)用面向?qū)ο蠓治?,對用其他方法得到的系統(tǒng)分析的結(jié)果進(jìn)行改進(jìn)和完善設(shè)計交互過程和用戶接口設(shè)計任務(wù)管理,根據(jù)前一步驟確定是否需要多重任務(wù),確定并發(fā)性,確定以何種方式驅(qū)動任務(wù),設(shè)計子系統(tǒng)以及任務(wù)之間的協(xié)調(diào)與通信方式,確定優(yōu)先級設(shè)計全局資源,確定邊界條件,確定任務(wù)或子系統(tǒng)的軟、硬件分配對象設(shè)計02面向?qū)ο蟮膶嵤┎襟E15面向?qū)ο鬁y試面向?qū)ο笤O(shè)計面向?qū)ο蠓治雒嫦驅(qū)ο髮崿F(xiàn)03
面向?qū)ο髮崿F(xiàn):使用面向?qū)ο笳Z言實現(xiàn)面向?qū)ο蟮脑O(shè)計相對比較容易。如果用非面向?qū)ο笳Z言實現(xiàn)面向?qū)ο蟮脑O(shè)計時,特別需要注意和規(guī)定保留程序的面向?qū)ο蠼Y(jié)構(gòu)。04
面向?qū)ο鬁y試:對面向?qū)ο髮崿F(xiàn)的程序進(jìn)行測試,包括模型測試、類測試、交互測試、系統(tǒng)(子系統(tǒng))測試、驗收測試等。9.2UMLUML簡述UML的應(yīng)用范圍UML的圖UML簡述17統(tǒng)一建模語言(UnifiedModelingLanguage,UML)是一種通用的可視化建模語言,可以用來描述、可視化、構(gòu)造和文檔化軟件密集型系統(tǒng)的各種工件。它由信息系統(tǒng)和面向?qū)ο箢I(lǐng)域的三位著名的方法學(xué)家GradyBooch、JamesRumbaugh和IvarJacobson提出的。它記錄了與被構(gòu)建系統(tǒng)的有關(guān)的決策和理解,可用于對系統(tǒng)的理解、設(shè)計、瀏覽、配置、維護(hù)以及控制系統(tǒng)的信息。這種建模語言已經(jīng)得到了廣泛的支持和應(yīng)用,并且已被ISO組織發(fā)布為國際標(biāo)準(zhǔn)。UML是一種標(biāo)準(zhǔn)的圖形化建模語言,它是面向?qū)ο蠓治雠c設(shè)計的一種標(biāo)準(zhǔn)表示UML用來捕獲系統(tǒng)靜態(tài)結(jié)構(gòu)和動態(tài)行為的信息UML是獨(dú)立于過程的,它適用于各種軟件開發(fā)方法、軟件生命周期的各個階段、各種應(yīng)用領(lǐng)域以及各種開發(fā)工具UML不是一種程序設(shè)計語言,但用UML描述的模型可以和各種編程語言相聯(lián)系01020304GOALUML的應(yīng)用范圍 UML以面向?qū)ο蟮姆绞絹砻枋鱿到y(tǒng)。最廣泛的應(yīng)用是對軟件系統(tǒng)進(jìn)行建模,但它同樣適用于許多非軟件系統(tǒng)領(lǐng)域的系統(tǒng)。理論上來說,任何具有靜態(tài)結(jié)構(gòu)和動態(tài)行為的系統(tǒng)都可以使用UML進(jìn)行建模。當(dāng)UML應(yīng)用于大多數(shù)軟件系統(tǒng)的開發(fā)過程時,它從需求分析階段到系統(tǒng)完成后的測試階段都能起到重要作用。
在需求分析階段,可以通過用例捕獲需求。通過建立用例模型來描述系統(tǒng)的使用者對系統(tǒng)的功能要求。在分析和設(shè)計階段,UML通過類和對象等主要概念及其關(guān)系建立靜態(tài)模型,對類、用例等概念之間的協(xié)作進(jìn)行動態(tài)建模,為開發(fā)工作提供詳盡的規(guī)格說明。在開發(fā)階段,將設(shè)計的模型轉(zhuǎn)化為編程語言的實際代碼,指導(dǎo)并減輕編碼工作。在測試階段,可以用UML圖作為測試依據(jù):用類圖指導(dǎo)單元測試,用組件圖和協(xié)作圖指導(dǎo)集成測試,用用例圖指導(dǎo)系統(tǒng)測試等。UML的圖19用例圖:是對系統(tǒng)提供的功能的描述,用例圖從用戶角度描述系統(tǒng)功能,并指出各個功能的參與者。靜態(tài)圖:描述系統(tǒng)的靜態(tài)結(jié)構(gòu),包括類圖、對象圖、包圖。 類圖:定義系統(tǒng)中的類,表示類之間的關(guān)系(如關(guān)聯(lián)、依賴、聚合),也包括類的內(nèi)部結(jié)構(gòu)。對象圖:是類圖的實例,所用標(biāo)識與類圖幾乎相同。對象圖與類圖不同的點在于對象圖表示的是類的對象實例,而不是實際的類。由于對象存在生命周期,對象圖只會在系統(tǒng)的某一階段存在。對象圖更多是用來幫助對類圖的理解。包圖:可以由任意UML圖組成,用于描述系統(tǒng)的分層結(jié)構(gòu)。行為圖:描述系統(tǒng)的動態(tài)模型和組成對象之間的交互關(guān)系,包含狀態(tài)圖和活動圖。其中狀態(tài)圖描述類的對象所有可能的狀態(tài),以及事件發(fā)生時狀態(tài)的轉(zhuǎn)移條件。狀態(tài)圖通常是類圖的補(bǔ)充,并不是所有的類都需要狀態(tài)圖,只需對含有多個狀態(tài),且行為受外界影響并會發(fā)生改變的類畫出狀態(tài)圖。而活動圖描述滿足用例要求所要進(jìn)行的活動以及活動之間的約束關(guān)系,幫助識別并行活動,是狀態(tài)圖的一個變種。UML的圖20交互圖:描述對象之間的交互關(guān)系,包含順序圖和協(xié)作圖。順序圖顯示對象之間的動態(tài)合作關(guān)系,強(qiáng)調(diào)對象之間消息發(fā)送的順序,同時顯示對象之間的交互。協(xié)作圖描述對象之間的協(xié)作關(guān)系,協(xié)作圖和順序圖相似,也顯示對象之間的動態(tài)合作關(guān)系,除了信息交換外,協(xié)作圖還顯示對象以及它們之間的關(guān)系。當(dāng)強(qiáng)調(diào)時間和順序,則使用順序圖;當(dāng)強(qiáng)調(diào)上下級關(guān)系,則使用協(xié)作圖。實現(xiàn)圖:提供關(guān)于系統(tǒng)實現(xiàn)方面的信息,包含組件圖和部署圖。
組件圖描述代碼組件的物理結(jié)構(gòu)及各組件之間的依賴關(guān)系,一個組件可能是一個資源代碼組件,一個二進(jìn)制組件或一個可執(zhí)行組件。組件圖有助于分析和理解組件之間的相互影響程度。 部署圖用于定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu),它可以顯示實際的計算機(jī)設(shè)備(表示為結(jié)點)以及它們之間的連接關(guān)系,也可以顯示連接的類型以及組件之間的依賴性。在結(jié)點內(nèi)部,放置可執(zhí)行組件和對象以顯示結(jié)點和可執(zhí)行軟件單元的對應(yīng)關(guān)系。UML的圖
當(dāng)采用面向?qū)ο蠹夹g(shù)設(shè)計系統(tǒng)時,首先是描述需求;其次根據(jù)需求建立系統(tǒng)的靜態(tài)模型,以構(gòu)造系統(tǒng)的結(jié)構(gòu);接著是描述系統(tǒng)的行為。其中在前兩步中所建立的模型都是靜態(tài)的,包括用例圖、類圖(包含包)、對象圖、組件圖和部署圖等5個圖,是UML的靜態(tài)建模機(jī)制。其中在最后一步中所建立的模型或者可以執(zhí)行,或者表示執(zhí)行時的時序狀態(tài)或交互關(guān)系,它包括狀態(tài)圖、活動圖、順序圖和協(xié)作圖等4個圖,是UML的動態(tài)建模機(jī)制。因此,UML的主要內(nèi)容也可以歸納為靜態(tài)建模機(jī)制和動態(tài)建模機(jī)制兩大類。9.3靜態(tài)建模機(jī)制用例圖類圖與對象圖包圖用例圖23用例圖是從用戶的角度描述系統(tǒng)的功能,由用例(UserCase)、參與者(Actor)以及它們的關(guān)系連線組成。用例從用戶角度描述系統(tǒng)的行為,它將系統(tǒng)的一個功能描述成一系列的事件,這些事件最終對參與者產(chǎn)生有價值的觀測結(jié)果。參與者是與系統(tǒng)交互的外界實體。用例是一個類,代表一類功能而不是使用該功能的某一具體實例。在UML中,參與者使用人形符號表示,并且具有唯一的名稱;用例使用橢圓表示,也具有唯一的名稱。參與者和用例之間使用帶箭頭的實現(xiàn)連接,由參與者指向用例。正確識別系統(tǒng)的參與者尤為重要。在分析系統(tǒng)的參與者時,除了考慮操作者是否與系統(tǒng)交互之外,還要考慮參與者是否在系統(tǒng)的邊界之外,只有在系統(tǒng)邊界之外的參與者才能稱為參與者,否則只能是系統(tǒng)的一部分。例如系統(tǒng)中的數(shù)據(jù)庫,在多數(shù)情況下,數(shù)據(jù)庫是用于存儲系統(tǒng)數(shù)據(jù),是系統(tǒng)的一部分而非參與者。但當(dāng)遺留系統(tǒng)的數(shù)據(jù)庫存儲著新系統(tǒng)需要導(dǎo)入或處理的歷史數(shù)據(jù),或系統(tǒng)產(chǎn)生的數(shù)據(jù)導(dǎo)出到外部供其他系統(tǒng)使用時,數(shù)據(jù)庫就被視為參與者?!皺C(jī)票預(yù)定系統(tǒng)”部分用例用例圖24用例之間的關(guān)系有3種包含關(guān)系如果系統(tǒng)用例較多,不同的用例之間存在共同行為,可以將這些共同行為提取出來,單獨(dú)組成一個用例。當(dāng)其他用例使用這個用例之時,它們就構(gòu)成了包含關(guān)系。用標(biāo)有<<include>>的虛線箭頭表示。擴(kuò)展關(guān)系在用例的執(zhí)行過程中,可能出現(xiàn)一些異常行為,也可能會在不同的分支行為中選擇執(zhí)行,這時可將異常行為與可選分支抽象成一個單獨(dú)的擴(kuò)展用例,這樣擴(kuò)展用例與主用例之間就構(gòu)成了擴(kuò)展關(guān)系。用標(biāo)有<<extend>>的虛線箭頭表示。泛化關(guān)系用例之間的泛化關(guān)系描述用例的一般與特殊關(guān)系,不同的子用例代表了父用例的不同實現(xiàn)。用帶三角形箭頭的實線表示。類圖與對象圖25
類圖使用類和對象描述系統(tǒng)的結(jié)構(gòu),展示了系統(tǒng)中類的靜態(tài)結(jié)構(gòu),即類與類之間的相互關(guān)系。類之間有多種聯(lián)系方式,如關(guān)聯(lián)(相互連接)、依賴(一個類依賴于或使用另一個類)、泛化(一個類是另一個類的特殊情況)。一個系統(tǒng)有多幅類圖,一個類也可以出現(xiàn)在幾幅類圖中。
對象圖是類圖的實例,它展示了系統(tǒng)在某一時刻的快照。對象圖使用與類圖相同的符號,只是在對象名下面加上下劃線。
在UML中,類圖用具有3個分隔線的矩形表示。頂層分隔表示類和對象的名字,中間表示屬性,底層表示操作。對象圖通常只有名稱和屬性。通常情況下,類名稱的開頭字母用大寫,對象名稱的開頭字母用小寫,對象名引用時常常后面跟著類名。另外屬性和操作前面的符號表示其可見性。類圖與對象圖26
右上圖中,Student,Book和Librarian是系統(tǒng)中的3個示例類。Book類中含id,name,author三個屬性,getInfo()和edit()兩個操作。
右下圖中,包含john,jim和se三個對象,對象包含的屬性與類定義的相同。對象的屬性類型若未在類中定義,則可以在創(chuàng)建對象時定義。屬性和操作前面的符號及其含義如下表所示。圖書管理系統(tǒng)中的示例類圖圖書管理系統(tǒng)中的示例對象圖符
號種
類語
義+Public(公有的)能訪問該類的類都能訪問該屬性#Protected(受保護(hù)的)該類和其繼承類都能訪問該屬性-Private(私有的)只有該類能訪問該屬性~Package(包的)在同一個包中的類都能夠訪問該屬性類圖與對象圖27類與類之間的關(guān)系有關(guān)聯(lián)、依賴、泛化和實現(xiàn)等。1)關(guān)聯(lián)(Association)表達(dá)模型元素間的一種語義關(guān)系,對具有共同的結(jié)構(gòu)特性、行為特性、關(guān)系和語義的鏈的描述。UML中使用一條直線表示關(guān)聯(lián)關(guān)系,直線兩端上的數(shù)字表示重數(shù)。關(guān)聯(lián)關(guān)系還分為二元關(guān)聯(lián)、多元關(guān)聯(lián)、受限關(guān)聯(lián)、聚集和組合等。①二元關(guān)聯(lián)指兩個類之間的關(guān)聯(lián)。②多元關(guān)聯(lián)指一對多或多對多的關(guān)聯(lián)。三元關(guān)聯(lián)使用菱形符號連接關(guān)聯(lián)類。三元關(guān)聯(lián)二元關(guān)聯(lián)類圖與對象圖28
受限關(guān)聯(lián)用于一對多或多對多的關(guān)聯(lián)。如果關(guān)聯(lián)時需要從多重數(shù)的端中指定一個對象來限定,可以通過使用限定符來指定特定對象。
比如,一個學(xué)生可以借多本書,但這多本書可以根據(jù)書的書號不同而區(qū)分,這樣就可以通過限定符“書號”來限定這些圖書中的某一本圖書。如圖所示。01020304GOAL01020304GOAL類圖與對象圖聚合關(guān)聯(lián)聚合的部分對象可以是任意整體對象的一部分,比如,“目錄”與該目錄下的“文件”,班級與該班級的學(xué)生等。組合關(guān)聯(lián)組合則是一種更強(qiáng)的關(guān)聯(lián)關(guān)系,代表整體的組合對象擁有其子對象,具有很強(qiáng)的“物主”身份,具有管理其部分對象的特有責(zé)任,比如“窗口”與窗口中的“菜單”。類圖和對象圖聚合關(guān)聯(lián)組合關(guān)聯(lián)類圖與對象圖30
關(guān)聯(lián)類是一種充當(dāng)關(guān)聯(lián)關(guān)系的類,和類一樣具有自己的屬性和操作。關(guān)聯(lián)類使用虛線連接自己和關(guān)聯(lián)符號。關(guān)聯(lián)類依賴于連接類,沒有連接類時,關(guān)聯(lián)類不能單獨(dú)存在。如圖所示的關(guān)聯(lián)類關(guān)系,一次借閱中,學(xué)生可以借閱一本書,借閱類就是該例子中的關(guān)聯(lián)類。實際上,任何關(guān)聯(lián)類都可以表示成一個類和簡單關(guān)聯(lián)關(guān)系,但常常采用關(guān)聯(lián)類的表示方式,以便更加清楚地表示關(guān)聯(lián)關(guān)系。、
重數(shù)是關(guān)聯(lián)關(guān)系中的一個重要概念,表示關(guān)聯(lián)鏈的條數(shù)。鏈的兩端的數(shù)字“1”和符號“*”表示的就是重數(shù)。重數(shù)可以一個任意的自然數(shù)集合,但實際使用中,大于1的重數(shù)常常用“*”號代替。所以實際使用的重數(shù)多為0、1和符號“*”。一對一關(guān)聯(lián)的兩端重數(shù)都是1;一對多關(guān)聯(lián)的一端的重數(shù)是1,另一端是“*”;多對多關(guān)聯(lián)的兩端重數(shù)都是0~n,常表示為“*”。類圖與對象圖31R0102032)依賴
依賴關(guān)系表示的是兩個元素之間語義上的連接關(guān)系。對于兩個元素X和Y,如果元素X的變化會引起對另一個元素Y的變化,則稱元素Y依賴于X。其中,X被稱為提供者,Y被稱為客戶。依賴關(guān)系使用一個指向提供者的虛線箭頭來表示,如圖所示。對于類圖而言,主要有以下需要使用依賴的情況:客戶類向提供者類發(fā)送消息提供者類是客戶類的屬性類型提供者類是客戶類操作的參數(shù)類型類圖與對象圖323)泛化泛化關(guān)系描述類的一般-特殊關(guān)系,是更一般描述與更特殊描述之間的一種分類學(xué)關(guān)系,特殊描述常常是建立在一般描述基礎(chǔ)上的。一般類是特殊類的泛化即一般類是特殊類的一般描述。特殊類是一般類的子類,而特殊類還可以是另一個特殊類的子類。泛化的這種特點構(gòu)成泛化的分層結(jié)構(gòu)。在面向?qū)ο蟮姆治雠c設(shè)計時,可以把一些類的公共部分(包括屬性與操作)提取出來作為它們的父類。這樣,子類繼承了父類的屬性和操作,子類中還可以定義自己特有的屬性和操作。子類不能定義父類中已經(jīng)定義的屬性;但可以通過重載的方式重定義父類的操作,這種方式稱為方法重載。泛化關(guān)系存在兩種情況。在最簡單情況下,每個類最多擁有一個父類,稱為單繼承。在更復(fù)雜情況下,子類可以有多個父類并繼承所有父類的結(jié)構(gòu),行為和約束,稱為多重繼承。多重繼承類的泛化與繼承關(guān)系類圖與對象圖33R0102034)實現(xiàn)
實現(xiàn)關(guān)系將一個模型連接到另一個模型,通常情況下,后者是行為的規(guī)約(如接口),前者要求必須至少支持后者的所有操作。如果前者是類,后者是接口,則該類是后者的實現(xiàn)。
實現(xiàn)與泛化很相似,區(qū)別是泛化是針對同層級元素之間的連接,而實現(xiàn)是針對不同語義層上的元素的連接。如子類與父類關(guān)系是泛化,類與接口關(guān)系是實現(xiàn)。比如,定義“圖形”接口,類“圓”則是該接口的實現(xiàn),如圖所示。類圖與對象圖34例:一個學(xué)生學(xué)校上課的類圖如圖所示:類圖與對象圖35R5)導(dǎo)航性下圖顯示了一種導(dǎo)航性的使用場景,這代表一個訂單可以獲取到該訂單的一份產(chǎn)品列表,但一個產(chǎn)品卻無法獲取到哪些訂單包括了該產(chǎn)品。包圖36包是一種對元素進(jìn)行分組的機(jī)制。如果系統(tǒng)非常復(fù)雜,常常包含大量的模型,為了利于理解以及將模型獨(dú)立出來用于復(fù)用,對這些元素進(jìn)行分組組織,從而作為一個個集合進(jìn)行整體命名和處理。包的符號如圖所示。包圖37包中的元素需要與其它包或類中的元素進(jìn)行交互,交互過程的可訪問性包括:Public(公有訪問)(+):包中元素可以被其他包的元素訪問。Private(私有訪問)(-):包中元素只能被同屬于一個包的內(nèi)含元素訪問。Protected(保護(hù)訪問)(#):包中的元素只能被此包或其繼承包內(nèi)的元素訪問。包的一些特征如下:包是包含和管理模型內(nèi)容的一般組織單元,任何模型元素都可以包含其中。一個模型元素只能存在于一個包中,包被撤銷時,其中的元素也被撤銷。包可以包含其他包,構(gòu)成嵌套層次結(jié)構(gòu)。包只是一個概念化的元素,不會被實例化,在軟件運(yùn)行中不會有包存在其中。9.4動態(tài)建模機(jī)制順序圖協(xié)作圖狀態(tài)圖活動圖動態(tài)建模機(jī)制39
系統(tǒng)中的對象在執(zhí)行期間的不同時間點如何通信以及通信的結(jié)果如何,就是系統(tǒng)的動態(tài)行為,也就是說,對象通過通信相互協(xié)作的方式以及系統(tǒng)中的對象在系統(tǒng)生命期中改變狀態(tài)的方式,是系統(tǒng)的動態(tài)行為。UML的動態(tài)建模機(jī)制包括順序圖、協(xié)作圖、狀態(tài)圖和活動圖。順序圖順序圖描述了一組對象的交互方式,它表示完成某項行為的對象和這些對象之間傳遞消息的時間順序。順序圖由對象(參與者的實例也是對象)、生命線、控制焦點、消息等組成。生命線是一條垂直的虛線,表示對象的存在時間;控制焦點是一個細(xì)長的矩形,表示對象執(zhí)行一個操作所經(jīng)歷的時間段;消息是作用于控制焦點上的一條水平帶箭頭的實現(xiàn),表示消息的傳遞。
順序圖消息類型順序圖41R(1)列出啟動該用例的參與者。(2)列出啟動用例時參與者使用的邊界對象。(3)列出管理該用例的控制對象。(4)根據(jù)用例描述的所有流程,按時間順序列出分析對象之間進(jìn)行消息傳遞的序列。順序圖可以結(jié)合以下步驟繪制:(1)如果用例的事件流包括基本流和若干備選流,應(yīng)對基本流和備選流分別繪制順序圖。(2)如果備選流比較簡單,可以將其合并到基本流中。(3)如果事件流比較復(fù)雜,可以在時間方向上將其分成多個順序圖。(4)實體對象一般不會訪問邊界對象和控制對象。繪制順序圖需要注意以下問題:順序圖42一個用戶登錄的順序圖:協(xié)作圖
協(xié)作圖又稱通信圖(或合作圖),用于顯示系統(tǒng)的動作協(xié)作,類似順序圖中的交互片段,但協(xié)作圖也顯示對象之間的關(guān)系(上下文)。實際建模中,順序圖和協(xié)作圖的選擇需要根據(jù)工作的目標(biāo)而定。如果重在時間或順序,那么選擇順序圖;如果重在上下文,那么選擇協(xié)作圖。順序圖和協(xié)作圖都顯示對象之間的交互。
協(xié)作圖顯示多個對象及它們之間的關(guān)系,對象間的箭頭顯示消息的流向。消息上也可以附帶標(biāo)簽,表示消息的其他信息,如發(fā)送順序、顯示條件、迭代和返回值等。開發(fā)人員熟識消息標(biāo)簽的語法后就可以讀懂對象之間的通信,并跟蹤標(biāo)準(zhǔn)執(zhí)行流程和消息交換順序。但是如果不知道消息的發(fā)送順序,就不能使用協(xié)作圖來表示對象關(guān)系。協(xié)作圖44
在圖中,一個匿名的User類對象首先向登錄界面對象輸入了用戶信息,接著用戶界面向用戶數(shù)據(jù)對象請求驗證用戶信息是否正確并得到請求的返回結(jié)果,最后登錄界面根據(jù)返回的結(jié)果向用戶反饋對應(yīng)的登錄結(jié)果。協(xié)作圖狀態(tài)圖狀態(tài)圖由狀態(tài)機(jī)擴(kuò)展而來,用來描述對象對外部對象響應(yīng)的歷史狀態(tài)序列,即描述對象所有可能的狀態(tài),以及哪些事件將導(dǎo)致狀態(tài)的改變。包括對象在各個不同狀態(tài)間的跳轉(zhuǎn)以及這些跳轉(zhuǎn)的外部觸發(fā)事件,即從狀態(tài)到狀態(tài)的控制流。狀態(tài)圖側(cè)重于描述某個對象的動態(tài)行為,是對象的生命周期模型。并不是所有的類都需要畫狀態(tài)圖。有明確意義的狀態(tài)、在不同狀態(tài)下行為有所不同的類才需要畫狀態(tài)圖。在UML中,狀態(tài)分為簡單狀態(tài)與復(fù)合狀態(tài)。簡單狀態(tài)即沒有嵌套的狀態(tài),表示為具有一個或兩個分欄的圓角矩形。初態(tài)(initialstate)和終態(tài)(finalstate)是兩個特殊的狀態(tài),分別表示狀態(tài)機(jī)的入口狀態(tài)和出口狀態(tài)。對于一個不含嵌套結(jié)構(gòu)的狀態(tài)機(jī),只能有一個初態(tài),可以有一個、多個甚至無終態(tài)。簡單狀態(tài)的表示方法如圖所示。StateNameStateNameEntry/entryActionNameExit/exitActionNameDo/ActionNameinternalTransferName/effectdeferredEventName/defer簡單狀態(tài)省略表示簡單狀態(tài)完整表示初態(tài)終態(tài)狀態(tài)圖某網(wǎng)上購物系統(tǒng)中訂單類的一個簡單狀態(tài)圖
活動圖47活動圖中的活動是展示整個計算步驟的控制流(及其操作數(shù))的結(jié)點和流的圖。執(zhí)行的步驟可以是并發(fā)的或順序的?;顒訄D可以看作特殊的狀態(tài)圖,用于對計算流程和工作建模(后者是對對象的狀態(tài)建模)。活動圖的狀態(tài)表示計算過程中的所處的各種狀態(tài)?;顒訄D的開始結(jié)點和結(jié)束結(jié)點與狀態(tài)圖相同,活動圖中的狀態(tài)稱為動作狀態(tài),也使用圓角矩形表示。動作狀態(tài)之間使用箭頭連接,表示動作遷移,箭頭上可以附加警戒條件、發(fā)送子句和動作表達(dá)式。活動圖是狀態(tài)圖的變形,根據(jù)對象狀態(tài)的變化捕獲動作(所完成的工作和活動)和它們的結(jié)果,表示了各動作及其間的關(guān)系。如果狀態(tài)轉(zhuǎn)換的觸發(fā)事件是內(nèi)部動作的完成,可用活動圖描述;當(dāng)狀態(tài)的觸發(fā)事件是外部事件時,常用狀態(tài)圖表示?;顒訄D48在活動圖中,判定符號用菱形表示,可以包含兩個或更多附有警戒條件的輸出遷移,遷移根據(jù)警戒條件是否為真選擇遷移結(jié)點?;顒訄D中用分叉節(jié)點和結(jié)合節(jié)點表示并發(fā)。分叉節(jié)點是從線性流程進(jìn)入并發(fā)過程的過渡節(jié)點,擁有一個進(jìn)入控制流和多個離開控制流,所有離開流程都是并發(fā)關(guān)系。結(jié)合節(jié)點是將多個并發(fā)控制流收束回同一流程的節(jié)點標(biāo)記,功能與合并節(jié)點類似。但合并節(jié)點僅僅代表形式上的收束,進(jìn)入合并節(jié)點的各個控制流不存在并發(fā)關(guān)系,而結(jié)合節(jié)點為了保證數(shù)據(jù)統(tǒng)一性,在等到所有流程都到達(dá)該節(jié)點后才會繼續(xù)進(jìn)行?;顒訄D中這兩種節(jié)點表示方法如圖主任務(wù)并發(fā)任務(wù)A并發(fā)任務(wù)B下個主任務(wù)分叉節(jié)點
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度幼兒園大班工作計劃范文
- 2025年秋季學(xué)期幼兒園大班教學(xué)工作計劃
- 汽車?yán)飨嚓P(guān)行業(yè)投資方案
- 2025幼兒園英語高效工作計劃范文
- 2025年國際禁毒日宣傳活動工作計劃
- 財務(wù)工作總結(jié)與經(jīng)驗分享
- 2025年數(shù)學(xué)工作計劃
- 2025年英語學(xué)習(xí)計劃表
- 2025年秘書工作計劃范本2
- 2025年希望小學(xué)學(xué)校工作計劃
- 2023年六安霍邱合高現(xiàn)代產(chǎn)業(yè)園投資有限公司招聘筆試題庫含答案解析
- 代縣雁門光伏升壓站~寧遠(yuǎn)220kV線路工程環(huán)評報告
- 承諾函(支付寶)
- 危險化學(xué)品目錄2023
- GB/T 24123-2009電容器用金屬化薄膜
- 艾滋病梅毒乙肝實驗室檢測
- 國鐵橋梁人行道支架制作及安裝施工要點課件
- 領(lǐng)導(dǎo)科學(xué)全套精講課件
- 粵教版地理七年級下冊全冊課件
- 小學(xué)科學(xué)蘇教版六年級上冊全冊精華知識點(2022新版)
- 萎縮性胃炎共識解讀
評論
0/150
提交評論