




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章 面向?qū)ο蠓治龇椒?面向?qū)ο蟮母拍钆c開(kāi)發(fā)方法 統(tǒng)一建模語(yǔ)言UML概述 面向?qū)ο蠓治?UML建模工具Rational Rose,4.1 面向?qū)ο蟮母拍钆c開(kāi)發(fā)方法,現(xiàn)實(shí)世界就是由各種對(duì)象組成的,如建筑物、人、汽車、動(dòng)物、植物等。 復(fù)雜的對(duì)象可以由簡(jiǎn)單的對(duì)象組成。 在研究對(duì)象時(shí)主要考慮對(duì)象的屬性和行為,有些不同的對(duì)象會(huì)呈現(xiàn)相同或相似的屬性和行為,如轎車、卡車、面包車。 通常將屬性及行為相同或相似的對(duì)象歸為一類。 類可以看成是對(duì)象的抽象,代表了此類對(duì)象所具有的共有屬性和行為。,4.1面向?qū)ο蟮母拍钆c開(kāi)發(fā)方法,Coad和Yourdon給出了“面向?qū)ο蟆钡囊粋€(gè)定義: 面向?qū)ο髮?duì)象類繼承消息通信 如果
2、一個(gè)系統(tǒng)是使用這樣4個(gè)概念設(shè)計(jì)和實(shí)現(xiàn)的,則可認(rèn)為這個(gè)系統(tǒng)是面向?qū)ο蟮摹?面向?qū)ο蠹夹g(shù)的發(fā)展歷史,初始階段 1960s: 挪威奧斯陸大學(xué)和挪威計(jì)算中心共同研制了Simula語(yǔ)言 1980s: Xerox研究中心推出了Smalltalk語(yǔ)言和環(huán)境,面向?qū)ο蠹夹g(shù)的發(fā)展歷史(續(xù)),發(fā)展階段 1980s: 理論基礎(chǔ),許多OO 編程語(yǔ)言(如C+, Objective-C等) 面向?qū)ο缶幊陶Z(yǔ)言的繁榮是面向?qū)ο蠓椒ㄗ呦驅(qū)嵱玫闹匾獦?biāo)志,面向?qū)ο蠹夹g(shù)的發(fā)展歷史(續(xù)),成熟階段 1990s: 面向?qū)ο蠓治龊驮O(shè)計(jì)方法(Booch, OMT, OOSE等), Java 語(yǔ)言 面向?qū)ο蟮姆治龊驮O(shè)計(jì)技術(shù)逐漸走向?qū)嵱?,最終形
3、成了從分析、設(shè)計(jì)到編程、測(cè)試與維護(hù)一整套的軟件工程體系,問(wèn)題域,測(cè)試,編程,計(jì)算機(jī),編程語(yǔ)言,自然語(yǔ)言,需求 分析,總體 設(shè)計(jì),詳細(xì) 設(shè)計(jì),軟件工程學(xué)的作用 結(jié)構(gòu)化的軟件工程方法,問(wèn)題域,OOA,計(jì)算機(jī),自然語(yǔ)言,面向?qū)ο蟮?編程語(yǔ)言,OOD,OOP,OOT,軟件工程學(xué)的作用 面向?qū)ο蟮能浖こ谭椒?一切都是對(duì)象 例題:編寫一個(gè)開(kāi)發(fā)票程序,需要對(duì)發(fā)票的名細(xì)欄進(jìn)行計(jì)算。,非面向?qū)ο笏悸罚?定義數(shù)據(jù)結(jié)構(gòu) 定義函數(shù),面向?qū)ο笏悸罚?對(duì)象 一組屬性 操作:發(fā)票總計(jì) ,客觀世界,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象名 屬性 操作 ,類,類,類,類,分類,類,繼承,類,類,對(duì)象
4、,聚合,抽象 客觀事物及其間的聯(lián)系,關(guān)聯(lián),用況圖,類圖,順序圖,狀態(tài)圖,活動(dòng)圖,構(gòu)件圖,OO模型,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,對(duì)象,計(jì)算機(jī)內(nèi)的對(duì)象,編程,構(gòu)成,封裝,運(yùn)行,分析,設(shè)計(jì),對(duì)象,對(duì)象是包含現(xiàn)實(shí)世界物體特征的抽象實(shí)體,它反映了系統(tǒng)為之保存信息和(或)與它交互的能力。 例如,Student對(duì)象的數(shù)據(jù)可能有姓名、性別、出生日期、家庭住址、電話號(hào)碼等,其操作可能是對(duì)這些數(shù)據(jù)值的賦值及更改。,對(duì)象,對(duì)象與后面講的類具有幾乎完全相同的表示形式,主要差別是對(duì)象的名字下面要加一條下劃線。對(duì)象名有下列三種表示格式: (1) 第一種格式是對(duì)象名在前,類名在后,中間用冒號(hào)連接。形如: 對(duì)象
5、名:類名 (2) 第二種格式形如: :類名 這種格式用于尚未給對(duì)象命名的情況,注意,類名前的冒號(hào)不能省略。 (3) 第三種格式形如: 對(duì)象名,對(duì)象,對(duì)象有兩個(gè)層次的概念: (1) 現(xiàn)實(shí)生活中對(duì)象指的是客觀世界的實(shí)體??梢允强梢?jiàn)的有形對(duì)象,如人、學(xué)生、汽車、房屋等;也可以是抽象的邏輯對(duì)象,如銀行帳號(hào),生日。 (2) 程序中對(duì)象就是一組變量和相關(guān)方法的集合,其中變量表明對(duì)象的狀態(tài),方法表明對(duì)象所具有的行為。,對(duì)象,可以將程序中的對(duì)象分為5類:物理對(duì)象,角色,事件,交互,規(guī)格說(shuō)明。 物理對(duì)象(Physical Objects) 物理對(duì)象是最易識(shí)別的對(duì)象,通??梢栽趩?wèn)題領(lǐng)域的描述中找到,它們的屬性可以
6、標(biāo)識(shí)和測(cè)量。 例如,大學(xué)課程注冊(cè)系統(tǒng)中的學(xué)生對(duì)象;一個(gè)網(wǎng)絡(luò)管理系統(tǒng)中各種網(wǎng)絡(luò)物理資源對(duì)象(如開(kāi)關(guān)、CPU和打印機(jī))都是物理對(duì)象。,對(duì)象,(2) 角色(Roles) 一個(gè)實(shí)體的角色也可以抽象成一個(gè)單獨(dú)的對(duì)象。角色對(duì)象的操作是由角色提供的技能。 例如,一個(gè)面向?qū)ο笙到y(tǒng)中通常有“管理器”對(duì)象,它履行協(xié)調(diào)系統(tǒng)資源的角色。一個(gè)窗口系統(tǒng)中通常有“窗口管理器”對(duì)象,它扮演協(xié)調(diào)鼠標(biāo)器按鈕和其他窗口操作的角色。特別地,一個(gè)實(shí)際的物理對(duì)象可能同時(shí)承擔(dān)幾個(gè)角色。 例如,一個(gè)退休教師同時(shí)扮演退休者和教師的角色。,對(duì)象,(3) 事件(Events) 一個(gè)事件是某種活動(dòng)的一次“出現(xiàn)”。 例如“鼠標(biāo)”事件。一個(gè)事件對(duì)象通常
7、是一個(gè)數(shù)據(jù)實(shí)體,它管理“出現(xiàn)”的重要信息。事件對(duì)象的操作主要用于對(duì)數(shù)據(jù)的存取。 如“鼠標(biāo)”事件對(duì)象有諸如光標(biāo)坐標(biāo)、左右鍵、單擊,雙擊等信息。,對(duì)象,(4) 交互(Interactions) 交互表示了在兩個(gè)對(duì)象之間的關(guān)系,這種類型的對(duì)象類似于在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)所涉及的“關(guān)系”實(shí)體。 當(dāng)實(shí)體之間是多對(duì)多的關(guān)系時(shí),利用交互對(duì)象可將其簡(jiǎn)化為兩個(gè)一對(duì)多的關(guān)系。 例如,在大學(xué)課程注冊(cè)系統(tǒng)中,學(xué)生和課程之間的關(guān)系是多對(duì)多的關(guān)系,可設(shè)置一個(gè)“選課”交互對(duì)象來(lái)簡(jiǎn)化它們之間的關(guān)系。,類與封裝,類??梢詫F(xiàn)實(shí)生活中的對(duì)象經(jīng)過(guò)抽象,映射為程序中的對(duì)象。對(duì)象在程序中是通過(guò)一種抽象數(shù)據(jù)類型來(lái)描述的,這種抽象數(shù)據(jù)類型稱為類(
8、Class)。 為了讓計(jì)算機(jī)創(chuàng)建對(duì)象,必須先提供對(duì)象的定義,也就是先定義對(duì)象所屬的類。例如,可以將學(xué)生對(duì)象所屬的類定義為Student。類的圖形表示如圖所示。,類與封裝,封裝。面向?qū)ο蟮姆庋b特性與其抽象特性密切相關(guān)。封裝是一種信息隱蔽技術(shù),就是利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起。用戶只能看到對(duì)象的封裝界面信息,對(duì)象的內(nèi)部細(xì)節(jié)對(duì)用戶是隱蔽的。 封裝的定義是: (1) 清楚的邊界,所有對(duì)象的內(nèi)部信息被限定在這個(gè)邊界內(nèi); (2) 接口,即對(duì)象向外界提供的方法,外界可以通過(guò)這些方法與對(duì)象進(jìn)行交互; (3) 受保護(hù)的內(nèi)部實(shí)現(xiàn),即軟件對(duì)象功能的實(shí)現(xiàn)細(xì)節(jié),實(shí)現(xiàn)細(xì)節(jié)不能從類外訪問(wèn)。,繼承,繼承。
9、繼承是一種聯(lián)結(jié)類的層次模型,為類的重用提供了方便,它提供了明確表述不同類之間共性的方法。 我們將公共類稱為超類(superclass)、父類(father class)、祖先(ancestor)或基類(base class),而從其繼承的類稱為子類(subclasses)、后代(deslendane)或?qū)С鲱悾╠erived class)。,多態(tài),根據(jù)為請(qǐng)求提供服務(wù)的對(duì)象不同可以得到不同的行為,這種現(xiàn)象稱為多態(tài)。 在運(yùn)行時(shí)對(duì)類進(jìn)行實(shí)例化,并調(diào)用與實(shí)例化對(duì)象相應(yīng)的方法,稱為動(dòng)態(tài)綁定、后期綁定或運(yùn)行時(shí)綁定。相應(yīng)地,如果方法的調(diào)用是在編譯時(shí)確定的,則稱為是靜態(tài)綁定、前期綁定或編譯時(shí)綁定。 通過(guò)在子類
10、中覆蓋父類的方法實(shí)現(xiàn)多態(tài)。,消息通信,消息是一個(gè)對(duì)象與另一個(gè)對(duì)象的通信單元,是要求某個(gè)對(duì)象執(zhí)行類中定義的某個(gè)操作的規(guī)格說(shuō)明。 發(fā)送給一個(gè)對(duì)象的消息定義了一個(gè)方法名和一個(gè)參數(shù)表(可能是空的),并指定某一個(gè)對(duì)象。 一個(gè)對(duì)象接收到消息,則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來(lái)。,面向?qū)ο蟮拈_(kāi)發(fā)方法,面向?qū)ο筌浖_(kāi)發(fā)方法的特征 方法的唯一性即方法是對(duì)軟件開(kāi)發(fā)過(guò)程所有階段進(jìn)行綜合考慮而得到的。 從生存期的一個(gè)階段到下一個(gè)階段的高度連續(xù)性即生存期后一階段的成果只是在前一階段成果的補(bǔ)充和修改。 把面向?qū)ο蠓治?OOA)、面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)集成到生存期的相
11、應(yīng)階段。,面向?qū)ο蟮拈_(kāi)發(fā)方法,Rumbaugh方法 Rumbaugh和他的同事提出的對(duì)象模型化技術(shù)(OMT)用于分析、系統(tǒng)設(shè)計(jì)和對(duì)象級(jí)設(shè)計(jì)。分析活動(dòng)建立三個(gè)模型: 對(duì)象模型(描述對(duì)象、類、層次和關(guān)系); 動(dòng)態(tài)模型(描述對(duì)象和系統(tǒng)的行為); 功能模型(類似于高層的DFD,描述穿越系統(tǒng)的信息流)。,面向?qū)ο蟮拈_(kāi)發(fā)方法,Coad和Yourdon方法 Coad和Yourdon方法常常被認(rèn)為是最容易學(xué)習(xí)的OOA方法。建模符號(hào)相當(dāng)簡(jiǎn)單,其OOA過(guò)程如下: (1) 使用“要找什么”準(zhǔn)則標(biāo)識(shí)對(duì)象; (2) 定義對(duì)象之間的一般化/特殊化結(jié)構(gòu)(又稱為分類結(jié)構(gòu)); (3) 定義對(duì)象之間的整體/部分結(jié)構(gòu)(又稱為組合結(jié)
12、構(gòu)); (4) 標(biāo)識(shí)主題; (5) 定義對(duì)象的屬性及對(duì)象之間的實(shí)例連接; (6) 定義服務(wù)及對(duì)象之間的消息連接。,面向?qū)ο蟮拈_(kāi)發(fā)方法,Booch方法 包含“微開(kāi)發(fā)過(guò)程”和“宏開(kāi)發(fā)過(guò)程”兩個(gè)過(guò)程。 OOA 宏觀開(kāi)發(fā)過(guò)程如下: 標(biāo)識(shí)類和對(duì)象; 標(biāo)識(shí)類和對(duì)象的語(yǔ)義; 標(biāo)識(shí)類和對(duì)象間的關(guān)系; 進(jìn)行一系列精化; 實(shí)現(xiàn)類和對(duì)象。,面向?qū)ο蟮拈_(kāi)發(fā)方法,Jacobson方法 也稱為OOSE(面向?qū)ο筌浖こ?,其特點(diǎn)是特別強(qiáng)調(diào)使用用例用以描述用戶和產(chǎn)品或系統(tǒng)間如何交互的場(chǎng)景。 過(guò)程如下: 標(biāo)識(shí)系統(tǒng)的用戶和他們的整體責(zé)任 構(gòu)造需求模型 構(gòu)造分析模型,4.2 統(tǒng)一建模語(yǔ)言UML概述,面向?qū)ο蟮慕UZ(yǔ)言很多,目前使
13、用最廣泛的是統(tǒng)一建模語(yǔ)言(UML,Unified Modeling Language); 它將Booch、Rumbaugh和Jacobson等各自獨(dú)立的OOA和OOD方法中最優(yōu)秀的特色組合成一個(gè)統(tǒng)一的方法。,4.2.1UML的產(chǎn)生和發(fā)展,UML(Unified Modeling Language)的概念于1996年由面向?qū)ο蠓椒I(lǐng)域的三位著名專家Grady Booch,James Rumbaugh和Ivar Jacobson提出的。 1996年6月和10月分別發(fā)布了UML0.9, UML0.91。 1997年1月,UML1.0被提交給對(duì)象管理組織OMG。 1997年9月,提交UML1.1,19
14、97年11月被OMG采納作為基于面向?qū)ο蠹夹g(shù)的標(biāo)準(zhǔn)建模語(yǔ)言。 1998、2000、2001、2003、2005年分別發(fā)布了UML1.2、UML1.3、UML1.4、 UML1.5、 UML2.0。 2007年發(fā)布了UML2.1.1,UML2.1.2。 2009年發(fā)布了UML2.2,UML的產(chǎn)生和發(fā)展,UML的特點(diǎn),(1)統(tǒng)一標(biāo)準(zhǔn) UML不僅統(tǒng)一了Booch、OMT和OOSE等方法中的基本概念,還吸取了面向?qū)ο蠹夹g(shù)領(lǐng)域中其他流派的長(zhǎng)處,其中也包括非OO方法的影響。已經(jīng)成為OMG的標(biāo)準(zhǔn)。 (2)面向?qū)ο?UML支持面向?qū)ο蠹夹g(shù)的主要概念,它提供了一批基本的表示模型元素的圖形和方法,能簡(jiǎn)潔明了地表達(dá)
15、面向?qū)ο蟮母鞣N概念和模型元素。,UML的特點(diǎn),(3)可視化,表達(dá)能力強(qiáng)大 UML是一種圖形化語(yǔ)言,用UML的模型圖形能清晰地表示系統(tǒng)的邏輯模型或?qū)崿F(xiàn)模型。UML還提供了語(yǔ)言的擴(kuò)展機(jī)制,用戶可以根據(jù)需要增加定義自己的構(gòu)造型、標(biāo)記值和約束等。 (4)獨(dú)立于過(guò)程 UML是系統(tǒng)建模的語(yǔ)言,不依賴特定的開(kāi)發(fā)過(guò)程。,UML的特點(diǎn),(5) 容易掌握使用 UML概念明確,建模表示法簡(jiǎn)潔明了,圖形結(jié)構(gòu)清晰,容易掌握使用。 (6)與編程語(yǔ)言的關(guān)系 支持UML的一些CASE工具(如Rose)可以根據(jù) UML所建立的系統(tǒng)模型自動(dòng)產(chǎn)生Java、C+ 等代碼框架。,4.2.2 UML的基本模型,UML符號(hào)為開(kāi)發(fā)者或開(kāi)發(fā)工
16、具使用這些圖形符號(hào)和文本語(yǔ)法為系統(tǒng)建模提供了標(biāo)準(zhǔn)。 這些圖形符號(hào)和文字所表達(dá)的是應(yīng)用級(jí)的模型,在語(yǔ)義上它是UML元模型的實(shí)例。 UML模型由事物、關(guān)系和圖組成,4.2.2 UML的基本模型,4.2.3 UML的事物,事物是對(duì)模型中最具代表性成分的抽象,在UML中,可以分為結(jié)構(gòu)事物、行為事物、分組事物和注釋事物4類。,結(jié)構(gòu)事物,結(jié)構(gòu)事物是UML模型的靜態(tài)部分,主要用來(lái)描述概念的或物理的元素,包括類、主動(dòng)類、接口、對(duì)象、用例、參與者、協(xié)作、構(gòu)件和節(jié)點(diǎn)等。 (1)類(class) 類用帶有類名、屬性和操作的矩形框來(lái)表示。,結(jié)構(gòu)事物,(2)主動(dòng)類(active class) 主動(dòng)類的實(shí)例應(yīng)具有一個(gè)或多
17、個(gè)進(jìn)程或線程,能夠啟動(dòng)控制活動(dòng)。,(3)接口(interface) 描述了一個(gè)類或構(gòu)件的一組外部可用的服務(wù)(操作)集。 接口定義的是一組操作的描述,而不是操作的實(shí)現(xiàn)。 一般將接口畫成從實(shí)現(xiàn)它的類或構(gòu)件引出的圓圈,接口體現(xiàn)了使用與實(shí)現(xiàn)分離的原則。,結(jié)構(gòu)事物,(4)對(duì)象(object) 對(duì)象是類的實(shí)例,其名字下邊加下劃線,對(duì)象的屬性值需明確給出。 (5)用例(use case) 也稱用況,用于表示系統(tǒng)想要實(shí)現(xiàn)的行為,即描述一組動(dòng)作序列(即場(chǎng)景)。而系統(tǒng)執(zhí)行這組動(dòng)作后將產(chǎn)生一個(gè)對(duì)特定參與者有價(jià)值的結(jié)果。,結(jié)構(gòu)事物,(6)參與者(actor) 也稱角色,是指與系統(tǒng)有信息交互關(guān)系的人、軟件系統(tǒng)或硬件設(shè)備
18、,在圖形上用簡(jiǎn)化的小木頭人表示。 (7)協(xié)作(collaboration) 用例僅描述要實(shí)現(xiàn)的行為,不描述這些行為的實(shí)現(xiàn)。這種實(shí)現(xiàn)用協(xié)作描述。 協(xié)作定義交互,描述一組角色實(shí)體和其他實(shí)體如何通過(guò)協(xié)同工作來(lái)完成一個(gè)功能或行為。類可以參與幾個(gè)協(xié)作。,結(jié)構(gòu)事物,(8)構(gòu)件(component) 也稱組件,是系統(tǒng)中物理的、可替代的部件。它通常是描述一些邏輯元素的物理包。 (9)節(jié)點(diǎn)(node) 是在運(yùn)行時(shí)存在的物理元素。它代表一種可計(jì)算的資源,通常具有一定的記憶能力和處理能力。,行為事物,行為事物是UML模型的動(dòng)態(tài)部分,包括兩類: (1)交互(interaction) 交互由在特定的上下文環(huán)境中共同完成
19、一定任務(wù)的一組對(duì)象之間傳遞的消息組成。如圖所示。交互涉及的元素包括消息、動(dòng)作序列(由一個(gè)消息所引起的行為)和鏈(對(duì)象間的連接)。,對(duì)象之間的交互,行為事物,(2)狀態(tài)機(jī)(state machine) 描述了一個(gè)對(duì)象或一個(gè)交互在生存周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列,單個(gè)類或者一組類之間協(xié)作的行為都可以用狀態(tài)機(jī)來(lái)描述。 狀態(tài)機(jī)涉及到狀態(tài)、變遷和活動(dòng),其中狀態(tài)用圓角矩形來(lái)表示。,分組事物,分組事物是UML模型的組織部分。它的作用是為了降低模型復(fù)雜性。 UML中的分組事物是包(package)。 包是把模型元素組織成組的機(jī)制,結(jié)構(gòu)事物、行為事物甚至其他分組事物都可以放進(jìn)包內(nèi)。,注釋事物,注釋事物是UML
20、模型的解釋部分,它們用來(lái)描述和標(biāo)注模型的任何元素。 通??梢杂米⑨屝揎棊в屑s束或者解釋的圖。,4.2.4 UML的關(guān)系,依賴關(guān)系,依賴(Dependency)是兩個(gè)事物之間的語(yǔ)義關(guān)系,其中一個(gè)事物發(fā)生變化會(huì)影響到另一個(gè)事物的語(yǔ) 義,它用一個(gè)虛線箭頭表示。 虛線箭頭的方向從源事物指向目標(biāo)事物,表示源事物依賴于目標(biāo)事物。,依賴關(guān)系,依賴關(guān)系,關(guān)聯(lián)關(guān)系,關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系,它描述了兩個(gè)或多個(gè)類的實(shí)例之間的連接關(guān)系,是一種特殊的依賴。 關(guān)聯(lián)分為普通關(guān)聯(lián)、限定關(guān)聯(lián)、關(guān)聯(lián)類,以及聚合與復(fù)合。,關(guān)聯(lián)關(guān)系普通關(guān)聯(lián),普通關(guān)聯(lián)是最常見(jiàn)的關(guān)聯(lián)關(guān)系,只要類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)
21、表示。普通關(guān)聯(lián)又分為二元關(guān)聯(lián)和多元關(guān)聯(lián)。 二元關(guān)聯(lián)描述兩個(gè)類之間的關(guān)聯(lián),用兩個(gè)類之間的一條直線來(lái)表示,直線上可寫上關(guān)聯(lián)名。,關(guān)聯(lián)關(guān)系普通關(guān)聯(lián),多重性(multiplicity):多重性表明在一個(gè)關(guān)聯(lián)的兩端連接的類實(shí)例個(gè)數(shù)的對(duì)應(yīng)關(guān)系,即一端的類的多少個(gè)實(shí)例對(duì)象可以與另一端的類的一個(gè)實(shí)例相關(guān)。 如果圖中沒(méi)有明確標(biāo)出關(guān)聯(lián)的多重性,則默認(rèn)的多重性為1。,關(guān)聯(lián)關(guān)系普通關(guān)聯(lián),角色:關(guān)聯(lián)端點(diǎn)上還可以附加角色名,表示類的實(shí)例在這個(gè)關(guān)聯(lián)中扮演的角色。UML還允許一個(gè)類與它自身關(guān)聯(lián)。,關(guān)聯(lián)關(guān)系普通關(guān)聯(lián),多元關(guān)聯(lián):多元關(guān)聯(lián)是指3個(gè)或3個(gè)以上類之間的關(guān)聯(lián)。 多元關(guān)聯(lián)由一個(gè)菱形,以及由菱形引出的通向各個(gè)相關(guān)類的直線組成
22、,關(guān)聯(lián)名可標(biāo)在菱形的旁邊,在關(guān)聯(lián)的端點(diǎn)也可以標(biāo)上多重性等信息。,關(guān)聯(lián)關(guān)系限定關(guān)聯(lián),限定關(guān)聯(lián)通常用在一對(duì)多或多對(duì)多的關(guān)聯(lián)關(guān)系中,可以把模型中的多重性從一對(duì)多變成一對(duì)一,或?qū)⒍鄬?duì)多簡(jiǎn)化成多對(duì)一。 在類圖中把限定詞(qualifier)放在關(guān)聯(lián)關(guān)系末端的一個(gè)小方框內(nèi)。,關(guān)聯(lián)關(guān)系關(guān)聯(lián)類,在關(guān)聯(lián)關(guān)系比較簡(jiǎn)單的情況下,關(guān)聯(lián)關(guān)系的語(yǔ)義用關(guān)聯(lián)關(guān)系的名字來(lái)概括。 但在某些情況下,需要對(duì)關(guān)聯(lián)關(guān)系的語(yǔ)義做詳細(xì)的定義、存儲(chǔ)和訪問(wèn),為此可以建立關(guān)聯(lián)類(association class),用來(lái)描述關(guān)聯(lián)的屬性。 關(guān)聯(lián)中的每個(gè)鏈與關(guān)聯(lián)類的一個(gè)實(shí)例相聯(lián)系。關(guān)聯(lián)類通過(guò)一條虛線與關(guān)聯(lián)連接。,關(guān)聯(lián)關(guān)系聚合,聚合(Aggregati
23、on)也稱為聚集,是一種特殊的關(guān)聯(lián)。它描述了整體和部分之間的結(jié)構(gòu)關(guān)系。 兩種特殊的聚合關(guān)系:共享聚合(shared aggregation)和復(fù)合聚合(composition aggregation)。 如果在聚合關(guān)系中處于部分方的實(shí)例可同時(shí)參與多個(gè)處于整體方實(shí)例的構(gòu)成,則該聚合稱為共享聚合。,關(guān)聯(lián)關(guān)系聚合,如果部分類完全隸屬于整體類,部分類需要與整體類共存,一旦整體類不存在了,則部分類也會(huì)隨之消失,或失去存在價(jià)值,則這種聚合稱為復(fù)合聚合。,關(guān)聯(lián)關(guān)系導(dǎo)航,導(dǎo)航(navigability)是關(guān)聯(lián)關(guān)系的一種特性,它通過(guò)在關(guān)聯(lián)的一個(gè)端點(diǎn)上加箭頭來(lái)表示導(dǎo)航的方向。,泛化關(guān)系,泛化(generaliza
24、tion)關(guān)系就是一般類和特殊類之間的繼承關(guān)系。 在UML中,一般類亦稱泛化類,特殊類亦稱特化類。 泛化針對(duì)類型而不針對(duì)實(shí)例,因?yàn)橐粋€(gè)類可以繼承另一個(gè)類,但一個(gè)對(duì)象不能繼承另一個(gè)對(duì)象。 泛化可進(jìn)一步劃分成普通泛化和受限泛化兩類。,泛化關(guān)系普通泛化,普通泛化與前面講過(guò)的繼承基本相同。但在泛化關(guān)系中常遇到抽象類。 一般稱沒(méi)有具體對(duì)象的類為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。,泛化關(guān)系普通泛化,普通泛化可以分為多重繼承和單繼承。多重繼承是指一個(gè)子類可同時(shí)繼承多個(gè)上層父類。,泛化關(guān)系受限泛化,受限泛化關(guān)系是指泛化具有約束條件。 一般有4種約束:交疊(overlappin
25、g)、不相交(disjoint)、完全(complete)和不完全(incomplate)。,實(shí)現(xiàn)關(guān)系,實(shí)現(xiàn)(implement)是泛化關(guān)系和依賴關(guān)系的結(jié)合,也是類之間的語(yǔ)義關(guān)系,通常在以下兩種情況出現(xiàn)實(shí)現(xiàn)關(guān)系: (1)接口和實(shí)現(xiàn)它們的類或構(gòu)件之間; (2)用例和實(shí)現(xiàn)它們的協(xié)作之間。,4.2.4 UML的圖,靜態(tài)結(jié)構(gòu),物理架構(gòu),UML 圖,用況圖:需求獲取,測(cè)試依據(jù) 功能 類 圖: 類以及類之間的相互關(guān)系 結(jié)構(gòu) 對(duì)象圖:對(duì)象以及對(duì)象之間的相互關(guān)系 構(gòu)件圖:構(gòu)件及其相互依賴關(guān)系 部署圖:構(gòu)件在各節(jié)點(diǎn)上的部署 時(shí)序圖:強(qiáng)調(diào)時(shí)間順序的交互圖 行為 協(xié)作圖:強(qiáng)調(diào)對(duì)象協(xié)作的交互圖 狀態(tài)圖:類所經(jīng)歷的各種
26、狀態(tài) 活動(dòng)圖:對(duì)工作流程建模,67,用況圖:參與者,參與者(Actor) 參與者是與系統(tǒng)交互的外部實(shí)體。 參與者既可以是使用該系統(tǒng)的用戶,也可以是與系統(tǒng)交互的其他外部系統(tǒng)、硬件設(shè)備或組織機(jī)構(gòu)。,68,用況圖:參與者,參與者的泛化關(guān)系 參與者之間可以存在泛化的關(guān)系,類似的參與者可以利用泛化關(guān)系組成一般與特殊的層次結(jié)構(gòu)。,69,用況圖:用況,用況(Use Case) 用況是從用戶角度描述系統(tǒng)的行為,它將系統(tǒng)的一個(gè)功能描述成一系列事件,這些事件最終對(duì)參與者產(chǎn)生有價(jià)值的可觀測(cè)結(jié)果。 用況可以促進(jìn)與用戶溝通,理解正確的需求,同時(shí)也可以用來(lái)劃分系統(tǒng)與外部實(shí)體的界限。 用況之間的關(guān)系 包含關(guān)系(includ
27、e) 擴(kuò)展關(guān)系(extend) 泛化關(guān)系(generalization),70,用況圖:用況,包含關(guān)系(include) 包含關(guān)系是指一個(gè)基本用例的行為包含了另一個(gè)用例的行為 包含關(guān)系是對(duì)用例之間的共性部分進(jìn)行建模 UML 符號(hào),71,用況圖:用況,擴(kuò)展關(guān)系(extend) 在用例執(zhí)行過(guò)程中,可能會(huì)出現(xiàn)異常行為,也可能會(huì)在不同的流程分支中選擇執(zhí)行,這時(shí)可以將異常行為或可選分支抽象成一個(gè)單獨(dú)的擴(kuò)展用例,它與主用例之間形成擴(kuò)展關(guān)系。 UML 符號(hào),72,用況圖:用況,泛化關(guān)系(generalization) 用例之間的泛化關(guān)系是描述用例之間一般與特殊關(guān)系的,不同的子用例代表了父用例的不同實(shí)現(xiàn)方法。
28、 UML 符號(hào),73,用況圖:用況,三種關(guān)系的比較 包含關(guān)系 如果需要重復(fù)處理兩個(gè)或多個(gè)用例時(shí),可以考慮使用包含關(guān)系,實(shí)現(xiàn)一個(gè)基本用例對(duì)另一個(gè)用例的引用。 被包含的用例從不獨(dú)立存在,僅作為基本用例的一部分出現(xiàn)。 擴(kuò)展關(guān)系 當(dāng)描述正常行為的變型,而且希望采用更多的控制方式時(shí),可以在基本用例中設(shè)置擴(kuò)展點(diǎn),使用擴(kuò)展關(guān)系。 在擴(kuò)展關(guān)系中,基本用例可以獨(dú)立存在,當(dāng)它執(zhí)行時(shí)擴(kuò)展用例可以執(zhí)行也可以不執(zhí)行。 泛化關(guān)系 當(dāng)處理正常行為的變型,而且只是偶爾描述時(shí),可以考慮只用泛化關(guān)系。,74,用況圖:用況描述,用況描述 用況采用自然語(yǔ)言來(lái)描述參與者與系統(tǒng)進(jìn)行交互時(shí)雙方的行為,而不追求形式化的語(yǔ)言表達(dá)。 用況描述的
29、主要內(nèi)容 用況的目的 用況如何被啟動(dòng) 參與者與用況之間的事件流:基本流、可選流 前置條件 后置條件 擴(kuò)展點(diǎn),75,用況圖:用況描述,說(shuō)明 應(yīng)該只描寫“可觀測(cè)的”結(jié)果 應(yīng)該使用主動(dòng)語(yǔ)句 句子的主語(yǔ)應(yīng)該是參與者或者系統(tǒng) 參與者 系統(tǒng) 參與者 系統(tǒng) 不要涉及系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié) 不要涉及界面的細(xì)節(jié),76,用況圖:用況描述,下面的用例描述有問(wèn)題嗎? 舉例1: 1.系統(tǒng)顯示輸入用戶名和密碼的界面。 2.會(huì)員輸入用戶名和密碼,點(diǎn)擊“確定”。 3.如果用戶名和密碼正確,系統(tǒng)根據(jù)用戶名從數(shù)據(jù)庫(kù)的“會(huì)員”表中查詢?cè)摃?huì)員信息,系統(tǒng)顯示會(huì)員定制界面。 4.如果用戶名不存在, 舉例2: 系統(tǒng)從用戶獲得用戶名和密碼。 用戶名
30、和密碼被驗(yàn)證。,77,UML 圖:類圖,類圖(Class Diagram) 類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),表示系統(tǒng)中的類、類與類之間的關(guān)系以及類的屬性和操作。 在不同的開(kāi)發(fā)階段,類圖具有不同的抽象層次 需求階段:概念層類圖描述應(yīng)用領(lǐng)域中的概念,這些概念和類有很自然的聯(lián)系,但兩者并沒(méi)有直接的映射關(guān)系。 設(shè)計(jì)階段:說(shuō)明層類圖描述軟件的接口部分,而不是軟件的實(shí)現(xiàn)部分。 實(shí)現(xiàn)階段:實(shí)現(xiàn)層類圖才真正考慮類的實(shí)現(xiàn)問(wèn)題,揭示軟件實(shí)現(xiàn)的細(xì)節(jié)。,78,UML 圖:類圖,79,UML 圖:對(duì)象圖,對(duì)象圖(Object Diagram) 對(duì)象圖表示一組對(duì)象和它們之間的聯(lián)系,它是一個(gè)系統(tǒng)的詳細(xì)狀態(tài)在某一時(shí)刻的快照。 說(shuō)明
31、對(duì)象圖實(shí)質(zhì)上是類圖的實(shí)例。 對(duì)象圖常用于表示復(fù)雜的類圖的一個(gè)實(shí)例。 對(duì)象圖的使用相當(dāng)有限,主要用于表達(dá)數(shù)據(jù)結(jié)構(gòu)的示例,以及了解系統(tǒng)在某個(gè)特定時(shí)刻的具體情況。,80,UML 圖:對(duì)象圖,81,UML 圖:時(shí)序圖,時(shí)序圖(Sequence Diagram) 時(shí)序圖描述了一組交互對(duì)象間的交互方式,它表示完成某項(xiàng)行為的對(duì)象和這些對(duì)象之間傳遞消息的時(shí)間順序。 一般情況下,我們使用時(shí)序圖描述一個(gè)用況的事件流,標(biāo)識(shí)參與這個(gè)用況的對(duì)象,并以服務(wù)的形式將用況的行為分配到對(duì)象上。 時(shí)序圖的組成 對(duì)象(參與者實(shí)例也是對(duì)象) 生命線:表示對(duì)象存在的時(shí)間 控制焦點(diǎn):表示對(duì)象執(zhí)行一個(gè)所經(jīng)歷的時(shí)間段 消息:表示對(duì)象之間的通
32、信,82,UML 圖:時(shí)序圖,83,UML 圖:時(shí)序圖,84,UML 圖:協(xié)作圖,協(xié)作圖(Collaboration Diagram) 協(xié)作圖反映收發(fā)消息的對(duì)象的結(jié)構(gòu)組織,用于描述系統(tǒng)的行為是如何由系統(tǒng)的成分協(xié)作實(shí)現(xiàn)的。 時(shí)序圖和協(xié)作圖是同構(gòu)的,即兩者之間可以相互轉(zhuǎn)換。,85,UML 圖:協(xié)作圖,86,UML 圖:狀態(tài)圖,狀態(tài)圖(StatechartDiagram) 狀態(tài)圖是由狀態(tài)機(jī)擴(kuò)展而來(lái)的,用來(lái)描述對(duì)象所經(jīng)過(guò)的對(duì)外部事件做出相應(yīng)的狀態(tài)序列。 狀態(tài)圖側(cè)重于描述某個(gè)對(duì)象在其生命周期中的動(dòng)態(tài)行為,包括對(duì)象在各個(gè)不同的狀態(tài)間的跳轉(zhuǎn)以及觸發(fā)這些跳轉(zhuǎn)的外部事件,即從狀態(tài)到狀態(tài)的控制流。,87,UML
33、圖:狀態(tài)圖,狀態(tài)(State) 狀態(tài)是指在對(duì)象生命期中的一個(gè)條件或狀況,對(duì)象在此期間將滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件。 在狀態(tài)圖中定義的狀態(tài)有:初態(tài)、終態(tài)、中間狀態(tài)、組合狀態(tài)、歷史狀態(tài)等。 一個(gè)狀態(tài)圖只能有一個(gè)初態(tài),而終態(tài)可以有多個(gè)。 事件(Event) 事件是對(duì)一個(gè)在時(shí)間和空間上占有一定位置的有意義事情的規(guī)格說(shuō)明,在狀態(tài)機(jī)的語(yǔ)境中,事件應(yīng)觸發(fā)一個(gè)狀態(tài)轉(zhuǎn)換。,88,UML 圖:狀態(tài)圖,轉(zhuǎn)換(Transition) 轉(zhuǎn)換表示兩個(gè)狀態(tài)之間的關(guān)系,它指明對(duì)象在第一個(gè)狀態(tài)中執(zhí)行一定的動(dòng)作,并當(dāng)特定事件發(fā)生或特定條件滿足時(shí)進(jìn)入第二個(gè)狀態(tài)。 活動(dòng)(Activity) 活動(dòng)是狀態(tài)機(jī)中進(jìn)行的非原子執(zhí)
34、行單元。 動(dòng)作(Action) 動(dòng)作是由引起模型狀態(tài)改變或值的返回的可執(zhí)行原子計(jì)算所組成的。,89,UML 圖:狀態(tài)圖,90,UML 圖:活動(dòng)圖,活動(dòng)圖(Activity Diagram) 活動(dòng)圖反映系統(tǒng)中從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的流程,強(qiáng)調(diào)對(duì)象間的控制流程。 活動(dòng)圖的組成 活動(dòng)(Activity) 轉(zhuǎn)移(Transition) 泳道(Swimlane) 分支(Branch) 分叉和匯合(Fork and Join) 對(duì)象流(Object Stream),91,UML 圖:活動(dòng)圖,92,UML 圖:狀態(tài)圖與活動(dòng)圖比較,活動(dòng)圖和狀態(tài)圖描述的重點(diǎn)不同 活動(dòng)圖描述的是從活動(dòng)到活動(dòng)的控制流,而狀態(tài)圖描述
35、的是對(duì)象的狀態(tài)及狀態(tài)之間的轉(zhuǎn)移。 活動(dòng)圖和狀態(tài)圖使用的場(chǎng)合不同 對(duì)于以下幾種情況可以使用活動(dòng)圖 分析用例 理解涉及多個(gè)用況的工作流 處理多線程應(yīng)用 對(duì)于下面的情況要使用狀態(tài)圖 顯示一個(gè)對(duì)象在其生命周期內(nèi)的行為 說(shuō)明:如果要顯示多個(gè)對(duì)象之間的交互,可用時(shí)序圖或協(xié)作圖,93,UML 圖:構(gòu)件圖,構(gòu)件圖(Component Diagram) 構(gòu)件圖描述組件以及它們之間的關(guān)系,用于表示系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖,94,UML 圖:部署圖,部署圖(Deployment Diagram) 部署圖反映了系統(tǒng)中軟件和硬件的物理架構(gòu),表示系統(tǒng)運(yùn)行時(shí)的處理節(jié)點(diǎn)以及節(jié)點(diǎn)中組件的配置。,95,對(duì)象約束語(yǔ)言(OCL),對(duì)象約束
36、語(yǔ)言 對(duì)象約束語(yǔ)言(OCL,Object Constraint Language)是一種形式語(yǔ)言,用于表示施加于模型元素上的約束。,96,UML 工具,Rational Rose Microsoft Visio 教育在線可下載,97,4.3 面向?qū)ο蠓治?參考書: 1、面向?qū)ο蠓治雠c設(shè)計(jì) 麻志毅 機(jī)械工業(yè)出版社 2、UML基礎(chǔ)、案例與應(yīng)用 Joseph Schmuller 人民郵電出版社,OOA過(guò)程,4.3.1需求模型-用況圖,問(wèn)題的提出:在系統(tǒng)尚未存在時(shí),如何描繪用戶需要一個(gè)什么樣的系統(tǒng)?如何規(guī)范地定義用戶需求? 考慮問(wèn)題的思路:把系統(tǒng)看作一個(gè)黑箱,看它對(duì)外部的客觀世界發(fā)揮什么作用,描述它外
37、部可見(jiàn)的行為。,系統(tǒng)是由一條邊界包圍起來(lái)的未知空間,把內(nèi)外交互情況描述清楚,就確切地定義了系統(tǒng)的需求,用況圖,系統(tǒng)邊界 參與者 用況 用況的關(guān)系 包含 擴(kuò)展 泛化 用況圖,102,系統(tǒng)邊界,系統(tǒng)邊界:一個(gè)系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線。,參與者(人員),參與者(設(shè)備),參與者(外系統(tǒng)),參與者:在系統(tǒng)邊界以外,與系統(tǒng)進(jìn)行交互的事物人員、設(shè)備、外系統(tǒng),系統(tǒng)邊界,現(xiàn)實(shí)世界中的事物與系統(tǒng)的關(guān)系包括如下幾種情況: 某些事物位于系統(tǒng)邊界內(nèi),作為系統(tǒng)成分。 某些事物位于系統(tǒng)邊界外,作為參與者。 某些事物可能既有一個(gè)對(duì)象作為其抽象描述,而本身(作為現(xiàn)實(shí)世界中的事物)又是在系統(tǒng)邊界以外與系
38、統(tǒng)進(jìn)行交互的參與者。 某些事物即使屬于問(wèn)題域,也與系統(tǒng)責(zé)任沒(méi)有什么關(guān)系。,認(rèn)識(shí)清楚上述事物之間的關(guān)系,也就劃分出了系統(tǒng)邊界。,參與者,簡(jiǎn)言之,參與者是在系統(tǒng)之外的與系統(tǒng)進(jìn)行交互的任何事物。 1、 概念與表示法 一個(gè)參與者定義了用況的使用者在與這些用況交互時(shí)所扮演的一組功能高內(nèi)聚的角色。 參與者是與系統(tǒng)交互的任何事務(wù)。,收款,檢查,售貨員,參與者可以向系統(tǒng)發(fā)出請(qǐng)求 參與者回復(fù)系統(tǒng)的響應(yīng),參與者和系統(tǒng)之間可能存在著復(fù)雜的對(duì)話,所有的參與者與系統(tǒng)間的請(qǐng)求/響應(yīng)確定了系統(tǒng)邊界,一個(gè)參與者的一個(gè)實(shí)例,要以一種特定的方式與系統(tǒng)進(jìn)行交互。,如果一組參與者具有共同的性質(zhì),可以把這些性質(zhì)抽取出來(lái)放在另一個(gè)參與者
39、中,它們?cè)購(gòu)闹欣^承,把這種關(guān)系稱為參與者之間的泛化關(guān)系。,A,從參與者A到參與者B之間的泛化關(guān)系是指,A的實(shí)例除了擁有自己的與系統(tǒng)的交互外,還擁有B的實(shí)例與系統(tǒng)進(jìn)行的交互。, 用戶 從直接使用系統(tǒng)的人員中發(fā)現(xiàn)參與者。 這里強(qiáng)調(diào)的是直接使用,而不是間接的。 特定的人,在系統(tǒng)中可扮演不同的角色。 例如,添加數(shù)據(jù)、統(tǒng)計(jì)某項(xiàng)數(shù)據(jù)及產(chǎn)生匯總表的那個(gè)人就扮演了三種不同的角色,反映為三種不同的參與者。 例如,用戶角色的類別可為:目標(biāo)終端用戶、管理員、經(jīng)理或顧客。,2、 識(shí)別參與者, 設(shè)備 識(shí)別所有與系統(tǒng)交互的設(shè)備。 這樣的設(shè)備與系統(tǒng)相連,向系統(tǒng)提供外界信息,或在系統(tǒng)的控制下運(yùn)行。如外部傳感器(輸入信息)和受
40、控馬達(dá)(輸出信息)。 通常,不包括監(jiān)視器、鍵盤、鼠標(biāo)和其它的標(biāo)準(zhǔn)的用戶接口類型設(shè)備。, 外部系統(tǒng) 所有與系統(tǒng)交互的外部應(yīng)用系統(tǒng)都是參與者。 從系統(tǒng)邊界的角度,應(yīng)該把與軟件系統(tǒng)一起運(yùn)行以完成特定任務(wù)的應(yīng)用系統(tǒng),看作是外部的應(yīng)用。相對(duì)于當(dāng)前在正在開(kāi)發(fā)的系統(tǒng)而言,外部應(yīng)用系統(tǒng)可以是其他子系統(tǒng)、上級(jí)系統(tǒng)、下級(jí)系統(tǒng)或任何與它進(jìn)行協(xié)作的系統(tǒng),但對(duì)它的開(kāi)發(fā)并不是當(dāng)前系統(tǒng)的開(kāi)發(fā)小組的責(zé)任。,超市銷售管理系統(tǒng),收款員,供貨員,上級(jí)系統(tǒng),參與者:收款員、供貨員、導(dǎo)購(gòu)員、經(jīng)理、保安、顧客 收款機(jī)?,用況是對(duì)參與者使用系統(tǒng)的一項(xiàng)功能時(shí)所進(jìn)行的交互過(guò)程的一個(gè)文字描述序列。,1、定義及表示法,用況,ATM取款,用例: 用
41、戶從ATM機(jī)提取一定數(shù)量的紙幣。 主參加者:客戶 環(huán)境目標(biāo):持有效銀行卡的客戶能提出指定金額的人民幣。 前置條件: ATM系統(tǒng)中有足夠數(shù)量的現(xiàn)金,ATM系統(tǒng)空閑,客戶插入有效銀行卡,一次提取金額2000元人民幣。 觸發(fā)器:客戶在ATM機(jī)中插卡時(shí)。 步驟序列: 1、用戶插入銀行卡 2、輸入密碼 3、選擇取錢功能 4、輸入金額 5、取錢 6、取出銀行卡 異常: 1、銀行卡或密碼無(wú)效時(shí),顯示恰當(dāng)?shù)腻e(cuò)誤信息。 2、輸入金額大于2000元時(shí),顯示恰當(dāng)?shù)男畔⑻崾尽?優(yōu)先級(jí):必須被實(shí)現(xiàn)。 何時(shí)可用:首次開(kāi)發(fā)。 使用頻率:每天多次。 后置條件:用戶完成操作后退卡。 未解決的問(wèn)題: 客戶輸入密碼時(shí),從按下第一個(gè)
42、按鍵開(kāi)始必須在多長(zhǎng)時(shí)間內(nèi)輸入密碼?,用況示例1,幾點(diǎn)說(shuō)明: (1)一個(gè)用況描述參與者對(duì)一項(xiàng)系統(tǒng)功能的使用情況。而且只有當(dāng)外部的參與者與該系統(tǒng)進(jìn)行交互時(shí),該功能才發(fā)揮作用。 (2)用況中描述的行為實(shí)際上是系統(tǒng)級(jí)的。在用況內(nèi)所描述的交互中的動(dòng)作應(yīng)該是詳細(xì)的,準(zhǔn)則是對(duì)用況的理解不產(chǎn)生歧義即可;若描述得過(guò)于綜合,則不易認(rèn)識(shí)清楚系統(tǒng)的功能。 (3)陳述參與者和系統(tǒng)在交互過(guò)程中雙方所做的事。而且描述彼此為對(duì)方直接地做什么事,不描述怎么做,內(nèi)部細(xì)節(jié)不要在其中描述。 (4)用況既表達(dá)了系統(tǒng)的功能需求,也表達(dá)了系統(tǒng)的功能劃分。,(5)描述應(yīng)力求準(zhǔn)確、清晰,允許概括,但不要把雙方的行為混在一起。 (6)系統(tǒng)執(zhí)行該
43、動(dòng)作序列來(lái)為參與者產(chǎn)生一個(gè)可觀察的結(jié)果值。 (7)用況描述的是一個(gè)參與者所使用的一項(xiàng)系統(tǒng)功能,該項(xiàng)功能應(yīng)該相對(duì)完整。這就要求一個(gè)用況描述的功能,即不能過(guò)大以至于包含過(guò)多的內(nèi)容,也不能過(guò)小以至于僅包含完成一項(xiàng)功能的若干步驟。 (8)用況描述中的一個(gè)步驟應(yīng)該描述且僅描述參與者或系統(tǒng)要完成的一件事情。,2、 用況與參與者之間的關(guān)系,用況與參與者間的關(guān)聯(lián)是參與者在用況中的參與(也就是參與者實(shí)例與用況實(shí)例之間的相互通信)。 若沒(méi)有進(jìn)行特殊的說(shuō)明,任何一方都可發(fā)送和接收消息。即交互是雙向的,參與者能夠產(chǎn)生對(duì)系統(tǒng)的請(qǐng)求,或系統(tǒng)要求參與者采取某些動(dòng)作。 這是參與者和用況之間的唯一關(guān)系。,用況的一個(gè)場(chǎng)景是指用況
44、執(zhí)行過(guò)程中的一個(gè)特定的實(shí)例或執(zhí)行路徑。,收款,檢查,售貨員,一個(gè)用況可能要與系統(tǒng)的一個(gè)或幾個(gè)參與者交互。,統(tǒng)計(jì)員,把參與者和用況之間的關(guān)聯(lián)表示成參與者和用況之間的一條實(shí)線。,3、 用況之間的關(guān)系 在下述情況下,就需要考慮產(chǎn)生新的用況,并在用況間建立關(guān)系: 在一個(gè)用況中存在著幾處重復(fù)使用的動(dòng)作序列; 在幾個(gè)用況中存在著重復(fù)使用的動(dòng)作序列; 一個(gè)用況中的主要?jiǎng)幼餍蛄谢蚍种?dòng)作序列過(guò)于冗長(zhǎng)或復(fù)雜,而且分離它們有助于管理和理解。,1)擴(kuò)展,從基用況到擴(kuò)展用況的擴(kuò)展關(guān)系表明:按基用況中指定的擴(kuò)展條件,把擴(kuò)展用況的行為插入到由基用況中的擴(kuò)展點(diǎn)定義的位置。 通過(guò)敞開(kāi)的虛線箭頭表示用況之間的擴(kuò)展關(guān)系,該箭頭從
45、提供擴(kuò)展的用況指向基用況。這個(gè)箭頭用關(guān)鍵字標(biāo)記??梢栽谶@個(gè)關(guān)鍵字附近表示這個(gè)關(guān)系的條件。,基用況是可單獨(dú)存在的,但是在一定的條件下,它的行為可以被另一個(gè)用況的行為擴(kuò)展。在擴(kuò)展用況中可定義一組行為增量,在其中定義的行為離開(kāi)基用況單獨(dú)是沒(méi)意義的。 一個(gè)擴(kuò)展用況可以擴(kuò)展多個(gè)用況,一個(gè)用況也可以被多個(gè)用況擴(kuò)展,甚至一個(gè)擴(kuò)展用況自身也可以被其他擴(kuò)展用況來(lái)擴(kuò)展。,適用之處: (1)異常情況 (2)正常的變形描述時(shí),而且希望采用更多的控制方式時(shí),采用擴(kuò)展。即在一個(gè)變化點(diǎn)上可附加多個(gè)變體的場(chǎng)合下使用。 (3)用擴(kuò)展關(guān)系來(lái)區(qū)分所實(shí)現(xiàn)系統(tǒng)的可配置部分。,一個(gè)擴(kuò)展點(diǎn)是基用況中的一個(gè)位置,在這樣的位置上,如果擴(kuò)展條件
46、為真,就在其中插入擴(kuò)展用況中描述的全部動(dòng)作序列或其中的一部分,并予以執(zhí)行。執(zhí)行完后,基用況繼續(xù)執(zhí)行擴(kuò)展點(diǎn)下面的行為。如果擴(kuò)展條件為假,擴(kuò)展不會(huì)發(fā)生。 可以把擴(kuò)展點(diǎn)列在用況中的一個(gè)題頭為“擴(kuò)展點(diǎn)”的分欄中。以一種適當(dāng)?shù)姆绞浇o出擴(kuò)展點(diǎn)的位置描述,通常采用普通的文本。,基用況,擴(kuò)展用況,2)包含,A ,用況X,A ,用況Y,從基用況到被包含用況的包含關(guān)系表明:基用況在它內(nèi)部說(shuō)明的某一(些)位置上顯式地使用供應(yīng)者用況的行為的結(jié)果。 通過(guò)一個(gè)敞開(kāi)的虛線箭頭表示用況之間的包含關(guān)系,該箭頭從基用況指向被包含的用況。這個(gè)箭頭用關(guān)鍵字標(biāo)記。,包含關(guān)系使得可在一個(gè)用況中局部化多個(gè)用況中共同的活動(dòng)序列。這樣,可以避
47、免多次描述同一事件流;當(dāng)這個(gè)共同的序列發(fā)生變化時(shí),這樣就顯現(xiàn)出優(yōu)勢(shì),即只需要在一個(gè)地方進(jìn)行改動(dòng)。,被包含用況,基用況,3)泛化 用況之間的泛化關(guān)系就像類之間的泛化關(guān)系一樣。子用況繼承父用況的行為和含義;子用況還可以增加或覆蓋父用況的行為;子用況可以出現(xiàn)在父用況出現(xiàn)的任何位置(父和子均有具體的實(shí)例)。 用一個(gè)指向父用況的帶有封閉的空心箭頭的實(shí)線來(lái)表示用況之間的泛化關(guān)系。,B,A,資金轉(zhuǎn)帳,支付費(fèi)用,扣除透支利息,也可以使用包含,處理取款單 業(yè)務(wù)員輸入處理取款命令 Include 檢查口令 收集客戶的取款單上的信息; 加急(擴(kuò)展點(diǎn))如果客戶選擇了加急 extend 處理加急取款單 ,被包含的用況可
48、以 單獨(dú)存在,5 捕獲用況 1)利用參與者捕獲用況,對(duì)所有的參與者(把自己作為參與者),提問(wèn)下列問(wèn)題: 每個(gè)參與者的主要任務(wù)是什么?粗粒度 在交互過(guò)程中,它們是怎樣使用系統(tǒng)的服務(wù)來(lái)完成它們的任務(wù)以達(dá)到目的? 細(xì)粒度 為了達(dá)到某種目的,參與者參加什么活動(dòng)?該參與者是否將讀寫系統(tǒng)的任何信息?參與者是否把系統(tǒng)外部的變化通知系統(tǒng)?參與者是否希望系統(tǒng)把預(yù)料之外的變化通知自己? 細(xì)粒度 是什么事件引起了與系統(tǒng)進(jìn)行交互的序列? 細(xì)粒度 它們參加了什么在本質(zhì)上是不同的過(guò)程? 能完成特定功能的每一項(xiàng)活動(dòng)明確地是一個(gè)用況。這些參與者參與的活動(dòng),通常會(huì)導(dǎo)致其它用況。,2)從系統(tǒng)功能角度捕獲用況 (1)以窮舉的方式檢
49、查用戶對(duì)系統(tǒng)的功能需求是否能在各個(gè)用況中體現(xiàn)出來(lái)。 (2)以窮舉的方式考慮每一個(gè)參與者與系統(tǒng)的交互情況,看看每個(gè)參與者要求系統(tǒng)提供什么功能,以及參與者的每一項(xiàng)輸入信息將要求系統(tǒng)作出什么反映,進(jìn)行什么處理。 (3)考慮對(duì)例外情況的處理。針對(duì)用況描述的基本流,要詳盡地考慮各種其他的情況 (4) 一個(gè)用況描述一項(xiàng)功能,這項(xiàng)功能不能過(guò)大。例如,把一個(gè)企業(yè)信息管理系統(tǒng)粗略地分為生產(chǎn)管理、供銷管理、財(cái)務(wù)管理和人事管理等幾大方面的功能,就顯得粒度太大了,應(yīng)該再進(jìn)行細(xì)化。 (5)一個(gè)用況應(yīng)該是一個(gè)完整的任務(wù),通常應(yīng)該在一個(gè)相對(duì)短的時(shí)間段內(nèi)完成。如果一個(gè)用況的各部分被分配在不同的時(shí)間段,尤其被不同的參與者執(zhí)行,
50、最好還是將各部分作為單獨(dú)的用況對(duì)待。,6、描述用況,用況文檔模板 用況名 描述:對(duì)該用況的一句或兩句的描述。 參與者:該用況的參與者。 包含:該用況所包含的用況,以及包含它的用況。 擴(kuò)展:該用況可以擴(kuò)展的用況,以及擴(kuò)展它的用況。 泛化:該用況的子用況和父用況。 前置條件:?jiǎn)?dòng)該用況所必須具備的條件。 事件流:該用況的細(xì)節(jié)。(基本流與可選流) 后置條件:在該用況結(jié)束時(shí)確保成立的條件。 異常:在該用況的執(zhí)行的過(guò)程中可能引起的例外*。 注釋:對(duì)該用況是重要的任何附加信息。,用況圖 用況圖呈現(xiàn)了一些參與者和一些用況,以及它們之間的關(guān)系。 在圖形上,用況圖是一幅由一組參與者、一組用況以及這些元素之間的關(guān)
51、系組成的圖。這些關(guān)系是參與者和用況之間的關(guān)聯(lián)、參與者之間的泛化,以及用況之間的泛化、擴(kuò)展和包含。 可以選擇把一些用況用一個(gè)矩形圍起來(lái),用來(lái)表示系統(tǒng)邊界。 用況圖可以包含注解和約束。,示例,該用況應(yīng)優(yōu)先開(kāi)發(fā),用況圖的益處: 為開(kāi)發(fā)者提供一種認(rèn)識(shí)和理解系統(tǒng)的方法 為領(lǐng)域?qū)<?、最終用戶和開(kāi)發(fā)者提供一種相互交流的手段。 易于對(duì)需求規(guī)范化 用戶給出的需求材料常常是不規(guī)范或不夠準(zhǔn)確的。故要較為規(guī)范地定義用況,以全面和比較準(zhǔn)確地用用況中表達(dá)用戶的功能需求。 有利于進(jìn)行OOA 有助于發(fā)現(xiàn)主動(dòng)對(duì)象 對(duì)系統(tǒng)測(cè)試來(lái)說(shuō),產(chǎn)生測(cè)試用例。 有助于設(shè)計(jì)人機(jī)界面 ,審查 參與者 確定系統(tǒng)環(huán)境中的所有與系統(tǒng)有關(guān)的角色,并都?xì)w入
52、了相應(yīng)的參與者。 每個(gè)參與者都至少和一個(gè)用況關(guān)聯(lián); 若一個(gè)參與者是另一個(gè)參與者的一部分,或扮演了類似的角色,考慮在它們之間使用泛化關(guān)系; 用況 每個(gè)用況都至少和一個(gè)參與者相關(guān); 若兩個(gè)用況有相同或相似的序列,可能需要合并它們,或抽取出一個(gè)新用況,在它們之間使用包含、擴(kuò)展或泛化關(guān)系。 若用況過(guò)于復(fù)雜,為了易于理解,考慮進(jìn)行分解;若一個(gè)用況中有完全不同的事件流,最好把它分解成不同的用況,例題 很多軟件系統(tǒng)在一開(kāi)始都需要登錄,若用戶登錄成功,則可進(jìn)入系統(tǒng)。 如下以一個(gè)研究生學(xué)籍管理系統(tǒng)為例,描述四種登錄方法。 為了簡(jiǎn)化起見(jiàn),假設(shè)此處僅描述登錄、選課和查看學(xué)分這3項(xiàng)功能。,方案一: 由于選課和查看學(xué)分
53、都需要登錄,故專門設(shè)立一個(gè)“登錄”用況。若登錄成功,則可以進(jìn)行選課,也可以進(jìn)行查看學(xué)分。,該方法的缺點(diǎn)是, (1)必須要了解系統(tǒng)的所有其它模塊,才能描述清楚“登錄”用況。向系統(tǒng)增加新用況時(shí),也要修改登錄用況。從維護(hù)的角度看,有時(shí)會(huì)忘記對(duì)“登錄”用況進(jìn)行修改。 (2) “登錄”用況的功能不單一。,研究生啟動(dòng)系統(tǒng); 系統(tǒng)提示研究生輸入研究生證號(hào)和密碼; 研究生輸入研究生證號(hào)和密碼; 系統(tǒng)進(jìn)行驗(yàn)證,給出驗(yàn)證信息; 若通過(guò),若該生選擇選課 系統(tǒng)執(zhí)行用況“選課”; 若通過(guò),若該生選擇查看學(xué)分 系統(tǒng)執(zhí)行用況“查看學(xué)分”;,如下為對(duì)用況“登錄”的描述:,方案二: 讓所有的相關(guān)用況都包含登錄用況。,如下為對(duì)用
54、況“選課”的描述:,研究生啟動(dòng)系統(tǒng),調(diào)用用況“登錄” 若通過(guò),系統(tǒng)執(zhí)行用況“選課”的其余部分;,這個(gè)方法中的“登錄”用況僅描述有關(guān)登錄的信息。 其缺點(diǎn)為,對(duì)研究生要進(jìn)行多次驗(yàn)證。 研究生執(zhí)行系統(tǒng)的每項(xiàng)功能都要先登錄。,研究生啟動(dòng)系統(tǒng),調(diào)用用況“登錄” 若通過(guò),系統(tǒng)執(zhí)行用況“查看學(xué)分”的其余部分;,如下為對(duì)用況“查看學(xué)分”的描述:,方案三: 使用擴(kuò)展,設(shè)計(jì)系統(tǒng)登錄。,登錄 擴(kuò)展點(diǎn) 選課 查看學(xué)分,選課,extend,extend,研究生,如下為對(duì)用況“登錄”的描述,研究生啟動(dòng)系統(tǒng); 系統(tǒng)提示研究生輸入研究生證號(hào)和密碼; 研究生輸入研究生證號(hào)和密碼; 系統(tǒng)進(jìn)行驗(yàn)證,給出驗(yàn)證信息; 若通過(guò),若該生選
55、擇選課 系統(tǒng)在擴(kuò)展點(diǎn)”選課”處執(zhí)行用況“選課”; 若通過(guò),若該生選擇查看學(xué)分 系統(tǒng)在擴(kuò)展點(diǎn)”查看學(xué)分”處執(zhí)行用況“查看學(xué)分”;,該方法與方法一相比,對(duì)“登錄”用況的描述要清楚一些。在增加新用況時(shí),僅在登錄用況中添加擴(kuò)展點(diǎn)即可。 缺點(diǎn):“登陸”用況的功能仍然不單一。,擴(kuò)展條件:選擇選課 擴(kuò)展點(diǎn):選課,查看學(xué)分,擴(kuò)展條件:選擇查看學(xué)分 擴(kuò)展點(diǎn):查看學(xué)分,方案四: 登錄用況完全獨(dú)立于其它用況,如下為對(duì)用況“登錄”的描述:,研究生啟動(dòng)系統(tǒng); 系統(tǒng)提示研究生輸入研究生證號(hào)和密碼; 研究生輸入研究生證號(hào)和密碼; 系統(tǒng)進(jìn)行驗(yàn)證,給出驗(yàn)證信息;,如下為對(duì)用況“選課”的開(kāi)始部分的描述,若研究生通過(guò)了登錄且選擇了
56、選課, 系統(tǒng)開(kāi)始執(zhí)行用況“選課”; ,使用該方法,必須要在“選課”用況和“查看學(xué)分”用況中指定前置條件:只有在登錄成功后才能執(zhí)行自己。,例:選課系統(tǒng)。給教師分配課程和學(xué)生注冊(cè)課程。 在每個(gè)學(xué)期選課開(kāi)始之前,系統(tǒng)管理員需要對(duì)系統(tǒng)中的教師信息、課程信息和學(xué)生信息進(jìn)行維護(hù)。學(xué)期結(jié)束后,將本學(xué)期成績(jī)歸檔到學(xué)籍檔案系統(tǒng)。 學(xué)生登錄系統(tǒng)后會(huì)得到一份本學(xué)期將要開(kāi)設(shè)的課程目錄。每門課程包含的信息有開(kāi)課系別、教師、上課時(shí)間、教室、容納的學(xué)生數(shù)量和學(xué)生選擇課程的先決條件。 當(dāng)學(xué)生選擇了一門課程后,系統(tǒng)需訪問(wèn)學(xué)籍檔案系統(tǒng),查詢是否符合選課的先決條件 。如果不符合,系統(tǒng)給出提示信息。 每個(gè)學(xué)期有一段時(shí)間讓學(xué)生可以改變
57、計(jì)劃,學(xué)生可以在這段時(shí)間內(nèi)訪問(wèn)聯(lián)機(jī)系統(tǒng)以增選課程或退選課程。,例:選課系統(tǒng)。給教師分配課程和學(xué)生注冊(cè)課程。 教師可以訪問(wèn)在線系統(tǒng),查看將要教授哪些課程和每門課程有哪些學(xué)生報(bào)名,課程考試結(jié)束后可以提交成績(jī),系統(tǒng)可以生成帶有成績(jī)分布統(tǒng)計(jì)結(jié)果的成績(jī)單。,1. 確定業(yè)務(wù)參與者,通過(guò)關(guān)注系統(tǒng)的業(yè)務(wù)參與者,我們可以將重點(diǎn)放在如何使用系統(tǒng),而不是如何構(gòu)造系統(tǒng)上,并且有助于進(jìn)一步明確系統(tǒng)的范圍和邊界。 當(dāng)系統(tǒng)比較龐大和復(fù)雜時(shí),要搞清楚系統(tǒng)的需求往往比較困難,通過(guò)明確參與者,可以針對(duì)參與者確定系統(tǒng)需求,有助于保證系統(tǒng)需求的完整性。,1. 確定業(yè)務(wù)參與者,可通過(guò)以下資料來(lái)確定系統(tǒng)的參與者: 標(biāo)識(shí)系統(tǒng)范圍和邊界的環(huán)
58、境圖; 現(xiàn)有系統(tǒng)(如果有的話)的文檔和用戶手冊(cè); 項(xiàng)目會(huì)議和研討會(huì)的記錄; 現(xiàn)有的需求文檔、工作手冊(cè)等。,1. 確定業(yè)務(wù)參與者,還可以通過(guò)提出以下問(wèn)題,明確系統(tǒng)的參與者: 誰(shuí)或者什么為系統(tǒng)提供輸入? 誰(shuí)或者什么接收系統(tǒng)的輸出? 需要與其他系統(tǒng)連接的接口嗎? 是否存在在預(yù)定的時(shí)間自動(dòng)觸發(fā)的事件? 誰(shuí)將維護(hù)系統(tǒng)中的信息?,1. 確定業(yè)務(wù)參與者,從選課系統(tǒng)的需求描述中,可以確定4類參與者: 學(xué)生(Student) 教師(Teacher) 系統(tǒng)管理員(Administrator) 學(xué)籍檔案系統(tǒng)(Archive System),2. 確定業(yè)務(wù)需求用例,以下問(wèn)題可以幫助我們更好地標(biāo)識(shí)系統(tǒng)的用例: 每個(gè)參與
59、者的特定任務(wù)是什么? 是否每個(gè)參與者都要從系統(tǒng)中創(chuàng)建、存儲(chǔ)、改變、移動(dòng)或讀取信息? 是否任何參與者需要通知系統(tǒng)有關(guān)突發(fā)性的、外部的改變? 哪些用例支持或維護(hù)系統(tǒng)? 目前的用例是否覆蓋了所有功能需求?,2. 確定業(yè)務(wù)需求用例,環(huán)境圖是分析參與者和發(fā)現(xiàn)潛在用例的極好來(lái)源,它不僅可以用在結(jié)構(gòu)化分析方法中,也可以用于面向?qū)ο蟮姆治龇椒ㄖ小?通過(guò)環(huán)境圖,可以確定系統(tǒng)的主要輸入輸出,通過(guò)提交和接收輸入輸出的各方確定潛在的用例。,選課系統(tǒng)的環(huán)境圖,選課系統(tǒng)的業(yè)務(wù)列表,用例的規(guī)格說(shuō)明,對(duì)用例的完整描述包括用例名稱、執(zhí)行者、前置條件、后置條件、一個(gè)主事件流、零到多個(gè)備選事件流。 主事件流表示正常情況下執(zhí)行者與系統(tǒng)之間的信息交互及動(dòng)作序列,備選事件流則表示特殊情況或異常情況下的信息交互及動(dòng)作序列。 應(yīng)給出每個(gè)用例
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 孕前中醫(yī)特色護(hù)理課件
- 車輛贈(zèng)與及二手車置換服務(wù)協(xié)議
- 事業(yè)單位停薪留職人員原單位知識(shí)產(chǎn)權(quán)保護(hù)協(xié)議
- 無(wú)人機(jī)測(cè)繪項(xiàng)目保密及責(zé)任承擔(dān)合同
- 畢業(yè)生就業(yè)實(shí)習(xí)與就業(yè)培訓(xùn)協(xié)議書
- 怎么拿八桂教學(xué)通的課件
- 黨紀(jì)處分與黨員權(quán)利義務(wù)等知識(shí)綜合測(cè)試試卷
- 杭州vr教學(xué)課件廠家
- 企業(yè)環(huán)保培訓(xùn)與能力建設(shè)計(jì)劃考核試卷
- 高原氣象站電力系統(tǒng)抗風(fēng)沙能力研究考核試卷
- 人工智能技術(shù)創(chuàng)新對(duì)產(chǎn)業(yè)高質(zhì)量發(fā)展的推動(dòng)作用
- 2024年中國(guó)中高端電子鋁箔行業(yè)市場(chǎng)調(diào)查報(bào)告
- 2025年中國(guó)征信行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃研究報(bào)告
- Unit 1 Happy Holiday 第6課時(shí)(Project Reading Plus) 2025-2026學(xué)年人教版英語(yǔ)八年級(jí)下冊(cè)
- 部編人教版三年級(jí)上冊(cè)語(yǔ)文必記必背
- 2025年中國(guó)PHA可降解塑料行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 《學(xué)習(xí)雷鋒精神爭(zhēng)主題班會(huì)》課件
- 2025江蘇省射陽(yáng)中等專業(yè)學(xué)校工作人員招聘考試真題
- 河南開(kāi)封工程職業(yè)學(xué)院招聘筆試真題2024
- 2025河南省豫地科技集團(tuán)有限公司社會(huì)招聘169人筆試參考題庫(kù)附帶答案詳解析集合
- 開(kāi)標(biāo)室使用管理制度
評(píng)論
0/150
提交評(píng)論