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