軟件工程09-面向?qū)ο蠓椒ㄕ撜n件_第1頁
軟件工程09-面向?qū)ο蠓椒ㄕ撜n件_第2頁
軟件工程09-面向?qū)ο蠓椒ㄕ撜n件_第3頁
軟件工程09-面向?qū)ο蠓椒ㄕ撜n件_第4頁
軟件工程09-面向?qū)ο蠓椒ㄕ撜n件_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

個人成果,妥善保存,請勿傳播軟件工程

岐兵

Email:個人成果,妥善保存,請勿傳播方法學的思考軟件工程給軟件產(chǎn)業(yè)帶來巨大進步!傳統(tǒng)方法的應用緩解的軟件危機大量中、小規(guī)模的軟件項目獲得成功!但是,人們發(fā)現(xiàn)一個現(xiàn)象...傳統(tǒng)方法學應用于大型項目時,很少成功!個人成果,妥善保存,請勿傳播傳統(tǒng)方法的缺點瀑布模型的缺點:僵化瀑布模型要求:生命周期各階段間遵守嚴格的順序。實際情況:軟件開發(fā)往往在反復實踐中完成。瀑布模型要求:預先定義并“凍結(jié)”軟件需求。實際情況:某些系統(tǒng)的需求的一個逐漸明確的過程,且預先定義的需求到軟件完成時可能已經(jīng)過時。個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W20世紀60年代后期出現(xiàn)面向?qū)ο缶幊陶Z言Simula-67,提出類和對象的概念20世紀80年代中期開始面向?qū)ο蠓治龊驮O(shè)計研究,逐步形成面向?qū)ο蟮姆椒▽W20世紀90年代末面向?qū)ο蠓椒▽W成為軟件開發(fā)技術(shù)的首選范型個人成果,妥善保存,請勿傳播課程內(nèi)容提綱第9章:“面向?qū)ο蠓椒▽W”面向?qū)ο蠓椒▽W概述面向?qū)ο蟮母拍蠲嫦驅(qū)ο蠼ο竽P蛣討B(tài)模型功能模型個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述面向?qū)ο蠓椒▽W(Object-OrientedMethodology),簡稱OOM面向?qū)ο蠓椒▽W的要點OOM的出發(fā)點和基本原則是盡可能模擬人類習慣的思維方式,使描述問題的問題空間與實現(xiàn)解法的解空間在結(jié)構(gòu)上盡可能一致。面向?qū)ο蠓椒ㄊ且环N以數(shù)據(jù)和信息為主線,把數(shù)據(jù)和處理相結(jié)合的方法面向?qū)ο蠓椒ò褜ο笞鳛橛蓴?shù)據(jù)及可以施加在這些數(shù)據(jù)上的操作所構(gòu)成的統(tǒng)一體個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述解空間與問題空間的“語義斷層”對象解空間對象和問題空間對象解空間對象的呆板問題空間對象的靜態(tài)屬性/動態(tài)行為個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述OOM的4個要素④消息(message):對象間只能通過發(fā)送消息進行聯(lián)系,外界不能處理對象的內(nèi)部數(shù)據(jù),只能通過消息請求它進行處理(如果它提供相應消息的話)。OOM=Object+Class+Inheritance+Communicationwithmessages個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述面向?qū)ο蠓椒▽W的優(yōu)點1.與人類習慣的思維方式一致傳統(tǒng)方法:面向過程設(shè)計,以計算為核心,數(shù)據(jù)與操作分離,不易理解。OOM:以object為核心,強調(diào)對現(xiàn)實概念的模擬而不強調(diào)算法?!懊嫦?qū)ο蠓椒▽W的基本原則,是按照人們習慣的思維方式建立問題域的模型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)”。Class:由特殊到一般的歸納(induction)Inheritance:由一般到特殊的演繹(deduction)個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述面向?qū)ο蠓椒▽W的優(yōu)點3.可重用性好傳統(tǒng)方法:通過建立標準函數(shù)庫來重用軟構(gòu)件。但標準函數(shù)缺少必要的“柔性”,難以適應不同場合的不同需要。OOM:一個class所有的instances都可重用它的代碼;由inheritance派生出的新的class可重用其父類的代碼,并且可以修改、擴充而不影響其父類的使用。個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述面向?qū)ο蠓椒▽W的優(yōu)點4.可維護性好傳統(tǒng)方法:可維護性是最令人頭痛的問題。OOM:從以下幾方面改善了可維護性穩(wěn)定性好:需求的變化不牽動全局,只需局部修改;Class獨立性強:只要修改不涉及class的對外接口,則內(nèi)部修改完全不影響外部調(diào)用;繼承(Inheritance)和多態(tài)性(polymorphism)使其易被修改和擴充;容易理解、容易測試、調(diào)試個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述面向?qū)ο蠓椒▽W的優(yōu)點注:OOM并不是減少了開發(fā)時間,而是通過提高可重用性、可維護性,進行擴充和修改的容易程度等,從長遠角度改進了軟件的質(zhì)量。OOM與Prototyping結(jié)合使用效果好。個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述噴泉模型使用OOM開發(fā)軟件時,工作重點應該放在生命周期中的分析階段。對生命周期各階段的區(qū)分自然就不重要、不明顯。軟件過程各個階段之間的迭代或一個階段內(nèi)各個工作步驟之間的迭代,在面向?qū)ο蠓缎椭斜仍诮Y(jié)構(gòu)化范型中更常見。每次反復都會增加或明確一些目標系統(tǒng)的性質(zhì),但卻不是對先前工作結(jié)果的本質(zhì)改動,這樣就減少了不一致性,減低了出錯的可能性。個人成果,妥善保存,請勿傳播面向?qū)ο蠓椒▽W概述噴泉模型使用OOM開發(fā)軟件時,工作重點應該放在生命周期中的分析階段。對生命周期各階段的區(qū)分自然就不重要、不明顯。軟件過程各個階段之間的迭代或一個階段內(nèi)各個工作步驟之間的迭代,在面向?qū)ο蠓缎椭斜仍诮Y(jié)構(gòu)化范型中更常見。每次反復都會增加或明確一些目標系統(tǒng)的性質(zhì),但卻不是對先前工作結(jié)果的本質(zhì)改動,這樣就減少了不一致性,減低了出錯的可能性。維護期進一步開發(fā)運行狀態(tài)集成和測試階段編碼階段面向?qū)ο笤O(shè)計階段面向?qū)ο蠓治鲭A段需求分析個人成果,妥善保存,請勿傳播面向?qū)ο蟮母拍顚ο?/p>

對象既可以是具體的物理實體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。例如,一名職工、一家公司、一個窗口、一座圖書館、一本圖書、貸款、借款等等,都可以作為一個對象。個人成果,妥善保存,請勿傳播f1f2f3……fi……fnfi(X)Sgi(X,S)S’輸出輸出Object:=ID+Method+Attribute+Message一個對象好像一個黑盒子,表示它內(nèi)部的數(shù)據(jù)和實現(xiàn)各個操作的代碼及局部數(shù)據(jù),都被封裝在這個黑盒子內(nèi)部,在外部是看不見的,更不能從外部去訪問或修改這些數(shù)據(jù)代碼。個人成果,妥善保存,請勿傳播特點:①以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作;②Object主動處理而不被動地等待被處理,外部只能通過message請求操作;③具有封裝性:外部操作時,無須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;④具有并行性:不同object各自獨立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信;⑤模塊獨立性好:內(nèi)聚強、耦合松面向?qū)ο蟮母拍顐€人成果,妥善保存,請勿傳播面向?qū)ο蟮母拍钇渌拍铑悾菏菍哂邢嗤瑪?shù)據(jù)和相同操作的一組相似對象的定義。例人、圓實例:是由某個特定的類所描述的一個具體對象。消息:是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。由3部分組成:接受消息的對象、消息選擇符(名)、零個和多個變元。個人成果,妥善保存,請勿傳播面向?qū)ο蟮母拍钇渌拍罘庋b:是把某個事務(wù)包起來,使外界不知道該事物的具體內(nèi)容。封裝的條件:(1)有一個清晰的邊界(2)有確定的接口(3)受保護的內(nèi)部實現(xiàn)個人成果,妥善保存,請勿傳播面向?qū)ο蟮母拍钇渌拍罾^承繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機制,其特性是:一個類的上層可以有父類,下層可以有子類。繼承具有傳遞性,如果類C繼承類B,類B繼承類A,則類C繼承類A。當類等級為樹形結(jié)構(gòu)時,類的繼承是單繼承;當允許一個類有多個父親時,類的繼承是多重繼承。個人成果,妥善保存,請勿傳播面向?qū)ο蟮母拍钇渌拍罾^承在程序執(zhí)行期間,對對象某一性質(zhì)的查找是從該對象類在類等級中所在的程序開始,沿類等級逐層向上進行的,并把第一個被找到的性質(zhì)作為所要的性質(zhì)。因此,低層的性質(zhì)將屏蔽高層的同名的性質(zhì)。從原有類派生出新的子類的辦法有:需要擴充原有功能時,派生類的方法可以調(diào)用基類的方法,并在此基礎(chǔ)上增加必要的程序代碼;需要完全改變原有操作的算法時,可以在派生類中實現(xiàn)一個與基類方法同名而算法不同的方法;需要增加新的功能時,可以在派生類中實現(xiàn)一個新的方法。個人成果,妥善保存,請勿傳播面向?qū)ο蟮母拍钇渌拍疃鄳B(tài)性多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。在C++語言中,多態(tài)性是通過虛函數(shù)來實現(xiàn)的。虛函數(shù)機制使得程序員能在一個類等級中使用相同函數(shù)的多個不同版本,稱為動態(tài)聯(lián)遍,也叫滯后聯(lián)編。多態(tài)性機制不僅增加了面向?qū)ο筌浖撵`活性,進一步減少了信息冗余,而且顯著提高了軟件可重用性和可擴充性。個人成果,妥善保存,請勿傳播面向?qū)ο蟮母拍钇渌拍钪剌d函數(shù)重載是指在同一作用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運算符重載是指同一個運算符可以施加與不同類型的操作數(shù)上面,當參數(shù)類型不同或被操作數(shù)的類型不同時,實現(xiàn)函數(shù)的算法或運算符的語義是不相同的在C++語言中函數(shù)重載是通過靜態(tài)聯(lián)編(也叫先前聯(lián)編)實現(xiàn)的,也就是在編譯時根據(jù)函數(shù)變元的個數(shù)和類型,決定到底使用函數(shù)的哪個實現(xiàn)代碼;對于重載的運算符,同樣是在編譯時根據(jù)被操作數(shù)的類型,決定使用該運算符的哪種語義。個人成果,妥善保存,請勿傳播課程內(nèi)容提綱第9章:“面向?qū)ο蠓椒▽W”面向?qū)ο蠓椒▽W概述面向?qū)ο蟮母拍蠲嫦驅(qū)ο蠼ο竽P蛣討B(tài)模型功能模型個人成果,妥善保存,請勿傳播面向?qū)ο蠼DP蜑榱死斫馐挛锒鴮κ挛镒鞒龅囊环N抽象,是對事物的一種無歧義的書面描述模型由一組圖示符號和規(guī)則說明構(gòu)成,用他們來定義和描述問題域中的術(shù)語和概念模型是一種思考工具,把知識規(guī)范的表示出來思考問題、定義術(shù)語、作出假設(shè)保持定義和假設(shè)的一致性個人成果,妥善保存,請勿傳播面向?qū)ο蠼DP驮谲浖_發(fā)是模型的應用系統(tǒng)分析員從不同角度抽象出目標系統(tǒng)的特性使用精確的表示方法構(gòu)造系統(tǒng)的模型驗證模型是否滿足用戶的需求在設(shè)計過程把實現(xiàn)細節(jié)加進模型直至用程序?qū)崿F(xiàn)模型個人成果,妥善保存,請勿傳播面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常要建立3種形式的模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型描述系統(tǒng)功能的功能模型一個典型的軟件系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動態(tài)模型),并完成數(shù)據(jù)值的變化(功能模型)個人成果,妥善保存,請勿傳播課程內(nèi)容提綱第9章:“面向?qū)ο蠓椒▽W”面向?qū)ο蠓椒▽W概述面向?qū)ο蟮母拍蠲嫦驅(qū)ο蠼ο竽P蛣討B(tài)模型功能模型個人成果,妥善保存,請勿傳播對象模型關(guān)于建模語言模型通常由一組圖示符號和組成這些符號的規(guī)則組成,定義和描述問題域的術(shù)語和概念為建立模型,需要用適當?shù)恼Z言來表達模型建模語言由記號(即模型中使用的符號)和使用這些記號的規(guī)則(語法、語義)組成個人成果,妥善保存,請勿傳播對象模型關(guān)于UML建模語言面向?qū)ο蠓治雠c設(shè)計方法在20世紀80年代末到90年代中出現(xiàn)了一個高潮,統(tǒng)一建模語言UML就是這個高潮的產(chǎn)物UML是由面向?qū)ο蠓椒I(lǐng)域的三位著名專家GradyBooch,JamesRumbaugh和IvarJacobson提出的UML統(tǒng)一了他們?nèi)说谋硎痉椒ǎ胰谌肓吮姸鄡?yōu)秀的軟件方法和思想,從而把面向?qū)ο蠓椒ㄌ岣叩揭粋€嶄新的高度。UML標志著面向?qū)ο蠼7椒ㄟM入了第三代個人成果,妥善保存,請勿傳播對象模型關(guān)于UML建模語言UML已得到許多世界知名公司的使用和支持1997年11月17日被OMG組織采納,成為面向?qū)ο蠼5臉藴收Z言O(shè)MG已經(jīng)把UML作為公共可得到的規(guī)格說明提交給國際標準化組織進行國際標準化,UML最終成為信息技術(shù)的正式國際標準UML不論在計算機學術(shù)界、軟件產(chǎn)業(yè)界還是在商業(yè)界,UML已經(jīng)逐漸成為人們?yōu)楦鞣N系統(tǒng)建模、描述系統(tǒng)體系結(jié)構(gòu)、商業(yè)體系結(jié)構(gòu)和商業(yè)過程時使用的統(tǒng)一工具,而且在實踐過程中人們還在不斷擴展它的應用領(lǐng)域個人成果,妥善保存,請勿傳播對象模型對象模型對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)是對模擬客觀世界實體的對象以及對象彼此間的關(guān)系的映射建立對象模型時,我們的目標是從客觀世界中提煉出對具體應用有價值的概念OO方法強調(diào)圍繞“對象”而不是“功能”來構(gòu)造系統(tǒng)對象模型為建立動態(tài)模型和功能模型提供了架構(gòu)UML使用類圖來建立對象模型個人成果,妥善保存,請勿傳播對象模型類圖的基本符號類圖描述類、類與類之間的靜態(tài)關(guān)系,是一種靜態(tài)模型,是創(chuàng)建其他UML圖的基礎(chǔ)一個系統(tǒng)由多張類圖來描述,一個類也可以出現(xiàn)在幾張類圖中1定義類UML中類的圖形符號為長方形,用兩條橫線把長方形分成上、中、下3個區(qū)域(下面兩個區(qū)域可以省略)為類命名時應該遵守以下幾條準則:使用標準術(shù)語使用具有確切含義的名詞必要時用名詞短語作為名字類名屬性服務(wù)個人成果,妥善保存,請勿傳播對象模型類圖的基本符號2定義屬性UML描述屬性的語法如下:

可見性屬性名:類型名=初值{性質(zhì)串}屬性的可見性(即可訪問性)通常有下述3種:公有的(public)(+)私有的(private)(-)保護的(protected)(#)類型名表示該屬性的數(shù)據(jù)類型,它可以是基本數(shù)據(jù)類型,也可以是用戶自定義的類型用花括號括起來的性質(zhì)串明列出該屬性所有可能的取值例:-管理員:String=“未定”類名屬性服務(wù)個人成果,妥善保存,請勿傳播對象模型類圖的基本符號3定義服務(wù)

UML描述操作的語法格式如下:

可見性操作名(參數(shù)表):返回值類型{性質(zhì)串}操作可見性的定義方法與屬性相同。參數(shù)表是用逗號分隔的形式參數(shù)的序列。描述一個參數(shù)的語法如下:

參數(shù)名:類型名=默認值當操作的調(diào)用者未提供實在參數(shù)時,該參數(shù)就使用默認值。類名屬性服務(wù)個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號類與類之間通常有關(guān)聯(lián)、泛化(繼承)、依賴和細化等4種關(guān)系1關(guān)聯(lián)關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系(1)普通關(guān)聯(lián):最常見的關(guān)聯(lián)關(guān)系,只要在類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。例如,作家使用計算機,我們就認為在作家和計算機之間存在某種語義連接,因此在類圖中應該在作家類和計算機類之間建立關(guān)聯(lián)關(guān)系作家計算機*使用1..*被使用個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號1關(guān)聯(lián)通常關(guān)聯(lián)是雙向的,可在一個方向上為關(guān)聯(lián)起一個名字,在另一個方向上起另一個名字(也可不起名字)在表示關(guān)聯(lián)的直線兩端可以寫上重數(shù)(multiplicity),它表示該類有多少個對象與對方的一個對象連接。重數(shù)的表示方法通常有(默認重數(shù)為1)

0..1 表示0到1個對象

0..*或*表示0到多個對象

1+或1..* 表示1到多個對象

1..15表示1到15個對象

3 表示3個對象作家計算機*使用1..*被使用個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號1關(guān)聯(lián)(2)關(guān)聯(lián)的角色在任何關(guān)聯(lián)中都會涉及到參與此關(guān)聯(lián)的對象所扮演的角色,在某些情況下顯式標明角色名有助于別人理解類圖例:一個人與另一個人結(jié)婚,必然一個人扮演丈夫的角色,另一個人扮演妻子的角色。如果沒有顯式標出角色名,則意味著用類名作為角色名。人結(jié)婚丈夫妻子個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號1關(guān)聯(lián)(3)限定關(guān)聯(lián)限定關(guān)聯(lián)通常在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的重數(shù)從一對多變成一對一,或從多對多簡化成多對一例如,某操作系統(tǒng)中一個目錄下有許多文件,一個文件僅屬于一個目錄,在一個目錄內(nèi)文件名確定了惟一一個文件??梢姡孟薅ㄔ~把一對多關(guān)系簡化成了一對一關(guān)系。目錄文件名文件個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號1關(guān)聯(lián)(4)關(guān)聯(lián)類為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息,可以引入一個關(guān)聯(lián)類來記錄這些信息。關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個對象相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。隊列電梯控制器電梯按鈕4*個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號2聚集聚集也稱為聚合,是關(guān)聯(lián)的特例。聚集表示類與類之間的關(guān)系是整體和部分的關(guān)系。在陳述需求時使用的“包含”、“組成”、“分為……部分”等字句,往往意味著存在聚集關(guān)系。除了一般聚集之外,還有兩種特殊的聚集關(guān)系,分別是共享聚集和組合聚集。(1)共享聚集如果在聚集關(guān)系中處于部分方的對象可同時參與多個處于整體方對象的構(gòu)成,則該聚集稱為共享聚集。課題組人*1..*成員個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號2聚集(2)組合聚集如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失(或失去存在的價值了),則該聚集稱為組合聚集(簡稱為組成)。例如,在屏幕上打開一個窗口,它由文本框、列表框、按鈕和菜單組成,一旦關(guān)閉了窗口,各個組成部分也同時消失,窗口和它的組成部分之間存在著組合聚集關(guān)系。窗口文本框列表框按鈕菜單包含****個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號3泛化在UML中的泛化關(guān)系就是通常所說的繼承關(guān)系,它是通用元素和具體元素之間的一種分類關(guān)系。具體元素完全擁有通用元素的信息,并且還可以附加一些其他信息。泛化針對類型而不針對實例,一個類可以繼承另一個類,但一個對象不能繼承另一個對象。實際上,泛化關(guān)系指出在類與類之間存在“一般-特殊”關(guān)系。泛化可進一步劃分成普通泛化和受限泛化。個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號3泛化(1)普通泛化需要特別說明的是沒有具體對象的類稱為抽象類抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。圖示抽象類時,在類名下方附加一個標記值{abstract}交通工具{abstract}drive(){abstract}汽車drive()船drive()驅(qū)動車輪轉(zhuǎn)換轉(zhuǎn)動螺旋槳個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號3泛化例子:一副工程藍圖由許多圖形組成,圖形可以是直線,圓,多邊形或組合圖,而多邊形由直線組成,組合圖由各種線型混合而成。圖形{abstract}draw(){abstract}位置:pos組合圖draw()多邊形draw()線draw()圓draw()由…組成*藍圖由…組成*由…組成*個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號3泛化(2)受限泛化可以給泛化關(guān)系附加約束條件,以進一步說明該泛化關(guān)系的使用方法或擴充方法,這樣的泛化關(guān)系稱為受限泛化。預定義的約束有4種:多重,不相交,完全和不完全,這些約束都是語義約束。多重繼承指的是,一個子類可以同時多次繼承同一個上層基類。與多重繼承相反是不相交繼承完全繼承指的是父類的所有子類都已在圖中窮舉交通工具水路兩用汽車船動力裝置動力裝置多重個人成果,妥善保存,請勿傳播對象模型表示關(guān)系的符號4依賴和細化(1)依賴關(guān)系:依賴關(guān)系描述兩個模型元素之間的語義連接關(guān)系,其中一個模型元素是獨立的,另一個模型元素不是獨立的,如果獨立的模型元素改變,將影響依賴于它的模型元素。(2)細化關(guān)系:當對同一個事物在不同抽象層次上描述時,這些描述之間具有細化關(guān)系。類B類A《友元》獨立分析類設(shè)計類個人成果,妥善保存,請勿傳播課程內(nèi)容提綱第9章:“面向?qū)ο蠓椒▽W”面向?qū)ο蠓椒▽W概述面向?qū)ο蟮母拍蠲嫦驅(qū)ο蠼ο竽P蛣討B(tài)模型功能模型個人成果,妥善保存,請勿傳播動態(tài)模型動態(tài)模型動態(tài)模型表示瞬時的,行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對象模型中的對象的合法變化序列。每個類的動態(tài)行為用一張狀態(tài)圖來描繪各個類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動態(tài)模型動態(tài)模型是基于事件共享而互相關(guān)聯(lián)的一組狀態(tài)圖的集合狀態(tài)有持續(xù)性,它占用一段時間間隔狀態(tài)與事件密不可分,一個事件分開兩個狀態(tài),一個狀態(tài)隔開兩個事件事件表示時刻,狀態(tài)代表時間間隔個人成果,妥善保存,請勿傳播動態(tài)模型動態(tài)模型的三要素:①事件(event):引發(fā)對象狀態(tài)改變的控制信息(瞬時)②狀態(tài)(status):即對象的屬性所處的情形(可持續(xù))③行為(action):對象要達到某種狀態(tài)所做的操作(耗時)表示方法:Event0Status1do:Action1Status2do:Action2Event1Event2StartEnd[Condition1]注:當描述循環(huán)運行過程時,通常不關(guān)心是怎樣啟動的。個人成果,妥善保存,請勿傳播閑置撥號通話斷線撥號音do:響撥號音超時do:響蜂鳴音存儲的信息do:播放信息接通中do:試接通振鈴do:振鈴忙音do:響忙音拿起聽筒數(shù)字數(shù)字有效號碼已接通受話人回話受話人掛斷電話掛斷電話超時掛斷電話超時無效號碼信息播完占線例:電話的狀態(tài)圖個人成果,妥善保存,請勿傳播課程內(nèi)容提綱第9章:“面向?qū)ο蠓椒▽W”面向?qū)ο蠓椒▽W概述面向?qū)ο蟮母拍蠲嫦驅(qū)ο蠼ο竽P蛣討B(tài)模型功能模型個人成果,妥善保存,請勿傳播功能模型功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應該“做什么”,因此更直接地反映了用戶對目標系統(tǒng)的需求。功能模型由一組數(shù)據(jù)流圖組成,在面向?qū)ο蠓椒▽W中,數(shù)據(jù)流圖遠不如在結(jié)構(gòu)分析設(shè)計方法中那樣重要一般說來,與對象模型和動態(tài)模型比較,數(shù)據(jù)流圖并沒有增加新的信息UML提供的用例圖也是進行需求分析和建立功能模塊的強有力工具,在UML中把用用例圖建立起來的系統(tǒng)模型成為用例模型。個人成果,妥善保存,請勿傳播功能模型用例圖用例圖包含的模型元素有系統(tǒng),行為者,用例及用例之間的關(guān)系.圖中的方框代表系統(tǒng),橢圓代表用例,線條人代表行為者,它們之間的連線表示關(guān)系售貨供貨取款機自動售貨機系統(tǒng)顧客供貨人收銀員個人成果,妥善保存,請勿傳播功能模型用例圖1系統(tǒng)系統(tǒng)被看作是一個提供用例的黑盒子,內(nèi)部如何工作,用例如何實現(xiàn),這些對于建立用例模型來說都是不重要的。系統(tǒng)的方框邊線表示系統(tǒng)的邊界,劃定系統(tǒng)的功能范圍2用例用例是可以被行為者感受到的,系統(tǒng)的一個完整的功能在UML中把用例定義成系統(tǒng)完成的一系列動作,動作的結(jié)果能被特定的行為者察覺到。用例具有下述特征:(1)用例代表某些用戶可見的功能,實現(xiàn)一個具體用戶目標(2)用例總是被行為者啟動的,并向行為者提供可識別的值(3)用例必須是完整的個人成果,妥善保存,請勿傳播功能模型用例圖用例的實例是系統(tǒng)的一種實際使用方法,通常把用例的實例稱為腳本。腳本是系統(tǒng)的一次具體執(zhí)行過程例如,在自動售貨機系統(tǒng)中,張三投入硬幣購買礦泉水,系統(tǒng)收到錢后把礦泉水送出來,上述過程就是一個腳本;李四投幣買可樂,但是可樂賣完了,于是系統(tǒng)給出提示信息并把錢退還給李四,這個過程是另一個腳本。個人成果,妥善保存,請勿傳播功能模型用例圖3行為者行為者是指與系統(tǒng)交互的人或其他系統(tǒng),它代表外部實體。使用用例并且與系統(tǒng)交互的任何人或物都是行為者。行為者代表一種角色,而不是某個具體的人或物。例如,在自動售貨機系統(tǒng)中,使用售貨功能的人既可以是買張三(買礦泉水)也可以是李四的(買可樂),但是不能把張三或李四這樣的個體對象稱為行為者。個人成果,妥善保存,請勿傳播功能模型用例圖3行為者在用例圖中用直線連接行為者和用例,表示兩者之間交換信息,稱為通信聯(lián)系。行為者觸發(fā)(激活)用例,并與用例交換信息,單個行為者可與多個用例聯(lián)系;反之,一個用例也可與多個行為者聯(lián)系。實踐表明,行為者對確定用例是非常有用的個人成果,妥善保存,請勿傳播功能模型用例圖4用例之間的關(guān)系(1)擴展關(guān)系向一個用例中添加一些動作后構(gòu)成了另一個用例,這兩個用例之間的關(guān)系就是擴展關(guān)系,后者稱為擴展用例。例如,在自動售貨機系統(tǒng)中,”售貨”是一個基本的用例,如果顧客購買罐裝飲料,把非常規(guī)動作放置于”售貨裝飲料”用例中,這兩個用例之間關(guān)系就是擴展關(guān)系個人成果,妥善保存,請勿傳播功能模型用例圖4用例之間的關(guān)系2)使用關(guān)系當一個用例使用另一個用例時,這兩個用例之間就構(gòu)成了使用關(guān)系。一般說來,如果在若干個用例中有某些相同的動作,則可以把這些相同的動作提取出來單獨構(gòu)成一個用例(成為抽象用例)。例如,在自動售貨機系統(tǒng)中,”供貨”和”取貨款”,”打開機器”用例,把最后的動作抽象成”關(guān)閉機器”用例通常在描述一般行為的變化時采用擴展關(guān)系;在兩個或多個用例中出現(xiàn)重復描述又想避免這種重復時,可以采用使用關(guān)系。個人成果,妥善保存,請勿傳播功能模型售貨供貨取款機自動售貨機系統(tǒng)顧客供貨人收銀員售散裝飲料打開機器關(guān)閉機器打開機器關(guān)閉機器擴展《使用》《使用》《使用》《使用》個人成果,妥善保存,請勿傳播功能模型用例建模一個用例模型由若干幅用例圖組成創(chuàng)建用例模型的工作包括:定義系統(tǒng),尋找行為者和用例描述用例,定義用例之間的關(guān)系確認模型。其中,尋找行為者和用例是關(guān)鍵。個人成果,妥善保存,請勿傳播功能模型用例建模1.尋找行為者通過請系統(tǒng)的用戶回答一些問題的辦法來發(fā)現(xiàn)行為者,下述問題有助于發(fā)現(xiàn)行為者:誰將使用系統(tǒng)的主要功能(主行為者)?誰需要借助系統(tǒng)的支持來完成日常工作?誰來維護和管

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論