版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
會計學(xué)1第9章面向?qū)ο蠓椒▽W(xué)引論面向?qū)ο蟮母拍钇鹪从?0世紀(jì)60年代中期的Simula67。80年代中期OOP模式進(jìn)入主流。80年代中后期,面向?qū)ο蠓治雠c設(shè)計的研究開始發(fā)展。進(jìn)入90年代,面向?qū)ο筌浖こ坛闪嗽S多軟件產(chǎn)品的開發(fā)模式?!?面向?qū)ο蠓椒▽W(xué)概述第1頁/共67頁面向?qū)ο蠓椒▽W(xué)OOM(Object-OrientedMethodology)特點:盡可能模擬人類習(xí)慣的思維方式,即問題域與求解域在結(jié)構(gòu)上盡可能一致。與傳統(tǒng)方法相反,OOM把數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體——對象。這時程序不再是一系列工作在數(shù)據(jù)上的函數(shù)集合,而是相互協(xié)作又彼此獨立的對象的集合。第2頁/共67頁成都北京Post-officeMessageSendbymethod對象ObjectObject=屬性AttributeAttributes:location;employee;……
+操作MethodMethods:send;sell;……注意:對象內(nèi)部的屬性不允許外部用戶直接改動,只有當(dāng)它提供了相應(yīng)的服務(wù)操作時,用戶才能通過發(fā)送消息來提請它執(zhí)行。我想把郵局搬到我家門口,多加幾個郵遞員,24小時都開門……對不起,本郵局不提供此類服務(wù)唉,那就先送束花吧——
Post_office.Send(request,payment)例:第3頁/共67頁OOM的四要素:①對象(object):世界由對象組成。②類(class):具有相同屬性和操作的對象可劃分為類;單個對象可視為某一類的實例
(instance)。③繼承(inheritance):類可分層,下層子類與上層父類有相同特征,稱為繼承。OOM=Object+Class+Inheritance+Communicationwithmessages④消息(message):對象間只能通過發(fā)送消息進(jìn)行聯(lián)系,外界不能處理對象的內(nèi)部數(shù)據(jù),只能通過消息請求它進(jìn)行處理(如果它提供相應(yīng)消息的話)。第4頁/共67頁OOM:以object為核心,強調(diào)對現(xiàn)實概念的模擬而不強調(diào)算法?!懊嫦?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方式建立問題域的模型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)”。
Class:由特殊到一般的歸納
Inheritance:由一般到特殊的演繹OOM相比傳統(tǒng)方法的優(yōu)點:①傳統(tǒng)方法:面向過程設(shè)計,以計算為核心,數(shù)據(jù)與操作分離,不易理解。第5頁/共67頁OOM:以object模擬實體,需求變化不會引起結(jié)構(gòu)的整體變化,因為實體相對穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。②傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。③傳統(tǒng)方法:通過建立標(biāo)準(zhǔn)函數(shù)庫來重用軟構(gòu)件。但標(biāo)準(zhǔn)函數(shù)缺少必要的“柔性”,難以適應(yīng)不同場合的不同需要。OOM:一個class所有的instances都可重用它的代碼;由inheritance派生出的新的class可重用其父類的代碼,并且可以修改、擴充而不影響其父類的使用。第6頁/共67頁穩(wěn)定性好:軟件功能需求的變化不牽動全局,只需局部修改;Class獨立性強:只要修改不涉及class的對外接口,則內(nèi)部修改完全不影響外部調(diào)用;Inheritance和多態(tài)性(polymorphism)使其很容易被修改和擴充;容易理解;④傳統(tǒng)方法:可維護性是最令人頭痛的問題。
OOM:從以下幾方面改善了可維護性——注:OOM并不是減少了開發(fā)時間,而是通過提高可重用性、可維護性,進(jìn)行擴充和修改的容易程度等,從長遠(yuǎn)角度改進(jìn)了軟件的質(zhì)量。OOM與Prototyping結(jié)合使用效果好。第7頁/共67頁特點:①以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作;②Object主動處理而不被動地等待被處理,外部只能通過message請求操作;③具有封裝性:外部操作時,無須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;④具有并行性:不同object各自獨立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信;⑤模塊獨立性好:內(nèi)聚強、耦合松§2面向?qū)ο蟮母拍?、對象第8頁/共67頁3、消息:object_ID.method_ID(parameter(s));4、方法(操作):object能做的操作,亦稱為service,在
class中須定義相應(yīng)的代碼;5、屬性
:object的固有數(shù)據(jù);2、類:具有相同數(shù)據(jù)和相同操作的一組對象;
實例:某個class描述的具體對象;6、封裝:把內(nèi)部實現(xiàn)細(xì)節(jié)隱藏起來,使其他外部對象無法訪問,僅僅提供某些功能。使對象形成接口部分和實現(xiàn)部分第9頁/共67頁Class中國人中國人Attributes中國人Methods張三(instance)
Class中國人張三的AttributesClass成都人
(子類)成都人Attributes成都人Methods
Class中國人李四(instance)中國人李四的Attributes成都人李四的Attributes
Class成都人例:7、繼承:子類自動共享父類的attributes和methods,而不必重復(fù)定義。特點:①若成都人的methods中有與中國人的同名,則李四執(zhí)行該method時以成都人為準(zhǔn),不執(zhí)行中國人中定義的同名method。②傳遞性:AB、BCAC
一個class繼承了上層全部classes的一切性質(zhì)。第10頁/共67頁注意:多重繼承在定義中應(yīng)避免二義性,即兩二個父類中定義重名,但各具不同性質(zhì)。例:FemaleChineseScholarCardDeckGraphicalObjectGraphicalDeckMethod:Draw:=takeacardfromadeckMethod:Draw:=displayagraphicalobjectMethod:Draw:=?例:④修改與擴充可以很容易地通過派生子類來完成。③一個子類只有一個父類稱為單繼承,一個子類可有多個父類稱為多重繼承。第11頁/共67頁8、多態(tài)性與動態(tài)聯(lián)編多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。不同層次的classes可共享一個method名,但按各自的方式來實現(xiàn)這種method。9、重載在同一作用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。在C++語言中函數(shù)重載通過靜態(tài)聯(lián)編(也叫先前聯(lián)編)實現(xiàn)。如虛函數(shù)機制能在一個類等級中使用相同函數(shù)的多個不同版本,在運行時刻才根據(jù)接收消息的對象所屬于的類,決定到底執(zhí)行哪個特定的版本,稱為動態(tài)聯(lián)編,也叫滯后聯(lián)編。第12頁/共67頁模型:為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述。
3種面向?qū)ο蟮哪P停?①
描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型。 ②
描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型。 ③
描述系統(tǒng)功能的功能模型。一個典型的軟件系統(tǒng)組合了上述3方面內(nèi)容:它使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動態(tài)模型),并且完成數(shù)據(jù)值的變化(功能模型)?!?面向?qū)ο蠼5?3頁/共67頁幾種面向?qū)ο箝_發(fā)方法:Booch方法Booch是面向?qū)ο蠓椒ㄗ钤绲奶岢稣咧?,提出了面向?qū)ο筌浖こ痰母拍?。Booch認(rèn)為軟件開發(fā)是一個螺旋上升的過程。Coad-Yourdon方法著名的OOA/OOD方法,也是最早的面向?qū)ο蟮姆治雠c設(shè)計方法之一。簡單、易學(xué)。Rumbaugh方法(簡稱OMT-ObjectModelingTechnology)該方法強調(diào)了三種模型,并將軟件開發(fā)過程劃分為系統(tǒng)分析、系統(tǒng)設(shè)計、對象設(shè)計等幾個階段。Jacobson方法(簡稱OOSE)最大特點是強調(diào)使用用例(Use-Case),每一個用例就是一個使用系統(tǒng)的方式,用例的執(zhí)行將引發(fā)執(zhí)行一系列與行為相關(guān)的事務(wù)。第14頁/共67頁統(tǒng)一建模語言UML由Rumbaugh、Booch、Jacobson提出的統(tǒng)一建模語言(UnifiedModeingLanguage)
,簡稱UML。產(chǎn)生于90年代中期。它不僅統(tǒng)一了Booch、OMT和OOSE方法中的概念和表示法,而且對其作了進(jìn)一步擴展,最終成為在面向?qū)ο蠹夹g(shù)領(lǐng)域占主導(dǎo)地位的、并被大眾所接受的標(biāo)準(zhǔn)建模語言。UML不是一個開發(fā)過程,也不是一個方法,但允許任何一種開發(fā)過程和面向?qū)ο蠓椒ㄊ褂盟?。?5頁/共67頁類圖用來描述系統(tǒng)中的類及類和類之間的靜態(tài)關(guān)系。類的表示:例如:可訪問性通常有3種:公有的(public)私有的(private)
保護的(protected),分別用加號(+)、減號(-)和井號(#)表示。類名類的簡單表示類的完整表示對象模型表現(xiàn)了客觀世界實體對象的相互關(guān)系。通常使用UML提供的類圖來建立對象模型?!?對象模型類圖的基本符號第16頁/共67頁
類圖由類及類與類之間的關(guān)系組成。定義了類之后就可以定義類與類之間的各種關(guān)系了。類與類之間通常有關(guān)聯(lián)、泛化(繼承)、依賴和細(xì)化等4種關(guān)系。表示關(guān)系的符號第17頁/共67頁類1類2角色角色關(guān)聯(lián)名角色表示該類在這個關(guān)聯(lián)中的作用。如果沒有顯式標(biāo)出角色名,則意味著用類名作為角色名。重數(shù):該類有多少個對象與對方的一個對象連接。關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系。重數(shù)1、關(guān)聯(lián)第18頁/共67頁在表示關(guān)聯(lián)的直線兩端可以寫上重數(shù)(multiplicity),它表示該類有多少個對象與對方的一個對象連接。重數(shù)的表示方法通常有:0…1 表示0到1個對象0…*或* 表示0到多個對象1+或1…* 表示1到多個對象1…15 表示1到15個對象3 表示3個對象如果圖中未明確標(biāo)出關(guān)聯(lián)的重數(shù),則默認(rèn)重數(shù)是1。第19頁/共67頁公司董事會默認(rèn)關(guān)聯(lián)名是has(有),省略重數(shù)默認(rèn)1。人員董事會成員0,3..8*董事會每一個董事會沒有或者有3~8個董事會成員(有角色名,可以省略關(guān)聯(lián)名)(1)普通關(guān)聯(lián)——最常見的關(guān)聯(lián)關(guān)系。例如:第20頁/共67頁(2)遞歸關(guān)聯(lián)即一個類與它本身有關(guān)聯(lián)關(guān)系。例如:第21頁/共67頁(3)限定關(guān)聯(lián)也叫受限關(guān)聯(lián),兩個類及一個限定詞組成,限定詞是一種特定的屬性,用來有效地減少關(guān)聯(lián)的重數(shù)。在類圖中把限定詞放在關(guān)聯(lián)關(guān)系末端的一個小方框內(nèi)。限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的重數(shù)從一對多變成一對一,或從多對多簡化成多對一。第22頁/共67頁例如,某操作系統(tǒng)中一個目錄下有許多文件,一個文件僅屬于一個目錄,在一個目錄內(nèi)文件名確定了惟一一個文件。圖9.8利用限定詞“文件名”表示了目錄與文件之間的關(guān)系,可見,利用限定詞把一對多關(guān)系簡化成了一對一關(guān)系。圖9.8一個受限的關(guān)聯(lián)第23頁/共67頁限定提高了語義精確性,增強了查詢能力。在圖9.8中,限定的語法表明,文件名在其目錄內(nèi)是惟一的。因此,查找一個文件的方法就是,首先定下目錄,然后在該目錄內(nèi)查找指定的文件名。由于目錄加文件名可惟一地確定一個文件,因此,限定詞“文件名”應(yīng)該放在靠近目錄的那一端。第24頁/共67頁在一些情況下關(guān)聯(lián)可能需要記錄一些信息,但這些信息不能放在任何一個類中,可引入一個關(guān)聯(lián)類記錄這些信息。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。學(xué)生*選修*課程一個多對多關(guān)聯(lián)?!俺煽儭睂傩圆荒芊旁谌魏我环綄W(xué)生**課程選修成績創(chuàng)建一個關(guān)聯(lián)類來保存成績,關(guān)聯(lián)類與一般的類一樣,也有屬性、操作和關(guān)聯(lián)。學(xué)生*選修*成績課程與帶有關(guān)聯(lián)類的多對多關(guān)聯(lián)等價的兩個一對多關(guān)聯(lián)的圖(4)關(guān)聯(lián)類第25頁/共67頁整體類部分類整體類部分類共享聚集組合聚集2、聚集:組合是一種強類型的聚集,整體類和部分類共存亡,如果整體類被撤銷,部分類也不存在。表示“整體-部分”的特殊關(guān)聯(lián)例如:第26頁/共67頁(1)共享聚集如果在聚集關(guān)系中處于部分方的對象可同時參與多個處于整體方對象的構(gòu)成,則該聚集稱為共享聚集。例如,一個課題組包含許多成員,每個成員又可以是另一個課題組的成員,則課題組和成員之間是共享聚集關(guān)系,。(2)組合聚集如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失(或失去存在價值了),則該聚集稱為組合聚集(簡稱為組成)。例如,在屏幕上打開一個窗口,它就由文本框、列表框、按鈕和菜單組成,一旦關(guān)閉了窗口,各個組成部分也同時消失,窗口和它的組成部分之間存在著組合聚集關(guān)系。第27頁/共67頁3.泛化UML中的泛化關(guān)系就是通常所說的繼承關(guān)系,它是通用元素和具體元素之間的一種分類關(guān)系。具體元素完全擁有通用元素的信息,并且還可以附加一些其他信息。在UML中,用一端為空心三角形的連線表示泛化關(guān)系,三角形的頂角緊挨著通用元素。注意,泛化針對類型而不針對實例,一個類可以繼承另一個類,但一個對象不能繼承另一個對象。實際上,泛化關(guān)系指出在類與類之間存在“一般-特殊”關(guān)系。泛化可進(jìn)一步劃分成普通泛化和受限泛化。第28頁/共67頁一般類特殊類人員教師學(xué)生由一個超類和幾個直接子類構(gòu)成的結(jié)構(gòu)通常稱為泛化。表示一般-特殊關(guān)系或繼承關(guān)系。例如:(1)普通泛化第29頁/共67頁需要特別說明的是,沒有具體對象的類稱為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。圖示抽象類時,在類名下方附加一個標(biāo)記值{abstract},如圖9.12所示。圖下方的兩個折角矩形是模型元素“筆記”的符號,其中的文字是注釋,分別說明兩個子類的操作drive的功能。抽象類通常都具有抽象操作。抽象操作僅用來指定該類的所有子類應(yīng)具有哪些行為。抽象操作的圖示方法與抽象類相似,在操作標(biāo)記后面跟隨一個性質(zhì)串{abstract}。第30頁/共67頁圖9.12抽象類示例第31頁/共67頁與抽象類相反的類是具體類,具體類有自己的對象,并且該類的操作都有具體的實現(xiàn)方法。圖9.13給出一個比較復(fù)雜的類圖示例,這個例子綜合應(yīng)用了前面講過的許多概念和圖示符號。第32頁/共67頁圖9.13復(fù)雜類圖示例第33頁/共67頁(2)受限泛化可以給泛化關(guān)系附加約束條件,以進(jìn)一步說明該泛化關(guān)系的使用方法或擴充方法,這樣的泛化關(guān)系稱為受限泛化。預(yù)定義的約束有4種:多重、不相交、完全和不完全。這些約束都是語義約束。多重繼承指的是,一個子類可以同時多次繼承同一個上層基類,例如圖9.14中的水陸兩用類繼承了兩次交通工具類。與多重繼承相反的是不相交繼承,即一個子類不能多次繼承同一個基類(這樣的基類相當(dāng)于C++語言中的虛基類)。如果圖中沒有指定{多重}約束,則是不相交繼承,一般的繼承都是不相交繼承。第34頁/共67頁圖9.14多重繼承示例第35頁/共67頁完全繼承指的是父類的所有子類都已在類圖中窮舉出來了,圖示符號是指定{完全}約束。不完全繼承與完全繼承恰好相反,父類的子類并沒有都窮舉出來,隨著對問題理解的深入,可不斷補充和維護,這為日后系統(tǒng)的擴充和維護帶來很大方便。不完全繼承是一般情況下默認(rèn)的繼承關(guān)系。第36頁/共67頁4、依賴和細(xì)化(1)依賴關(guān)系描述兩個模型元素(類、用例等)之間的語義連接關(guān)系:其中一個模型元素是獨立的,另一個模型元素不是獨立的,它依賴于獨立的模型元素。獨立類不獨立版類標(biāo)簽:說明依賴的種類例如:友元關(guān)系使得類B的操作可以使用A類中私有的或保護的成員。第37頁/共67頁(2)細(xì)化關(guān)系當(dāng)對同一個事物在不同抽象層次上描述時,這些描述之間具有細(xì)化關(guān)系。假設(shè)兩個模型元素A和B描述同一個事物,它們的區(qū)別是抽象層次不同,如果B是在A的基礎(chǔ)上的更詳細(xì)的描述,則稱B細(xì)化了A,或稱A細(xì)化成了B。細(xì)化用來協(xié)調(diào)不同階段模型之間的關(guān)系,表示各個開發(fā)階段不同抽象層次的模型之間的相關(guān)性,常常用于跟蹤模型的演變BA第38頁/共67頁ClassNameAttributesMethodsClassClassNameAttributesMethodsClass-&-Object表示屬于該類的對象也可對類和對象用有區(qū)別的畫法:第39頁/共67頁動態(tài)模型表示瞬時的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對象模型中的對象的合法變化序列。一旦建立起對象模型之后,就需要考察對象的動態(tài)行為。所有對象都具有自己的生命周期(或稱為運行周期)。對一個對象來說,生命周期由許多階段組成,在每個特定階段中,都有適合該對象的一組運行規(guī)律和行為規(guī)則,用以規(guī)范該對象的行為。生命周期中的階段也就是對象的狀態(tài)。動態(tài)模型:表示系統(tǒng)瞬時的控制性質(zhì)§5動態(tài)模型第40頁/共67頁狀態(tài)1do/活動1狀態(tài)2do/活動2事件[條件]/動作其中:狀態(tài)內(nèi)部的“活動”不引起狀態(tài)轉(zhuǎn)移;箭頭上的“動作”指狀態(tài)轉(zhuǎn)移時要執(zhí)行的動作。注:當(dāng)描述循環(huán)運行過程時,通常不關(guān)心是怎樣啟動的。三要素:①事件:引發(fā)object狀態(tài)改變的控制信息(瞬時)。②狀態(tài):即
object的
attributes所處的情形(可持續(xù))。③活動:Object要達(dá)到某種status所做的操作(耗時)。狀態(tài)圖第41頁/共67頁通常,用UML提供的狀態(tài)圖來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對象的行為(對事件的響應(yīng))。每個類的動態(tài)行為用一張狀態(tài)圖來描繪,各個類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動態(tài)模型。也就是說,動態(tài)模型是基于事件共享而互相關(guān)聯(lián)的一組狀態(tài)圖的集合。第42頁/共67頁閑置撥號通話斷線撥號音do:響撥號音超時do:響蜂鳴音存儲的信息do:播放信息接通中do:試接通振鈴do:振鈴忙音do:響忙音拿起聽筒數(shù)字?jǐn)?shù)字有效號碼已接通受話人回話受話人掛斷電話掛斷電話超時掛斷電話超時無效號碼信息播完占線例:電話的狀態(tài)圖第43頁/共67頁UML提供的用例圖也是建立功能模型的強有力工具。在UML中把用用例圖建立起來的系統(tǒng)模型稱為用例模型,一個用例模型由若干幅用例圖組成?!?功能模型功能模型:表明系統(tǒng)應(yīng)該做什么通常的表示方法:數(shù)據(jù)流圖(DFD)用例圖僅僅從參與者使用系統(tǒng)的角度描述系統(tǒng),不反映內(nèi)部的處理方式。因此用例圖定義的是系統(tǒng)的功能需求。其主要目的是以一種可視化的方式理解系統(tǒng)的功能需求。
一幅用例圖包含的模型元素有系統(tǒng)、行為者、用例及用例之間的關(guān)系。第44頁/共67頁用例建模的主要步驟:首先定義一個系統(tǒng);并在該系統(tǒng)中確定執(zhí)行者;確定用例,描述每一個用例;確定關(guān)系(包括用例與執(zhí)行者之間的關(guān)系,執(zhí)行者之間的關(guān)系,用例之間的關(guān)系);最后確認(rèn)所建的模型。第45頁/共67頁1.系統(tǒng)系統(tǒng)被看作是一個提供用例的黑盒子,內(nèi)部如何工作、用例如何實現(xiàn),這些對于建立用例模型來說都是不重要的。代表系統(tǒng)的方框的邊線表示系統(tǒng)的邊界,用于劃定系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。描述該系統(tǒng)功能的用例置于方框內(nèi),代表外部實體的行為者置于方框外。9.6.1用例圖第46頁/共67頁例如:第47頁/共67頁簽定一份保險單客戶保險銷售人員銷售統(tǒng)計客戶統(tǒng)計某保險業(yè)務(wù)的用例圖又如:第48頁/共67頁2.用例一個用例是可以被行為者感受到的、系統(tǒng)的一個完整的功能。在UML中把用例定義成系統(tǒng)完成的一系列動作,動作的結(jié)果能被特定的行為者察覺到。這些動作除了完成系統(tǒng)內(nèi)部的計算與工作外,還包括與一些行為者的通信。用例通過關(guān)聯(lián)與行為者連接,關(guān)聯(lián)指出一個用例與哪些行為者交互,這種交互是雙向的。用例具有下述特征:(1)用例代表某些用戶可見的功能,實現(xiàn)一個具體的用戶目標(biāo);第49頁/共67頁(2)用例總是被行為者啟動的,并向行為者提供可識別的值;(3)用例必須是完整的。注意,用例是一個類,它代表一類功能而不是使用該功能的某個具體實例。用例的實例是系統(tǒng)的一種實際使用方法,通常把用例的實例稱為腳本。腳本是系統(tǒng)的一次具體執(zhí)行過程,例如,在自動售貨機系統(tǒng)中,張三投入硬幣購買礦泉水,系統(tǒng)收到錢后把礦泉水送出來,上述過程就是一個腳本;李四投幣買可樂,但是可樂已賣完了,于是系統(tǒng)給出提示信息并把錢退還給李四,這個過程是另一個腳本。第50頁/共67頁3.行為者行為者是指與系統(tǒng)交互的人或其他系統(tǒng),它代表外部實體。使用用例并且與系統(tǒng)交互的任何人或物都是行為者。行為者代表一種角色,而不是某個具體的人或物。事實上,一個具體的人可以充當(dāng)多種不同角色。第51頁/共67頁在用例圖中用直線連接行為者和用例,表示兩者之間交換信息,稱為通信聯(lián)系。行為者觸發(fā)(激活)用例,并與用例交換信息。單個行為者可與多個用例聯(lián)系;反之,一個用例也可與多個行為者聯(lián)系。對于同一個用例而言,不同行為者起的作用也不同??梢园研袨檎叻殖芍餍袨檎吆透毙袨檎撸€可分成主動行為者和被動行為者。實踐表明,行為者對確定用例是非常有用的。面對一個大型、復(fù)雜的系統(tǒng),要列出用例清單往往很困難,可以先列出行為者清單,再針對每個行為者列出它的用例。這樣做可以比較容易地建立起用例模型。第52頁/共67頁4.用例之間的關(guān)系UML用例之間主要有擴展和使用兩種關(guān)系,它們是泛化關(guān)系的兩種不同形式。(1)擴展關(guān)系向一個用例中添加一些動作后構(gòu)成了另一個用例,這兩個用例之間的關(guān)系就是擴展關(guān)系,后者繼承前者的一些行為,通常把后者稱為擴展用例。例如,在自動售貨機系統(tǒng)中,“售貨”是一個基本的用例,如果顧客購買罐裝飲料,售貨功能完成得很順利,但是,如果顧客要購買用紙杯裝的散裝飲料,則不能執(zhí)行該用例提供的常規(guī)動作,而要做些改動。第53頁/共67頁我們可以修改售貨用例,使之既能提供售罐裝飲料的常規(guī)動作又能提供售散裝飲料的非常規(guī)動作,但是,這將把該用例與一些特殊的判斷和邏輯混雜在一起,使正常的流程晦澀難懂。圖9.18中把常規(guī)動作放在“售貨”用例中,而把非常規(guī)動作放置于“售散裝飲料”用例中,這兩個用例之間的關(guān)系就是擴展關(guān)系。在用例圖中,用例之間的擴展關(guān)系圖示為帶版類《擴展》的泛化關(guān)系。第54頁/共67頁圖9.18含擴展和使用關(guān)系的用例圖第55頁/共67頁(2)使用關(guān)系當(dāng)一個用例使用另一個用例時,這兩個用例之間就構(gòu)成了使用關(guān)系。一般說來,如果在若干個用例中有某些相同的動作,則可以把這些相同的動作提取出來單獨構(gòu)成一個用例(稱為抽象用例)。這樣,當(dāng)某個用例使用該抽象用例時,就好像這個用例包含了抽象用例中的所有動作。在用例圖中,用例之間的使用關(guān)系用帶版類《使用》的泛化關(guān)系表示,如圖9.18所示。第56頁/共67頁請注意擴展與使用之間的異同:這兩種關(guān)系都意味著從幾個用例中抽取那些公共的行為并放入一個單獨的用例中,而這個用例被其他用例使用或擴展,但是,使用和擴展的目的是不同的。通常在描述一般行為的變化時采用擴展關(guān)系;在兩個或多個用例中出現(xiàn)重復(fù)描述又想避免這種重復(fù)時,可以采用使用關(guān)系。第57頁/共67頁幾乎在任何情況下都需要使用用例,通過用例可以獲取用戶需求,規(guī)劃和控制項目。獲取用例是需求分析階段的主要工作之一,而且是首先要做的工作。大部分用例將在項目的需求分析階段產(chǎn)生,并且隨著開發(fā)工作的深入還會發(fā)現(xiàn)更多用例,這些新發(fā)現(xiàn)的用例都應(yīng)及時補充進(jìn)已有的用例集中。用例集中的每個用例都是對系統(tǒng)的一個潛在的需求。9.6.2用例建模第58頁/共67頁一個用例模型由若干幅用例圖組成。創(chuàng)建用例模型的工作包括:定義系統(tǒng),尋找行為者和用例,描述用例,定義用例之間的關(guān)系,確認(rèn)模型。其中,尋找行為者和用例是關(guān)鍵。1.尋找行為者為獲取用例首先要找出系統(tǒng)的行為者,可以通過請系統(tǒng)的用戶回答一些問題的辦法來發(fā)現(xiàn)行為者。下述問題有助于發(fā)現(xiàn)行為者:誰將使用系統(tǒng)的主要功能(主行為者)?誰需要借助系統(tǒng)的支持來完成日常工作?誰來維護和管理系統(tǒng)(副行為者)?系統(tǒng)控制哪些硬件設(shè)備?第59頁/共67頁系統(tǒng)需要與哪些其他系統(tǒng)交互?哪些人或系統(tǒng)對本系統(tǒng)產(chǎn)生的結(jié)果(值)感興趣?2.尋找用例一旦找到了行為者,就可以通過請每個行為者回答下述問題來獲取用例:行為者需要系統(tǒng)提供哪些功能?行為者自身需要做什么?行為者是否需要讀取、創(chuàng)建、刪除、修改或存儲系統(tǒng)中的某類
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《嬰兒捂熱綜合癥》課件
- 2024年北師大版七年級地理上冊階段測試試卷含答案
- 文化旅游用地租賃書
- 健康與安全管理辦法服務(wù)業(yè)篇
- 地?zé)岚l(fā)電站施工合同樣本
- 2024年上外版八年級科學(xué)下冊階段測試試卷
- 企業(yè)人事管理制度的標(biāo)準(zhǔn)化建設(shè)
- 云計算項目招投標(biāo)指南
- 辦公樓防火門施工協(xié)議
- 2024年新野縣人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 注塑領(lǐng)班作業(yè)指導(dǎo)書
- 廣東省異地就醫(yī)備案登記表
- 光纜布線工程施工組織設(shè)計方案
- 食堂日??己嗽u分表(后勤)
- 高頻淬火設(shè)備安全操作規(guī)程
- 閘閥的操作力矩參考表
- 浙江省市政工程安全臺賬完整
- 環(huán)氧樹脂參考配方大全
- 花木綠化養(yǎng)護考核評分表
- #2鍋爐爐膛內(nèi)腳手架搭設(shè)及拆除施工方案
- 110KV變電站工程創(chuàng)優(yōu)監(jiān)理實施細(xì)則
評論
0/150
提交評論