面向?qū)ο蠓椒▽W(xué)引論_第1頁(yè)
面向?qū)ο蠓椒▽W(xué)引論_第2頁(yè)
面向?qū)ο蠓椒▽W(xué)引論_第3頁(yè)
面向?qū)ο蠓椒▽W(xué)引論_第4頁(yè)
面向?qū)ο蠓椒▽W(xué)引論_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第9章章 面向?qū)ο蠓椒▽W(xué)引論面向?qū)ο蠓椒▽W(xué)引論(Object-Oriented Methodology) 本章介紹面向?qū)ο蠓椒▽W(xué)的概述、基本概念,以及本章介紹面向?qū)ο蠓椒▽W(xué)的概述、基本概念,以及在用面向?qū)ο蠓椒▽W(xué)開(kāi)發(fā)軟件過(guò)程中通常建立的在用面向?qū)ο蠓椒▽W(xué)開(kāi)發(fā)軟件過(guò)程中通常建立的3 3種模種模型:對(duì)象模型、動(dòng)態(tài)模型和功能模型。型:對(duì)象模型、動(dòng)態(tài)模型和功能模型。 瀑布模型的缺點(diǎn)是僵化,要求:生命周期各階段間遵守嚴(yán)格瀑布模型的缺點(diǎn)是僵化,要求:生命周期各階段間遵守嚴(yán)格的順序;預(yù)先定義并的順序;預(yù)先定義并“凍結(jié)凍結(jié)”軟件需求。軟件需求。 SA-SD-SP 技術(shù)的缺點(diǎn):本質(zhì)上是功能分解,以實(shí)現(xiàn)功能的技

2、術(shù)的缺點(diǎn):本質(zhì)上是功能分解,以實(shí)現(xiàn)功能的過(guò)過(guò)程程為中心,而用戶的需求變化主要是針對(duì)為中心,而用戶的需求變化主要是針對(duì)功能功能的。這就使基于過(guò)的。這就使基于過(guò)程的設(shè)計(jì)程的設(shè)計(jì)不易被理解不易被理解;且;且功能功能變化往往引起結(jié)構(gòu)變化較大,變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定穩(wěn)定性不好性不好。數(shù)據(jù)與操作分開(kāi)處理,可能造成軟構(gòu)件對(duì)具體應(yīng)用環(huán)境。數(shù)據(jù)與操作分開(kāi)處理,可能造成軟構(gòu)件對(duì)具體應(yīng)用環(huán)境的依賴,的依賴,可重用性可重用性(reusability)較差較差。1. OOM概述概述 盡可能模擬人類(lèi)習(xí)慣的思維方式,即盡可能模擬人類(lèi)習(xí)慣的思維方式,即問(wèn)題域問(wèn)題域與與求解域求解域在結(jié)構(gòu)在結(jié)構(gòu)上盡可能一致。與傳統(tǒng)方法相

3、反,上盡可能一致。與傳統(tǒng)方法相反,OOM以數(shù)據(jù)或信息為主線,以數(shù)據(jù)或信息為主線,把把數(shù)據(jù)和處理結(jié)合數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體構(gòu)成統(tǒng)一體 對(duì)象。這時(shí)程序不再是一系對(duì)象。這時(shí)程序不再是一系列工作在數(shù)據(jù)上的函數(shù)集合,而是相互協(xié)作又彼此獨(dú)立的列工作在數(shù)據(jù)上的函數(shù)集合,而是相互協(xié)作又彼此獨(dú)立的對(duì)象對(duì)象的集合。的集合。 OOM的四要點(diǎn):的四要點(diǎn):對(duì)象對(duì)象(object):客觀世界由:客觀世界由對(duì)象對(duì)象組成。組成。 類(lèi)類(lèi) (class) :對(duì)象對(duì)象可劃分為可劃分為類(lèi)類(lèi);單個(gè)對(duì)象可視為某一類(lèi)的;單個(gè)對(duì)象可視為某一類(lèi)的實(shí)例實(shí)例 (instance)。 OOM的特點(diǎn):的特點(diǎn): class Post_office p

4、rivate : loc_type location ; emp_type employee ; public : void send (req_type request, money_type payment); void sell (int goods, money_type payment) ; main ( ) Post_office My_PO ; req_type My_request ; money_type My_payment ; My_PO.Send ( My_request, My_payment) ; 1. OOM概述概述例如例如: 繼承繼承(inheritance):

5、類(lèi)可分層,下層:類(lèi)可分層,下層子類(lèi)子類(lèi)與上層與上層父類(lèi)父類(lèi)有相同有相同特征,稱為特征,稱為繼承繼承。 消息消息(message):對(duì)象間只能通過(guò)發(fā)送:對(duì)象間只能通過(guò)發(fā)送消息消息進(jìn)行聯(lián)系,外界不進(jìn)行聯(lián)系,外界不能處理能處理對(duì)象對(duì)象的內(nèi)部數(shù)據(jù),只能通過(guò)的內(nèi)部數(shù)據(jù),只能通過(guò)消息消息請(qǐng)求請(qǐng)求它進(jìn)行處理(如果它提供相應(yīng)消息的話)。它進(jìn)行處理(如果它提供相應(yīng)消息的話)。1. OOM概述概述OOM(Object-Oriented ) = Object+Classes+Inheritance+Communication with messagesObject-based = Object+Communicat

6、ion with messagesClass-based = Object+Classes+Communication with messagesOOM:以:以object 為核心,強(qiáng)調(diào)對(duì)現(xiàn)實(shí)概念的模擬而不強(qiáng)調(diào)算法。為核心,強(qiáng)調(diào)對(duì)現(xiàn)實(shí)概念的模擬而不強(qiáng)調(diào)算法。“面向?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方面向?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方式建立問(wèn)題域的模型,開(kāi)發(fā)出盡可能直觀、自然地表現(xiàn)求式建立問(wèn)題域的模型,開(kāi)發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)解方法的軟件系統(tǒng)”。 Class:由特殊到一般的歸納:由特殊到一般的歸納(induction) Inheritance:由一般到

7、特殊的演繹:由一般到特殊的演繹(deduction)2、面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)、面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)傳統(tǒng)方法:面向過(guò)程設(shè)計(jì),以算法為核心,數(shù)據(jù)與操作分離,不傳統(tǒng)方法:面向過(guò)程設(shè)計(jì),以算法為核心,數(shù)據(jù)與操作分離,不易理解。易理解。1. OOM概述概述 與人類(lèi)習(xí)慣的思維方式一致與人類(lèi)習(xí)慣的思維方式一致OOM:以:以object模擬實(shí)體,需求變化不會(huì)引起結(jié)構(gòu)的整體變化,模擬實(shí)體,需求變化不會(huì)引起結(jié)構(gòu)的整體變化,因?yàn)閷?shí)體相對(duì)穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。因?yàn)閷?shí)體相對(duì)穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。 面向?qū)ο筌浖€(wěn)定性好面向?qū)ο筌浖€(wěn)定性好傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。傳統(tǒng)方法:通

8、過(guò)建立標(biāo)準(zhǔn)函數(shù)庫(kù)來(lái)重用軟構(gòu)件。但標(biāo)準(zhǔn)函數(shù)缺少傳統(tǒng)方法:通過(guò)建立標(biāo)準(zhǔn)函數(shù)庫(kù)來(lái)重用軟構(gòu)件。但標(biāo)準(zhǔn)函數(shù)缺少必要的必要的“柔性柔性”,難以適應(yīng)不同場(chǎng)合的不同需要。,難以適應(yīng)不同場(chǎng)合的不同需要。OOM:一個(gè):一個(gè)class所有的所有的 instances 都可重用它的代碼;由都可重用它的代碼;由 inheritance 派生出的新的派生出的新的 class 可重用其父類(lèi)的代碼,可重用其父類(lèi)的代碼,并且可以修改、擴(kuò)充而不影響其父類(lèi)的使用。并且可以修改、擴(kuò)充而不影響其父類(lèi)的使用。1. OOM概述概述 面向?qū)ο筌浖芍赜眯院妹嫦驅(qū)ο筌浖芍赜眯院脗鹘y(tǒng)方法:在許多中、小規(guī)模軟件開(kāi)發(fā)中取得成功。傳統(tǒng)方法:在許多中

9、、小規(guī)模軟件開(kāi)發(fā)中取得成功。OOM:構(gòu)成軟件系統(tǒng)的每個(gè)對(duì)象有自己的數(shù)據(jù)、操作、功能:構(gòu)成軟件系統(tǒng)的每個(gè)對(duì)象有自己的數(shù)據(jù)、操作、功能和用途。可以把大型軟件產(chǎn)品分解成一系列本質(zhì)上相和用途。可以把大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品,從而降低技術(shù)難度,便于管理。互獨(dú)立的小產(chǎn)品,從而降低技術(shù)難度,便于管理。 較易開(kāi)發(fā)大型軟件產(chǎn)品較易開(kāi)發(fā)大型軟件產(chǎn)品穩(wěn)定性好:軟件功能需求的變化不牽動(dòng)全局,只需局部修穩(wěn)定性好:軟件功能需求的變化不牽動(dòng)全局,只需局部修改;改;Class 獨(dú)立性強(qiáng):只要修改不涉及獨(dú)立性強(qiáng):只要修改不涉及class的對(duì)外接口,則內(nèi)部的對(duì)外接口,則內(nèi)部修改完全不影響外部調(diào)用;修改完全不

10、影響外部調(diào)用;Inheritance和多態(tài)性和多態(tài)性(polymorphism)使其很容易被修改和擴(kuò)使其很容易被修改和擴(kuò)充;充;容易理解;容易理解;OOM:從以下幾方面改善了可維護(hù)性:從以下幾方面改善了可維護(hù)性 有這一條就什么都好辦了!有這一條就什么都好辦了! 容易測(cè)試、調(diào)試。容易測(cè)試、調(diào)試。這一點(diǎn)還可商榷這一點(diǎn)還可商榷 面向?qū)ο筌浖删S護(hù)性好面向?qū)ο筌浖删S護(hù)性好1. OOM概述概述傳統(tǒng)方法:可維護(hù)性是最令人頭痛的問(wèn)題。傳統(tǒng)方法:可維護(hù)性是最令人頭痛的問(wèn)題。注:注:OOM并不是減少了開(kāi)發(fā)時(shí)間并不是減少了開(kāi)發(fā)時(shí)間,而是通過(guò)提高可重用性、可維護(hù),而是通過(guò)提高可重用性、可維護(hù)性,進(jìn)行擴(kuò)充和修改的容

11、易程度等,從長(zhǎng)遠(yuǎn)角度性,進(jìn)行擴(kuò)充和修改的容易程度等,從長(zhǎng)遠(yuǎn)角度改進(jìn)了軟件的改進(jìn)了軟件的質(zhì)量質(zhì)量。3、面向?qū)ο蟮能浖^(guò)程、面向?qū)ο蟮能浖^(guò)程 任何開(kāi)發(fā)方法學(xué)都必須完成任何開(kāi)發(fā)方法學(xué)都必須完成的工作要素:的工作要素:“做什么做什么”、“怎怎樣做樣做”、“實(shí)現(xiàn)實(shí)現(xiàn)”和和“完善完善”。 迭代在迭代在OOM中更常見(jiàn)更容易實(shí)現(xiàn)中更常見(jiàn)更容易實(shí)現(xiàn) 開(kāi)發(fā)重點(diǎn)應(yīng)該是生命周期的分析階開(kāi)發(fā)重點(diǎn)應(yīng)該是生命周期的分析階段段 生命周期個(gè)階段的區(qū)分并不重要、生命周期個(gè)階段的區(qū)分并不重要、不明顯不明顯 整個(gè)開(kāi)發(fā)過(guò)程中使用統(tǒng)一的軟件概整個(gè)開(kāi)發(fā)過(guò)程中使用統(tǒng)一的軟件概念念“對(duì)象對(duì)象” 整個(gè)開(kāi)發(fā)過(guò)程吻合一致,是整個(gè)開(kāi)發(fā)過(guò)程吻合一致,

12、是“無(wú)縫無(wú)縫”連接的連接的 為避免開(kāi)發(fā)過(guò)程過(guò)分無(wú)序,應(yīng)以一為避免開(kāi)發(fā)過(guò)程過(guò)分無(wú)序,應(yīng)以一線性過(guò)程為總目標(biāo)。線性過(guò)程為總目標(biāo)。1. OOM概述概述進(jìn)一步開(kāi)發(fā)進(jìn)一步開(kāi)發(fā)運(yùn)行狀態(tài)運(yùn)行狀態(tài)集成和測(cè)試階段集成和測(cè)試階段編碼階段編碼階段面向?qū)ο笤O(shè)計(jì)階段面向?qū)ο笤O(shè)計(jì)階段面向?qū)ο蠓治鲭A段面向?qū)ο蠓治鲭A段陳述需求階段陳述需求階段維護(hù)期維護(hù)期f1f2 f3 fifnfi(X)Sgi(X,S)S輸輸出出輸輸出出2. 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?對(duì)象是基本運(yùn)行實(shí)體,由描述其屬性的數(shù)據(jù)以及可以對(duì)這些對(duì)象是基本運(yùn)行實(shí)體,由描述其屬性的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體。數(shù)據(jù)施加的所有操作封裝在一

13、起構(gòu)成的統(tǒng)一體。1、對(duì)象、對(duì)象(Object)Object : = ID + Method + Attribute + Message = ID,MS,DS,MI 2. OO的概念的概念Object的特點(diǎn):的特點(diǎn): 以數(shù)據(jù)為中心以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無(wú)關(guān)的操作;,不設(shè)與數(shù)據(jù)無(wú)關(guān)的操作; Object主動(dòng)處理主動(dòng)處理而不而不 被動(dòng)地等待被處理,外部只能通過(guò)被動(dòng)地等待被處理,外部只能通過(guò)message請(qǐng)求操作;請(qǐng)求操作; 具有黑盒性具有黑盒性:外部操作時(shí),無(wú)須知道該:外部操作時(shí),無(wú)須知道該object內(nèi)部的數(shù)據(jù)結(jié)內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;構(gòu)及算法; 具有并行性具有并行性:不同:不同object各自獨(dú)

14、立地處理自身數(shù)據(jù),彼此間各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過(guò)傳遞僅通過(guò)傳遞message完成通信;完成通信; 模塊獨(dú)立性好模塊獨(dú)立性好:內(nèi)聚強(qiáng)(:內(nèi)聚強(qiáng)( )、耦合弱()、耦合弱( )class 中定義的數(shù)據(jù),中定義的數(shù)據(jù),object 有自己特有的屬性值。有自己特有的屬性值。7、封裝、封裝(Encapsulation)2、類(lèi)、類(lèi)(Class)2. OO的概念的概念具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象。具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象。3、實(shí)例、實(shí)例(Instance)某個(gè)某個(gè)class描述的一個(gè)具體對(duì)象。描述的一個(gè)具體對(duì)象。4、消息、消息(Message) 要求對(duì)象執(zhí)行在定義它的那個(gè)類(lèi)中

15、所定義的某個(gè)操作的規(guī)格說(shuō)要求對(duì)象執(zhí)行在定義它的那個(gè)類(lèi)中所定義的某個(gè)操作的規(guī)格說(shuō)明。明。Message: = object_ID. method_ID (parameter(s)5、方法、方法(Method) object能做的操作,亦稱為能做的操作,亦稱為service 、responsibility, 在在 class 中須中須定義相應(yīng)的代碼。定義相應(yīng)的代碼。6、屬性、屬性(Attribute) 把數(shù)據(jù)和實(shí)現(xiàn)操作集中放在對(duì)象內(nèi)部,對(duì)外界隱藏了實(shí)現(xiàn)細(xì)節(jié)。把數(shù)據(jù)和實(shí)現(xiàn)操作集中放在對(duì)象內(nèi)部,對(duì)外界隱藏了實(shí)現(xiàn)細(xì)節(jié)。Class 中國(guó)人中國(guó)人中國(guó)人中國(guó)人 Attributes中國(guó)人中國(guó)人 Methods

16、張山張山 (instance) Class 中國(guó)人中國(guó)人 張山的張山的 AttributesClass 重慶重慶人人 (子類(lèi)子類(lèi)) 重慶人重慶人 Attributes 重慶人重慶人 Methods Class 中國(guó)人中國(guó)人李士李士 (instance) 中國(guó)人李士的中國(guó)人李士的 Attributes 重慶人李士的重慶人李士的 Attributes Class 重慶人重慶人例:例:2. OO的概念的概念8、繼承、繼承(Inheritance) 子類(lèi)自動(dòng)共享父類(lèi)的子類(lèi)自動(dòng)共享父類(lèi)的attributes 和和methods ,而不必重復(fù)定義。,而不必重復(fù)定義。Inheritance的特點(diǎn):的特點(diǎn):

17、若若重慶人重慶人的的 methods中有與中有與中國(guó)人中國(guó)人的同名,則李士執(zhí)行該的同名,則李士執(zhí)行該 method 時(shí)以時(shí)以重慶人重慶人為準(zhǔn),不執(zhí)行為準(zhǔn),不執(zhí)行中國(guó)人中國(guó)人中定義的同名中定義的同名 method。 講官話,這叫做講官話,這叫做“低層性質(zhì)低層性質(zhì)override高層性質(zhì)高層性質(zhì)”講土話,這叫做講土話,這叫做“縣官不如現(xiàn)管縣官不如現(xiàn)管” 傳遞性傳遞性(transitivity):AB、BC AC 一個(gè)一個(gè) class 繼承了上層全部繼承了上層全部 classes 的一切性質(zhì)。的一切性質(zhì)。 一個(gè)子類(lèi)只一個(gè)子類(lèi)只 有有 一一 個(gè)父類(lèi)稱為單個(gè)父類(lèi)稱為單 繼繼 承承 (single inh

18、eritance), 一個(gè)一個(gè)子類(lèi)可有多個(gè)父類(lèi)稱為多重繼承子類(lèi)可有多個(gè)父類(lèi)稱為多重繼承(multiple inheritance). 2. OO的概念的概念FemaleChineseScholarI例:例:注意:注意:multiple inheritance 在定在定義中應(yīng)避免二義性義中應(yīng)避免二義性(ambiguity),即二個(gè)父類(lèi)中定義重名,但各即二個(gè)父類(lèi)中定義重名,但各具不同性質(zhì)。具不同性質(zhì)。 修改與擴(kuò)充可以很容易地通過(guò)派生子類(lèi)來(lái)完成。修改與擴(kuò)充可以很容易地通過(guò)派生子類(lèi)來(lái)完成。9、多態(tài)性、多態(tài)性(Polymorphism) 不同層次的不同層次的 classes 可共享一個(gè)可共享一個(gè)meth

19、od名,但按各自的方式來(lái)名,但按各自的方式來(lái)實(shí)現(xiàn)這種實(shí)現(xiàn)這種 method。 C+ 中定義了虛函數(shù)中定義了虛函數(shù)(virtual function)來(lái)實(shí)現(xiàn)這一功能。即一來(lái)實(shí)現(xiàn)這一功能。即一個(gè)個(gè)method有多個(gè)版本,運(yùn)行時(shí)才決定執(zhí)行哪一個(gè)。故亦稱為有多個(gè)版本,運(yùn)行時(shí)才決定執(zhí)行哪一個(gè)。故亦稱為動(dòng)態(tài)動(dòng)態(tài)聯(lián)編聯(lián)編(dynamic binding)或或滯后聯(lián)編滯后聯(lián)編(late binding)2. OO的概念的概念10、重載、重載(Overloading) 對(duì)相同的函數(shù)名或運(yùn)算符實(shí)現(xiàn)不同的函數(shù)算法或運(yùn)算。分為對(duì)相同的函數(shù)名或運(yùn)算符實(shí)現(xiàn)不同的函數(shù)算法或運(yùn)算。分為函數(shù)重載和運(yùn)算符重載兩種。函數(shù)重載和運(yùn)算

20、符重載兩種。double avg (const double a , int size) ;double avg (const int a , int size) ;double avg (const double a , int size) ; double sum = 0.0 ; for ( int i = 0; i size; +i ) sum += ai ; return ( sum / size ) ; double avg (const int a , int size) ; int sum = 0 ; for ( int i = 0; i size; +i ) sum += ai

21、 ; return ( (double) sum / size ) ; main() int k3 = 1, 2, 3 ; double x3 = 1.1, 2.2, 3.3 ; cout avg(k, 3) “ int average n” ; cout avg(x, 3) “ double average n” ; Function (or parameter) overloading :不同函數(shù)共用一個(gè)名字,而調(diào)用不同函數(shù)共用一個(gè)名字,而調(diào)用參數(shù)的特征不同。參數(shù)的特征不同。2. OO的概念的概念例:例: Operator overloading : 同一運(yùn)算符同一運(yùn)算符 (operato

22、r)作用于不作用于不同類(lèi)型的操作數(shù)同類(lèi)型的操作數(shù) (operand) 。 在編譯在編譯(compile)階段就決定了階段就決定了使用類(lèi)型及執(zhí)行代碼,故亦稱為使用類(lèi)型及執(zhí)行代碼,故亦稱為靜態(tài)聯(lián)編?kù)o態(tài)聯(lián)編 (static binding)或或先前先前聯(lián)編聯(lián)編 (early binding) 。3. 面向?qū)ο蠼C嫦驅(qū)ο蠼bject-Oriented Modeling 面向?qū)ο蠓椒ㄗ罨镜脑瓌t是:按照人們習(xí)慣的思維方式,面向?qū)ο蠓椒ㄗ罨镜脑瓌t是:按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問(wèn)題域的模型,進(jìn)而開(kāi)發(fā)出盡可能自然用面向?qū)ο笥^點(diǎn)建立問(wèn)題域的模型,進(jìn)而開(kāi)發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。

23、地表現(xiàn)求解方法的軟件。 模型模型是為了理解事物而對(duì)事物作出的一種抽象,是對(duì)事物的是為了理解事物而對(duì)事物作出的一種抽象,是對(duì)事物的一種無(wú)歧義的書(shū)面描述。一種無(wú)歧義的書(shū)面描述。 影響較大的面向?qū)ο蠹夹g(shù):影響較大的面向?qū)ο蠹夹g(shù): Coad/Yourdon方法方法 Booch方法方法 OMT(Object Modeling Technique)技術(shù))技術(shù) UML(Unified Modeling Language)和)和RUP(Rational Unified Process)OMT方法建立三種模型:方法建立三種模型: 描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對(duì)象模型描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對(duì)象模型(object model).

24、 描述系統(tǒng)控制結(jié)構(gòu)的動(dòng)態(tài)模型描述系統(tǒng)控制結(jié)構(gòu)的動(dòng)態(tài)模型(dynamic model). 描述系統(tǒng)功能的功能模型描述系統(tǒng)功能的功能模型(function model). 三種模型從三種模型從3個(gè)不同但又密切相關(guān)的角度模擬目標(biāo)系統(tǒng),從不個(gè)不同但又密切相關(guān)的角度模擬目標(biāo)系統(tǒng),從不同側(cè)面反映了系統(tǒng)的實(shí)質(zhì)性內(nèi)容,綜合起來(lái)全面地反映對(duì)目標(biāo)系同側(cè)面反映了系統(tǒng)的實(shí)質(zhì)性內(nèi)容,綜合起來(lái)全面地反映對(duì)目標(biāo)系統(tǒng)的需求。統(tǒng)的需求。 三種模型都是必不可少的,其中的對(duì)象模型是最重要、最基本、三種模型都是必不可少的,其中的對(duì)象模型是最重要、最基本、最核心的。最核心的。3. 面向?qū)ο蠼C嫦驅(qū)ο蠼?. 面向?qū)ο蠼C嫦驅(qū)ο蠼?/p>

25、1、對(duì)象模型、對(duì)象模型(Object Model,OM)Class NameAttributesMethodsClass 對(duì)象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的對(duì)象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)數(shù)據(jù)”性質(zhì),是對(duì)模性質(zhì),是對(duì)模擬客觀世界實(shí)體的對(duì)象及對(duì)象彼此間的關(guān)系的映射,描述了系統(tǒng)擬客觀世界實(shí)體的對(duì)象及對(duì)象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。的靜態(tài)結(jié)構(gòu)。 建立對(duì)象模型的目標(biāo)是從客觀世界中提煉出對(duì)具體應(yīng)用有價(jià)值建立對(duì)象模型的目標(biāo)是從客觀世界中提煉出對(duì)具體應(yīng)用有價(jià)值的概念。的概念。(1)類(lèi)圖的基本符號(hào))類(lèi)圖的基本符號(hào) 通常使用通常使用UML提供的提供的類(lèi)圖類(lèi)圖來(lái)建立對(duì)象模型,來(lái)建立對(duì)象模型,

26、UML中類(lèi)的實(shí)際含中類(lèi)的實(shí)際含義是義是“一個(gè)類(lèi)及屬于該類(lèi)的對(duì)象一個(gè)類(lèi)及屬于該類(lèi)的對(duì)象”。 類(lèi)類(lèi) 屬性屬性 服務(wù)服務(wù)可見(jiàn)性可見(jiàn)性 屬性名:類(lèi)型名屬性名:類(lèi)型名=初值初值性質(zhì)串性質(zhì)串可見(jiàn)性可見(jiàn)性 操作名操作名(參數(shù)表參數(shù)表):返回值類(lèi)型:返回值類(lèi)型性質(zhì)串性質(zhì)串注:注:可見(jiàn)性有可見(jiàn)性有3種種+(public)、-(private)、#(protected) 參數(shù)名:類(lèi)型名參數(shù)名:類(lèi)型名=默認(rèn)值默認(rèn)值例如:例如:圓圓 圓心坐標(biāo)圓心坐標(biāo) 半徑半徑 顯示顯示 隱藏隱藏 3. 面向?qū)ο蠼C嫦驅(qū)ο蠼0霃剑喊霃剑篿nteger1 關(guān)聯(lián)關(guān)系表示兩類(lèi)對(duì)象之間存在著某種語(yǔ)義上的聯(lián)系,即對(duì)象關(guān)聯(lián)關(guān)系表示兩類(lèi)對(duì)象之間

27、存在著某種語(yǔ)義上的聯(lián)系,即對(duì)象之間有相互作用、相互依靠的關(guān)系。之間有相互作用、相互依靠的關(guān)系。(2)表示關(guān)系的符號(hào))表示關(guān)系的符號(hào)3. 面向?qū)ο蠼C嫦驅(qū)ο蠼?關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系校校 長(zhǎng)長(zhǎng)學(xué)學(xué) 校校一對(duì)一一對(duì)一(1:1)教教 師師講講 義義一對(duì)多一對(duì)多(1:M)1M教教 師師學(xué)學(xué) 生生多對(duì)多多對(duì)多(N:M)MN 關(guān)聯(lián)的多重性:在表示關(guān)聯(lián)的直線兩端寫(xiě)上重?cái)?shù)關(guān)聯(lián)的多重性:在表示關(guān)聯(lián)的直線兩端寫(xiě)上重?cái)?shù)0.1 表示表示0到到1個(gè)對(duì)象個(gè)對(duì)象0.*或或* 表示表示0到多個(gè)對(duì)象到多個(gè)對(duì)象1+或或1.* 表示表示1到多個(gè)對(duì)象到多個(gè)對(duì)象1.10 表示表示1到到10個(gè)對(duì)象個(gè)對(duì)象5 表示表示5個(gè)對(duì)象個(gè)對(duì)象3. 面向

28、對(duì)象建模面向?qū)ο蠼?+目目 錄錄文文 件件文件名文件名 名稱:常見(jiàn)的關(guān)聯(lián)是雙向的關(guān)系名稱:常見(jiàn)的關(guān)聯(lián)是雙向的關(guān)系作作 家家計(jì)算機(jī)計(jì)算機(jī)1+*使用使用 被使用被使用 關(guān)聯(lián)的限定:受限的關(guān)聯(lián)由兩類(lèi)對(duì)象及限定詞組成關(guān)聯(lián)的限定:受限的關(guān)聯(lián)由兩類(lèi)對(duì)象及限定詞組成 關(guān)聯(lián)類(lèi):為說(shuō)明關(guān)聯(lián)的性質(zhì),引入關(guān)聯(lián)類(lèi)來(lái)表示這些附加信息關(guān)聯(lián)類(lèi):為說(shuō)明關(guān)聯(lián)的性質(zhì),引入關(guān)聯(lián)類(lèi)來(lái)表示這些附加信息電梯控制器電梯控制器電電 梯梯按鈕按鈕4*隊(duì)隊(duì) 列列 角色:類(lèi)對(duì)象在關(guān)聯(lián)中的特定作用角色:類(lèi)對(duì)象在關(guān)聯(lián)中的特定作用工工 人人公公 司司*雇主雇主雇員雇員 聚集關(guān)系聚集關(guān)系3. 面向?qū)ο蠼C嫦驅(qū)ο蠼?聚集(聚合)是聚集(聚合)是關(guān)聯(lián)的

29、特例,表示一類(lèi)對(duì)象與另一類(lèi)對(duì)象之關(guān)聯(lián)的特例,表示一類(lèi)對(duì)象與另一類(lèi)對(duì)象之間的關(guān)系是整體與部分的關(guān)系。間的關(guān)系是整體與部分的關(guān)系。 共享聚集:處于部分方的對(duì)象可以同時(shí)參與多個(gè)處于整體方共享聚集:處于部分方的對(duì)象可以同時(shí)參與多個(gè)處于整體方對(duì)象對(duì)象 組合聚集:部分類(lèi)對(duì)象完全隸屬于整體類(lèi)對(duì)象組合聚集:部分類(lèi)對(duì)象完全隸屬于整體類(lèi)對(duì)象窗窗 口口列表框列表框*按按 鈕鈕菜菜 單單文本框文本框*包含包含課題組課題組人人1.*成員成員3. 面向?qū)ο蠼C嫦驅(qū)ο蠼?泛化關(guān)系泛化關(guān)系 泛化關(guān)系就是通常的繼承關(guān)系,是通用類(lèi)和具體類(lèi)泛化關(guān)系就是通常的繼承關(guān)系,是通用類(lèi)和具體類(lèi)之間的關(guān)系。之間的關(guān)系。具體類(lèi)完全擁有通用類(lèi)

30、的數(shù)據(jù)和操作,并且還可以補(bǔ)充一些數(shù)據(jù)具體類(lèi)完全擁有通用類(lèi)的數(shù)據(jù)和操作,并且還可以補(bǔ)充一些數(shù)據(jù)和操作。和操作。注:注: 泛化是針對(duì)類(lèi)而不針對(duì)實(shí)泛化是針對(duì)類(lèi)而不針對(duì)實(shí)例,指出在類(lèi)與類(lèi)之間存例,指出在類(lèi)與類(lèi)之間存在在“一般一般-特殊特殊”關(guān)系。關(guān)系。 抽象類(lèi)是沒(méi)有具體對(duì)象的抽象類(lèi)是沒(méi)有具體對(duì)象的類(lèi)。類(lèi)。 抽象操作是抽象類(lèi)的操作。抽象操作是抽象類(lèi)的操作。 普通泛化:就是繼承關(guān)系普通泛化:就是繼承關(guān)系(2)交通工具交通工具abstractdrive()abstract汽車(chē)汽車(chē)drive()輪船輪船drive() 受限泛化:具有進(jìn)一步說(shuō)明泛化使用方法或擴(kuò)充方法的附加約受限泛化:具有進(jìn)一步說(shuō)明泛化使用方法或

31、擴(kuò)充方法的附加約束條件的泛化關(guān)系。束條件的泛化關(guān)系。預(yù)定義的約束有多重、不相交、完全和不完全預(yù)定義的約束有多重、不相交、完全和不完全4種。種。3. 面向?qū)ο蠼C嫦驅(qū)ο蠼?依賴和細(xì)化關(guān)系依賴和細(xì)化關(guān)系 依賴關(guān)系:描述兩個(gè)類(lèi)或用例之間的語(yǔ)義連接關(guān)系。表明一個(gè)依賴關(guān)系:描述兩個(gè)類(lèi)或用例之間的語(yǔ)義連接關(guān)系。表明一個(gè)類(lèi)對(duì)象為了完成自己的任務(wù)需要借助另一個(gè)類(lèi)對(duì)象提供的服務(wù)。類(lèi)對(duì)象為了完成自己的任務(wù)需要借助另一個(gè)類(lèi)對(duì)象提供的服務(wù)。 如:一個(gè)類(lèi)使用另一個(gè)類(lèi)的對(duì)象作為操作的參數(shù)或數(shù)據(jù)成員、如:一個(gè)類(lèi)使用另一個(gè)類(lèi)的對(duì)象作為操作的參數(shù)或數(shù)據(jù)成員、一個(gè)類(lèi)向另一個(gè)類(lèi)發(fā)消息等。一個(gè)類(lèi)向另一個(gè)類(lèi)發(fā)消息等。類(lèi)類(lèi) B類(lèi)類(lèi)

32、A 細(xì)化關(guān)系:描述同一個(gè)事物的不同抽象層次的類(lèi)對(duì)象。細(xì)化關(guān)系:描述同一個(gè)事物的不同抽象層次的類(lèi)對(duì)象。分析類(lèi)分析類(lèi)設(shè)計(jì)類(lèi)設(shè)計(jì)類(lèi) 即:即:“分析類(lèi)分析類(lèi)”和和“設(shè)計(jì)類(lèi)設(shè)計(jì)類(lèi)”描述同一事物但抽象層次不同,描述同一事物但抽象層次不同,“設(shè)計(jì)類(lèi)設(shè)計(jì)類(lèi)”是在是在“分析類(lèi)分析類(lèi)”的基礎(chǔ)上的更詳細(xì)的描述(的基礎(chǔ)上的更詳細(xì)的描述(“設(shè)計(jì)設(shè)計(jì)類(lèi)類(lèi)”細(xì)化了細(xì)化了“分析類(lèi)分析類(lèi)”,或,或“分析類(lèi)分析類(lèi)”細(xì)化成了細(xì)化成了“設(shè)計(jì)類(lèi)設(shè)計(jì)類(lèi)”)。)。三要素:三要素: 事件事件 (event):引發(fā):引發(fā) object 狀態(tài)改變的控制信息狀態(tài)改變的控制信息(瞬時(shí)瞬時(shí))。 狀態(tài)狀態(tài)(status):即即 object 的的 at

33、tributes 所處的情形所處的情形(可持續(xù)可持續(xù))。 行為行為(action):object 要達(dá)到某種要達(dá)到某種 status 所做的操作所做的操作(耗時(shí)耗時(shí))。 動(dòng)態(tài)模型表示系統(tǒng)瞬時(shí)的、行為化的系統(tǒng)控制性質(zhì),規(guī)定了動(dòng)態(tài)模型表示系統(tǒng)瞬時(shí)的、行為化的系統(tǒng)控制性質(zhì),規(guī)定了對(duì)象模型中對(duì)象模型中的對(duì)象的合法變化序列。的對(duì)象的合法變化序列。表示方法:表示方法: 用用UML提供的狀態(tài)圖提供的狀態(tài)圖(P.66)來(lái)描述對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換來(lái)描述對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對(duì)象的行為。的事件以及對(duì)象的行為。注注:每個(gè)類(lèi)的動(dòng)態(tài)行為用一張:每個(gè)類(lèi)的動(dòng)態(tài)行為用一張狀態(tài)圖狀態(tài)圖來(lái)描繪,各個(gè)類(lèi)的狀態(tài)圖通來(lái)

34、描繪,各個(gè)類(lèi)的狀態(tài)圖通過(guò)共享事件合并起來(lái)構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。過(guò)共享事件合并起來(lái)構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。2、動(dòng)態(tài)模型、動(dòng)態(tài)模型(Dynamic Model,DM)3. 面向?qū)ο蠼C嫦驅(qū)ο蠼ie閑 置置撥撥 號(hào)號(hào)通通 話話斷斷 線線撥號(hào)音撥號(hào)音do/do/響撥號(hào)音響撥號(hào)音超超 時(shí)時(shí)do/do/響蜂鳴音響蜂鳴音存儲(chǔ)的信息存儲(chǔ)的信息do/do/播放信息播放信息接通中接通中do/do/試接通試接通振振 鈴鈴do/do/振振 鈴鈴忙忙 音音do/do/響忙音響忙音拿起聽(tīng)筒拿起聽(tīng)筒數(shù)字?jǐn)?shù)字?jǐn)?shù)字?jǐn)?shù)字有效號(hào)碼有效號(hào)碼已接通已接通受話人回話受話人回話受話人掛斷電話受話人掛斷電話掛斷電話掛斷電話超超 時(shí)時(shí)掛斷電話掛斷

35、電話超時(shí)超時(shí)無(wú)效號(hào)碼無(wú)效號(hào)碼信息播完信息播完占占 線線例:電話系統(tǒng)的狀態(tài)圖例:電話系統(tǒng)的狀態(tài)圖3. 面向?qū)ο蠼C嫦驅(qū)ο蠼1硎痉椒ǎ罕硎痉椒ǎ?數(shù)據(jù)流圖(數(shù)據(jù)流圖(DFD)(P.40) 用例模型(用例模型(Case Model)(1)用例圖)用例圖(Case Diagram) UML提供的用例圖是進(jìn)行需求分析和建立功能模型的有力工具。提供的用例圖是進(jìn)行需求分析和建立功能模型的有力工具。在在UML中用用例圖建立起來(lái)的系統(tǒng)模型稱用例模型。中用用例圖建立起來(lái)的系統(tǒng)模型稱用例模型。 用例圖包含的模型元素有系用例圖包含的模型元素有系統(tǒng)、行為者、用例及用例之間統(tǒng)、行為者、用例及用例之間的關(guān)系。的關(guān)系。3

36、. 面向?qū)ο蠼C嫦驅(qū)ο蠼?、功能模型、功能模型(Function Model,F(xiàn)M)功能模型表示變化的系統(tǒng)的功能性質(zhì),表明系統(tǒng)應(yīng)該功能模型表示變化的系統(tǒng)的功能性質(zhì),表明系統(tǒng)應(yīng)該做什么做什么。自動(dòng)售貨機(jī)系統(tǒng)自動(dòng)售貨機(jī)系統(tǒng)售貨售貨供貨供貨取貨款取貨款顧客顧客供貨人供貨人收銀員收銀員3. 面向?qū)ο蠼C嫦驅(qū)ο蠼?系統(tǒng)系統(tǒng) 用矩形框表示系統(tǒng)。方框的邊線表示系統(tǒng)的邊界,用于劃定系用矩形框表示系統(tǒng)。方框的邊線表示系統(tǒng)的邊界,用于劃定系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。 用例用例 UML中用例定義為系統(tǒng)完成一個(gè)完整功能的一系列動(dòng)作,其結(jié)中用例定義為系統(tǒng)完成一個(gè)

37、完整功能的一系列動(dòng)作,其結(jié)果能被特定的行為者感受到。具有如下特征:果能被特定的行為者感受到。具有如下特征: 用例代表用戶可見(jiàn)的功能,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo)用例代表用戶可見(jiàn)的功能,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo) 用例是被行為者啟動(dòng)的,并向行為者提供確切的值用例是被行為者啟動(dòng)的,并向行為者提供確切的值 用例可大可小,但必須是相對(duì)完整的用例可大可小,但必須是相對(duì)完整的注注: 用例置于系統(tǒng)方框內(nèi)用例置于系統(tǒng)方框內(nèi) 用例是一個(gè)類(lèi),代表一類(lèi)功能而不是使用該類(lèi)功能的某個(gè)用例是一個(gè)類(lèi),代表一類(lèi)功能而不是使用該類(lèi)功能的某個(gè)具體實(shí)例具體實(shí)例 用例的實(shí)例是系統(tǒng)的一種實(shí)際使用方法(腳本)用例的實(shí)例是系統(tǒng)的一種實(shí)際使用方法(腳本) 用例除完成內(nèi)部計(jì)算與工作外,還包括與外部的通信用例除完成內(nèi)部計(jì)算與工作外,還包括與外部的通信3. 面向?qū)ο蠼C嫦驅(qū)ο蠼?行為者行為者 用例之間的關(guān)系用例之間的關(guān)系 是與系統(tǒng)交互的人或其他系統(tǒng),代表系統(tǒng)外部的實(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論