版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章 建立需求模型——用況圖5.1需求分析和系統(tǒng)分析需求分析的確切含義是對用戶需求進(jìn)行分析,旨在產(chǎn)生一份明確、規(guī)范的需求定義。OOA的主要內(nèi)容是研究問題域中與需求有關(guān)的事物,把它們抽象為系統(tǒng)中的對象,建立類圖。確切地講,這些工作應(yīng)該叫做系統(tǒng)分析,而不是嚴(yán)格意義上的需求分析。早期的OOA缺乏一個(gè)良好的基礎(chǔ)——對需求的規(guī)范描述。需求說明需求分析健壯分析需求模型分析模型分析過程Jacobson方法(OOSE)提出用況(usecase)概念,解決了對需求的描述問題,其分析過程如下:第一頁,共一百八十頁。問題域(抽象的來源)OOA模型(類圖)抽象OOA是將問題域中的事物抽象為系統(tǒng)中的對象系統(tǒng)責(zé)任(抽象的目標(biāo))抽象的目標(biāo)是系統(tǒng)責(zé)任——需求用況的概念解決了對需求的描述問題需求模型(用況圖)第二頁,共一百八十頁。5.2基本思路問題的提出:在系統(tǒng)尚未存在時(shí),如何描繪用戶需要一個(gè)什么樣的系統(tǒng)?如何規(guī)范地定義用戶需求?考慮問題的思路:把系統(tǒng)看作一個(gè)黑箱,看它對外部的客觀世界發(fā)揮什么作用,描述其外部可見的行為。系統(tǒng)是由一條邊界包圍起來的未知空間只通過有限的幾個(gè)接口與外部交互系統(tǒng)邊界以外是與系統(tǒng)進(jìn)行交互的參與者把內(nèi)外交互情況描述清楚,就確切地定義了系統(tǒng)的需求第三頁,共一百八十頁。系統(tǒng)邊界系統(tǒng)邊界:一個(gè)系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線。系統(tǒng):被開發(fā)的計(jì)算機(jī)軟硬件系統(tǒng),不是指現(xiàn)實(shí)系統(tǒng)。系統(tǒng)成分:在OOA和OOD中定義并且在編程時(shí)加以實(shí)現(xiàn)的系統(tǒng)元素——對象對象對象對象對象對象對象參與者(人員)參與者(設(shè)備)參與者(外系統(tǒng))參與者:在系統(tǒng)邊界以外,與系統(tǒng)進(jìn)行交互的事物——人員、設(shè)備、外系統(tǒng)5.3系統(tǒng)邊界與參與者第四頁,共一百八十頁?,F(xiàn)實(shí)世界中的事物與系統(tǒng)之間的關(guān)系——分四種情況(1)被抽象為系統(tǒng)中的對象汽車飛機(jī)獎(jiǎng)杯鐘表起重機(jī)職員樓房天平(2)只作為系統(tǒng)外部的參與者與系統(tǒng)交互(4)與系統(tǒng)無關(guān)操作員(3)既是系統(tǒng)中的對象,本身又作為參與者與系統(tǒng)交互第五頁,共一百八十頁。人員——系統(tǒng)的直接使用者直接為系統(tǒng)服務(wù)的人員設(shè)備——與系統(tǒng)直接相聯(lián)的設(shè)備為系統(tǒng)提供信息在系統(tǒng)控制下運(yùn)行不與系統(tǒng)相連的設(shè)備×計(jì)算機(jī)設(shè)備×外系統(tǒng)——上級系統(tǒng)子系統(tǒng)其它系統(tǒng)如何發(fā)現(xiàn)參與者——考慮人員、設(shè)備、外系統(tǒng)第六頁,共一百八十頁。什么是用況I.Jacobson:用況是通過使用系統(tǒng)功能的某些部分而使用系統(tǒng)的一種具體方式。每個(gè)用況包括一個(gè)由參與者發(fā)動(dòng)的完整的事件過程。它詳細(xì)說明了參與者和系統(tǒng)之間發(fā)生的交互。因此,一個(gè)用況是一個(gè)由參與者和系統(tǒng)在一次對話中執(zhí)行的特定的相關(guān)事務(wù)序列。全部用況的集合則說明了所有可能存在的系統(tǒng)使用方式?!秾ο蠹夹g(shù)詞典》:1.對一個(gè)系統(tǒng)或者一個(gè)應(yīng)用的一種單一的使用方式所進(jìn)行的描述。2.關(guān)于單個(gè)參與者在與系統(tǒng)的對話中所執(zhí)行的處理的行為陳述序列。UML:對系統(tǒng)在與它的參與者交互時(shí)所能執(zhí)行的一組動(dòng)作序列(包括其變體)的描述。???本書的定義:用況是對參與者使用系統(tǒng)的一項(xiàng)功能時(shí)所進(jìn)行的交互過程的描述,其中包含由雙方交替執(zhí)行的一系列動(dòng)作。5.4用況(usecase)第七頁,共一百八十頁。術(shù)語“usecase”的準(zhǔn)確含義——使用情況是對一項(xiàng)系統(tǒng)功能使用情況的一般描述,它對于每一次使用都普遍適應(yīng),既不是應(yīng)用實(shí)例,也不是舉例說明?!虼俗g為“用況”,而不是“用例”。幾點(diǎn)說明:(1)一個(gè)用況只描述參與者對單獨(dú)一項(xiàng)系統(tǒng)功能的使用情況;(2)通常是平鋪直敘的文字描述,UML也允許其他描述方式;(3)陳述參與者和系統(tǒng)在交互過程中雙方所做的事;(4)所描述的交互既可能由參與者發(fā)起也可能由系統(tǒng)發(fā)起;(5)描述彼此為對方直接地做什么事,不描述怎么做;(6)描述應(yīng)力求準(zhǔn)確,允許概括,但不要把雙方的行為混在一起;(7)一個(gè)用況可以由多種參與者分別參與或共同參與。第八頁,共一百八十頁。內(nèi)容與書寫格式
:名稱行為陳述(分左右欄)調(diào)用語句控制語句括號或標(biāo)號收款輸入開始本次收款的命令;
作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示信息;for
顧客選購的每種商品do
輸入商品編號;
if
此種商品多于一件then
輸入商品數(shù)量
endif;
檢索商品名稱及單價(jià);貨架商品數(shù)減去售出數(shù);
if
貨架商品數(shù)低于下限then
call通知上貨
endif;計(jì)算本種商品總價(jià)并打印編號、名稱、數(shù)量、單價(jià)、總價(jià);總價(jià)累加到應(yīng)收款總數(shù);endfor;
打印應(yīng)收款總數(shù);輸入顧客付款數(shù);
計(jì)算應(yīng)找回款數(shù),打印付款數(shù)及找回款,應(yīng)收款數(shù)計(jì)入賬冊。例第九頁,共一百八十頁。如何定義用況針對單個(gè)用況的描述策略:把自己當(dāng)作參與者,與設(shè)想中的系統(tǒng)進(jìn)行交互??紤]:交互的目的是什么?需要向系統(tǒng)輸入什么信息?希望由系統(tǒng)進(jìn)行什么處理并從它得到何種結(jié)果?把上述交互過程描述出來。定義系統(tǒng)中所有的用況:(1)全面地了解和收集用戶所要求的各項(xiàng)系統(tǒng)功能,找出所有的參與者,了解與各項(xiàng)功能相關(guān)的業(yè)務(wù)流程;(2)把用戶提出的功能組織成適當(dāng)?shù)膯挝唬恳豁?xiàng)功能完成一項(xiàng)完整而相對獨(dú)立的工作;(3)窮舉每一類參與者所使用的每一項(xiàng)系統(tǒng)功能,定義相應(yīng)的用況;(4)檢查用戶對系統(tǒng)的各項(xiàng)功能需求是否都通過相應(yīng)的用況做了描述。第十頁,共一百八十頁。參與者基用況?include??extend??include?用況基用況基用況被包含用況延伸用況用況5.5用況圖參與者參與者模型元素:參與者用況延伸包含泛化5.5用況圖第十一頁,共一百八十頁。用況之間的關(guān)系——包含、延伸、泛化延伸包含問題:延伸與包含的相似性延伸的方向問題“條件”和“延伸點(diǎn)”問題“泛化”問題系統(tǒng)邊界問題PerformATMTransactionWithdrawDepositFunds泛化TransferFunds
第十二頁,共一百八十頁。用況的兩種復(fù)雜情況1、兩個(gè)(或多個(gè))參與者共享一個(gè)用況不同種類的參與者可能都要使用某一項(xiàng)系統(tǒng)功能,因此它們可能共享同一個(gè)用況例:系統(tǒng)維護(hù)登錄系統(tǒng)管理員普通用戶第十三頁,共一百八十頁。2、一個(gè)用況的執(zhí)行,可能需要兩個(gè)(甚至多個(gè))參與者同時(shí)與系統(tǒng)交互。例:網(wǎng)上購物網(wǎng)上購物客戶供貨商第十四頁,共一百八十頁。用況圖的開發(fā)過程確定系統(tǒng)邊界發(fā)現(xiàn)參與者定義用況建立用況之間的關(guān)系確定參與者和用況之間的關(guān)系繪制用況圖使用用況圖的幾條建議最重要的工作是對用況的描述不要過分深入地描述系統(tǒng)內(nèi)部的行為細(xì)節(jié)運(yùn)用最主要概念,加強(qiáng)用況內(nèi)容的描述不要陷入延伸與包含、延伸點(diǎn)、泛化等問題的爭論和辨別了解用況的局限性——主要作用是描述功能需求5.6開發(fā)過程與建議第十五頁,共一百八十頁。概念:對象(object)是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位,由一組屬性和施加于這組屬性的一組操作構(gòu)成。類(class)是具有相同屬性和操作的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,它由一個(gè)類名、一組屬性和一組操作構(gòu)成。
類和對象的關(guān)系——集合與成員,對象是類的實(shí)例在一般-特殊結(jié)構(gòu)中,特殊類的對象實(shí)例在邏輯上也都是其一般類的對象實(shí)例。不直接創(chuàng)建對象實(shí)例的類稱為抽象類(abstractclass)
學(xué)生本科生研究生例:第6章發(fā)現(xiàn)對象,定義對象類6.1對象和類的概念及其運(yùn)用第十六頁,共一百八十頁。主動(dòng)對象(activeobject)——至少有一個(gè)操作不需要接收消息就能主動(dòng)執(zhí)行的對象用于描述具有主動(dòng)行為的事物主動(dòng)對象的類叫做主動(dòng)類(activeclass)被動(dòng)對象(passiveobject)
——每個(gè)操作都必須在消息的驅(qū)動(dòng)下才能執(zhí)行的對象第十七頁,共一百八十頁。類的語義OO方法中的類在不同的語境下有兩種不同的語義:1.一個(gè)類代表由它的全部對象實(shí)例所構(gòu)成的群體日常語言表達(dá)中的例子:“公司里有管理人員、技術(shù)人員和市場人員”“馬路上汽車很多”在OO模型中:每個(gè)類都是由它的全部對象實(shí)例所構(gòu)成的集合類代表了它的全部對象實(shí)例。2.一個(gè)類代表屬于該類的任意一個(gè)對象實(shí)例從大量的個(gè)體中抽象出一個(gè)概念,再運(yùn)用這個(gè)概念時(shí)就可以代表其中的任何一個(gè)個(gè)體,例如:
“學(xué)生有一個(gè)學(xué)號,屬于一個(gè)班級,要上課”
在OO系統(tǒng)模型中定義了一個(gè)類,它就可以代表它的任何一個(gè)對象實(shí)例,例如:汽車與發(fā)動(dòng)機(jī)之間的聚合關(guān)系,表示任何一輛汽車都有一臺發(fā)動(dòng)機(jī),任何一臺發(fā)動(dòng)機(jī)都可以裝在0—1輛汽車上第十八頁,共一百八十頁。在類的抽象層次建模理由:(1)充分性:模型中一個(gè)類描述了它的全部對象實(shí)例(2)必要性:個(gè)別對象實(shí)例不能代表其他對象實(shí)例(3)符合人類的思維方式:在概念層次上表達(dá)描述事物規(guī)律(4)與OOPL保持良好的對應(yīng)(5)避免建模概念復(fù)雜化(6)消除抽象層次的混亂第十九頁,共一百八十頁。如何運(yùn)用類和對象的概念從對象出發(fā)認(rèn)識問題域?qū)栴}域中的事物抽象為對象;將具有共同特征的對象抽象為類用類以及它們之間的關(guān)系構(gòu)成整個(gè)系統(tǒng)模型;歸納演繹在模型中用類表示屬于該類的任何對象在類的規(guī)約中說明這個(gè)類將創(chuàng)建那些對象實(shí)例在程序中用類定義它的全部對象編程時(shí)靜態(tài)聲明類的對象運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建類的對象第二十頁,共一百八十頁。類名壓縮方式類名屬性名:類型名······操作名()······展開方式主動(dòng)類《active》類名············衍型(stereotype)用關(guān)鍵字或者用圖標(biāo)表示類名············UML2主動(dòng)類表示法《主動(dòng)》類名············6.2表示法在模型中用類符號來表示一個(gè)類它代表了屬于該類的全部對象實(shí)例第二十一頁,共一百八十頁。對象名:類名壓縮方式屬性名=值······UML的對象表示法:細(xì)節(jié)方式對象名:類名匿名對象:類名壓縮方式屬性名=值······細(xì)節(jié)方式:類名用所謂“匿名對象”代表類的任何一個(gè)對象實(shí)例,然而這恰恰是類的作用。第二十二頁,共一百八十頁。6.3發(fā)現(xiàn)對象研究問題域親臨現(xiàn)場深入調(diào)查研究直接觀察并向用戶及相關(guān)的業(yè)務(wù)人員進(jìn)行調(diào)查和交流,考察問題域中各種各樣的事物、它們的特征及相互關(guān)系
聽取問題域?qū)<业囊娊忸I(lǐng)域?qū)<摇夹g(shù)人員、管理者、老職員和富有經(jīng)驗(yàn)的工人等閱讀相關(guān)材料閱讀各種與問題域有關(guān)的材料,學(xué)習(xí)相關(guān)行業(yè)和領(lǐng)域的基本知識借鑒以往的系統(tǒng)查閱以往在該問題域中開發(fā)過的同類系統(tǒng)的分析文檔,吸取經(jīng)驗(yàn),發(fā)現(xiàn)可以復(fù)用的類第二十三頁,共一百八十頁。正確地運(yùn)用抽象原則對什么進(jìn)行抽象——問題域當(dāng)前目標(biāo)——系統(tǒng)責(zé)任忽略與系統(tǒng)責(zé)任無關(guān)的事物只注意與之有關(guān)的事物,抽象為系統(tǒng)中的對象
例如:學(xué)校的教師、學(xué)生、教務(wù)員和警衛(wèi)忽略與系統(tǒng)責(zé)任無關(guān)的事物特征只注意與之有關(guān)的特征,抽象為對象的屬性或操作
例如:教師的專業(yè)、職稱和身高、體重正確地提煉對象例如:對書的不同抽象在圖書館管理系統(tǒng)中以一本書作為一個(gè)對象實(shí)例在書店管理系統(tǒng)中以一種書作為一個(gè)對象實(shí)例第二十四頁,共一百八十頁。由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類人員由系統(tǒng)管理或使用其信息,或者在系統(tǒng)中呈現(xiàn)某些行為的各類組織由系統(tǒng)進(jìn)行管理的各種物品其他策略與啟發(fā)(1)考慮問題域:抽象事物事件文件結(jié)構(gòu)人員組織物品設(shè)備由系統(tǒng)進(jìn)行管理或控制,或者在系統(tǒng)中呈現(xiàn)某些行為的各種設(shè)備例如:課程、計(jì)劃、交易、賬戶需要長期記憶的事件例如:銀行的取款、存款,保險(xiǎn)公司的索賠,車輛管理中的駕駛違章泛指各種表格、檔案、證件、票據(jù)等文件例如:業(yè)務(wù)報(bào)表,人事檔案,身份證,合同,商品訂單等注意三個(gè)問題:非基礎(chǔ)數(shù)據(jù),同一事物的重復(fù)描述,多種事物信息組合從結(jié)構(gòu)得到啟發(fā),聯(lián)想到新的對象其他一切有助于發(fā)現(xiàn)對象的事物第二十五頁,共一百八十頁。(2)考慮系統(tǒng)邊界:考察在系統(tǒng)邊界以外與系統(tǒng)交互的各類參與者考慮通過那些對象處理這些參與者的交互人員設(shè)備外系統(tǒng)(3)考慮系統(tǒng)責(zé)任:
檢查每一項(xiàng)功能需求是否已有相應(yīng)的對象提供,發(fā)現(xiàn)遺漏的對象第二十六頁,共一百八十頁。審查與篩選(1)舍棄無用的對象通過屬性判斷:是否通過屬性記錄了某些有用的信息?通過操作判斷:是否通過操作提供了某些有用的功能?二者都不是——無用第二十七頁,共一百八十頁。(2)對象的精簡只有一個(gè)屬性的對象班級…………班主任姓名11班級班主任姓名…………只有一個(gè)操作的對象輸出設(shè)備…………格式轉(zhuǎn)換器文件格式轉(zhuǎn)換輸出設(shè)備……文件格式轉(zhuǎn)換……?call?第二十八頁,共一百八十頁。(3)與實(shí)現(xiàn)條件有關(guān)的對象例如:與圖形用戶界面(GUI)數(shù)據(jù)管理系統(tǒng)硬件及操作系統(tǒng)有關(guān)的對象——推遲到OOD考慮第二十九頁,共一百八十頁。6.4對象分類(1)將對象抽象為類,用類表示它的全部對象(2)審查和調(diào)整類的屬性或操作不適合該類的全部對象實(shí)例例:“汽車”類的“乘客限量”屬性——進(jìn)一步劃分特殊類屬性及操作相同的類經(jīng)過抽象,差別很大的事物可能只保留相同的特征——考慮能否合并為一個(gè)類屬性及操作相似的類——考慮能否提升出一個(gè)一般類同一事物的重復(fù)描述例:“職員”和“工作證”——取消其中一個(gè)第三十頁,共一百八十頁。(3)類的命名類的名字應(yīng)適合該類(及其特殊類)的全部對象實(shí)例反映個(gè)體而不是群體使用名詞或帶定語的名詞避免市井俚語和無意義的符號使用問題域通用的詞匯使用便于交流的語言文字可以用本地文字和英文雙重命名第三十一頁,共一百八十頁。屬性(attribute)是用來描述對象靜態(tài)特征的一個(gè)數(shù)據(jù)項(xiàng)。實(shí)例屬性(instanceattribute)和類屬性(classattribute)的區(qū)別例如:儀表類輸入電壓、功率及各種規(guī)定的質(zhì)量指標(biāo)——類屬性編號、出廠日期、精度等實(shí)際性能參數(shù)——實(shí)例屬性第7章定義對象的屬性和操作7.1屬性和操作第三十二頁,共一百八十頁。操作(operation)是用來描述對象動(dòng)態(tài)特征(行為)的一個(gè)動(dòng)作序列。近義詞:方法(method),服務(wù)(service)
被動(dòng)操作(passiveoperation):只有接收到消息才能執(zhí)行的操作
編程語言中的函數(shù)、過程等被動(dòng)成分主動(dòng)操作(activeoperation):不需要接收消息就能主動(dòng)執(zhí)行的操作編程語言中的進(jìn)程、線程等主動(dòng)成分
第三十三頁,共一百八十頁。實(shí)現(xiàn)級細(xì)節(jié)方式分析級細(xì)節(jié)方式7.2屬性和操作的表示法類名屬性名:類型名=值······操作名(參數(shù)表):返回類型······類名屬性名:類型名······操作名()······用衍型表示主動(dòng)操作?主動(dòng)?類名······操作名()······?主動(dòng)?操作名()類名······操作名()······?主動(dòng)?操作名()······操作名()······?主動(dòng)?操作名()第三十四頁,共一百八十頁。7.3定義屬性(1)策略與啟發(fā)按常識這個(gè)對象應(yīng)該有哪些屬性?人→姓名、地址、出生年月在當(dāng)前的問題域中,對象應(yīng)該有哪些屬性?商品→條形碼根據(jù)系統(tǒng)責(zé)任,這個(gè)對象應(yīng)具有哪些屬性?乘客→手機(jī)號碼建立這個(gè)對象是為了保存和管理哪些信息?物資→型號、規(guī)格、庫存量為實(shí)現(xiàn)操作的功能,需要增設(shè)哪些屬性?傳感器(信號采集功能)→時(shí)間間隔是否需要增加描述對象狀態(tài)的屬性?設(shè)備→狀態(tài)
用什么屬性表示關(guān)聯(lián)和聚合?課程→任課教師,汽車→發(fā)動(dòng)機(jī)第三十五頁,共一百八十頁。(2)審查與篩選
是否體現(xiàn)了以系統(tǒng)責(zé)任為目標(biāo)的抽象
例:書→重量? 是否描述對象本身的特征
例:課程→電話號碼? 是否可通過繼承得到? 是否可從其他屬性直接導(dǎo)出?(3)推遲到OOD考慮的問題
規(guī)范化問題 對象標(biāo)識 性能問題(4)屬性的命名與定位
命名:原則與類的命名相同 定位:針對所描述的對象適合類(及其子類)的全部對象實(shí)例第三十六頁,共一百八十頁。(1)對象行為分類系統(tǒng)行為例:創(chuàng)建、刪除、復(fù)制、轉(zhuǎn)存對象自身的行為——算法簡單的操作例:讀、寫屬性值對象自身的行為——算法復(fù)雜的操作計(jì)算或監(jiān)控7.4定義操作第三十七頁,共一百八十頁??紤]系統(tǒng)責(zé)任有哪些功能要求在本對象提供?考慮問題域?qū)ο笤趩栴}域?qū)?yīng)的事物有哪些行為?分析對象狀態(tài)對象狀態(tài)的轉(zhuǎn)換是由哪些操作引起的?追蹤操作的執(zhí)行路線模擬操作的執(zhí)行,并在整個(gè)系統(tǒng)中跟蹤(2)策略與啟發(fā)第三十八頁,共一百八十頁。審查對象的每個(gè)操作是否真正有用是否直接提供系統(tǒng)責(zé)任所要求的某項(xiàng)功能?或者響應(yīng)其它操作的請求間接地完成這種功能的某些局部操作?調(diào)整——取消無用的操作審查操作是不是高內(nèi)聚的一個(gè)操作應(yīng)該只完成一項(xiàng)單一的、完整的功能調(diào)整——拆分或合并(3)審查與調(diào)整第三十九頁,共一百八十頁。考慮問題域?qū)ο笮袨槭潜灰l(fā)的,還是主動(dòng)呈現(xiàn)的?(4)認(rèn)識對象的主動(dòng)行為操作執(zhí)行路線逆向追蹤與參與者直接交互的對象操作第四十頁,共一百八十頁。問題:分析階段為什么要給出操作流程?關(guān)于OOA/OOD分工的兩種不同觀點(diǎn)(5)操作過程描述——可采用流程圖或活動(dòng)圖yesno動(dòng)作陳述框,在框內(nèi)填寫要執(zhí)行的動(dòng)作。條件判斷框,給出一個(gè)判斷條件。轉(zhuǎn)接,用于連接各個(gè)框,表示它們之間的轉(zhuǎn)接關(guān)系。入口/出口標(biāo)記,指出操作的開始或結(jié)束。流程圖:活動(dòng)圖:在流程圖基礎(chǔ)上進(jìn)行了一些擴(kuò)展,有更強(qiáng)的描述能力(第9章介紹)第四十一頁,共一百八十頁。命名:動(dòng)詞或動(dòng)賓結(jié)構(gòu)定位:與實(shí)際事物一致例:售貨員——售貨,商品——售出在一般-特殊結(jié)構(gòu)中的位置——適合類的全部對象實(shí)例(6)操作的命名和定位商品售出從主語-謂語-賓語結(jié)構(gòu)看對象操作的設(shè)置“售貨員銷售商品”——操作應(yīng)該放在哪里?售貨員售貨?call?第四十二頁,共一百八十頁。7.5接口的概念及用途早期的面向?qū)ο蠓椒ú]有把接口作為正式的OO概念和系統(tǒng)成分,只是用來解釋OO概念“操作是對象(類)對外提供的訪問接口”20世紀(jì)90年代中后期,接口才作為一種系統(tǒng)成分出現(xiàn)在OOPL中,并且被UML作為一種模型元素UML對接口的定義及解釋:“接口(interface)是一種類目(classifier),它表示對一組緊湊的公共特征和職責(zé)的聲明。一個(gè)接口說明了一個(gè)合約;實(shí)現(xiàn)接口的任何類目的實(shí)例必須履行這個(gè)合約?!薄耙粋€(gè)給定的類目可以實(shí)現(xiàn)多個(gè)接口,而一個(gè)接口可以由多個(gè)不同的類目來實(shí)現(xiàn)?!?/p>
第四十三頁,共一百八十頁。為什么引入接口的概念售貨員商品采購員?call??call?針對不同的應(yīng)用場合組織對象的操作售貨員商品銷售采購員采購把與銷售有關(guān)的操作組織成銷售接口把與采購有關(guān)的操作組織成采購接口可替換(例如根據(jù)銷售策略的變化開發(fā)一個(gè)新的商品類)接口提供了更靈活的銜接機(jī)制第四十四頁,共一百八十頁。接口(interface)是由一組操作所形成的一個(gè)集合,它由一個(gè)名字和代表其中每個(gè)操作的特征標(biāo)記構(gòu)成。特征標(biāo)記(signature)代表了一個(gè)操作,但并不具體地定義操作的實(shí)現(xiàn)特征標(biāo)記::=<操作名>([<參數(shù)>:<類型>]{,<參數(shù)>:<類型>})[:<返回類型>]?interface?接口名稱操作1()……操作n()表示法(詳細(xì)方式):第四十五頁,共一百八十頁。接口與類的關(guān)系接口由某些類實(shí)現(xiàn)(提供),被另外某些類使用(需要)前者與接口的關(guān)系稱為實(shí)現(xiàn)(realization)后者與接口的關(guān)系稱為使用(use)?interface?銷售查詢()售出()售貨員商品使用實(shí)現(xiàn)同一個(gè)接口對實(shí)現(xiàn)者而言是供接口(providedinterface)對使用者而言是需接口(requiredinterface)第四十六頁,共一百八十頁。表示法(簡略方式):——托球-托座使用者提供者提供者的供接口(托球)使用者的需接口(托座)售貨員商品銷售例:?interface?銷售查詢()售出()售貨員商品第四十七頁,共一百八十頁。在一個(gè)類上可以畫出它所有的供接口和需接口類供接口需接口一個(gè)接口可以由多個(gè)類使用,它也可以由多個(gè)類實(shí)現(xiàn)類B類D類A類E類C多個(gè)類可以共同使用同一個(gè)接口正如對象的一個(gè)操作可以被多個(gè)對象調(diào)用多個(gè)類都可以分別實(shí)現(xiàn)同一個(gè)接口這里表示它們可以相互替換第四十八頁,共一百八十頁。接口與類的區(qū)別類既有屬性又有操作;接口只是聲明了一組操作,沒有屬性。在一個(gè)類中定義了一個(gè)操作,就要在這個(gè)類中真正地實(shí)現(xiàn)它;接口中的操作只是一個(gè)聲明,不需要在接口中加以實(shí)現(xiàn)。類可以創(chuàng)建對象實(shí)例;接口則沒有任何實(shí)例。引入接口概念的好處在接口的使用者和提供者之間建立了一種靈活的銜接機(jī)制,有利于對類、構(gòu)件等軟件成分進(jìn)行靈活的組裝和復(fù)用。將操作的聲明與實(shí)現(xiàn)相分離,隔離了接口的使用者和提供者的相互影響。使用者只需關(guān)注接口的聲明,不必關(guān)心它的實(shí)現(xiàn);提供者不必關(guān)心哪些類將使用這個(gè)接口,只是根據(jù)接口的聲明中所承諾的功能來實(shí)現(xiàn)它,并且可以有多種不同的實(shí)現(xiàn)。接口既可用于類圖,也可用于構(gòu)件圖,對后者更為重要——教材第9章將做進(jìn)一步介紹第四十九頁,共一百八十頁。接口與多繼承的比較接口果真能部分地解決多繼承問題嗎??interface?接口A操作A-1()……操作A-n()?interface?接口B操作B-1()……操作B-m()類C…………類E……操作A-1()……操作A-n()操作B-1()……操作B-m()類D……操作A-1()……操作A-n()操作B-1()……操作B-m()類A操作A-1()……操作A-n()類B操作B-1()……操作B-m()類C…………操作A-1()……操作A-n()操作B-1()……操作B-m()類E…………類D…………第五十頁,共一百八十頁。對象之間的四種關(guān)系1.一般-特殊關(guān)系
——又稱繼承關(guān)系,反映事物的分類。由這種關(guān)系可以形成一般-特殊結(jié)構(gòu)。2.整體-部分關(guān)系——即聚合關(guān)系。反映事物的構(gòu)成。由這種關(guān)系可以形成整體-部分結(jié)構(gòu)。3.關(guān)聯(lián)關(guān)系——對象實(shí)例集合(類)上的一個(gè)關(guān)系,其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。4.消息關(guān)系
——對象之間的動(dòng)態(tài)聯(lián)系,即一個(gè)對象在執(zhí)行其操作時(shí),請求其他對象為它執(zhí)行某個(gè)操作,或者向其他對象傳送某些信息。反映了事物之間的行為依賴關(guān)系。這些關(guān)系形成了類圖的關(guān)系層第8章 定義對象間的關(guān)系第五十一頁,共一百八十頁。概念及術(shù)語——同義詞和
近義詞繼承(inheritance)是描述一般類和特殊類之間關(guān)系的最傳統(tǒng)、最經(jīng)典的術(shù)語。有時(shí)作為動(dòng)詞或形容詞出現(xiàn)。一般-特殊(generalization-specialization)含義最準(zhǔn)確,而且不容易產(chǎn)生誤解,恰切地反映了一般類(概念)和特殊類(概念)之間的相對關(guān)系;也用于描述結(jié)構(gòu),即一般-特殊結(jié)構(gòu)。缺點(diǎn)是書寫和閱讀比較累贅。泛化(generalization)取“一般-特殊”的一半,是UML的做法。比較簡練,但是只反映了問題的一方面。作為關(guān)系的名稱尚可,說結(jié)構(gòu)是一個(gè)“泛化”則很勉強(qiáng)。分類(classification)接近人類日常的語言習(xí)慣,體現(xiàn)了類的層次劃分,也作為結(jié)構(gòu)的名稱。在許多的場合被作為一種原則。本書主要采用“一般-特殊”這個(gè)術(shù)語8.1 一般-特殊結(jié)構(gòu)相關(guān)概念:一般類、特殊類、繼承、多繼承、多態(tài)語義:“isakindof”第五十二頁,共一百八十頁。一般-特殊關(guān)系(繼承關(guān)系)是類之間的一種二元關(guān)系——是一種基本的模型元素;由這種關(guān)系所形成的結(jié)構(gòu)是一般-特殊結(jié)構(gòu)——是一種復(fù)合的模型成分。人員股東職員顧客股東職員例:這是1個(gè)一般-特殊結(jié)構(gòu)
包含5個(gè)一般-特殊關(guān)系第五十三頁,共一百八十頁。特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些特征對象實(shí)例集合特征集合理解一般類與特殊類之間的關(guān)系定義1:如果類A具有類B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則A叫做B的特殊類,B叫做A的一般類。一般類與特殊類又稱父類與子類。定義2:如果類A的全部對象都是類B的對象,而且類B中存在不屬于類A的對象,則A是B的特殊類,B是A的一般類?!獣凶C明,以上兩種定義是等價(jià)的一般類和特殊類的兩個(gè)定義第五十四頁,共一百八十頁。表示法一般類特殊類特殊類集中式一般類特殊類特殊類分散式第五十五頁,共一百八十頁。如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類學(xué)知識(2)按常識考慮事物的分類(3)根據(jù)一般類和特殊類的兩種定義(4)考察屬性與操作的適應(yīng)范圍?公司人員姓名身份證號股份工資
············?公司人員姓名身份證號
······股東股份
············職員工資··················股東姓名身份證號股份
············職員姓名身份證號工資
············股東股份············職員工資
············?公司人員姓名身份證號
············第五十六頁,共一百八十頁。(5)考慮領(lǐng)域范圍內(nèi)的復(fù)用現(xiàn)鈔收款機(jī)
ABCDEFXYZ收款機(jī)ABCXY現(xiàn)鈔收款機(jī)
DEFZ領(lǐng)域構(gòu)件第五十七頁,共一百八十頁。(1)問題域是否需要這樣的分類?(例:書—線裝書)(2)系統(tǒng)責(zé)任是否需要這樣的分類?(例:職員—本市職員)(3)是否符合分類學(xué)的常識?(用“isakindof”來衡量)審查與調(diào)整(4)是否真正的繼承了一些屬性或操作?
飛機(jī)飛行高度
······自動(dòng)導(dǎo)航
······?
汽車發(fā)動(dòng)機(jī)載重量速度······運(yùn)輸······運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度
······
飛機(jī)飛行高度
······自動(dòng)導(dǎo)航
······汽車············運(yùn)輸······第五十八頁,共一百八十頁。一般-特殊結(jié)構(gòu)的簡化(1)取消沒有特殊性的特殊類運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度
······
飛機(jī)飛行高度
······自動(dòng)導(dǎo)航
······汽車運(yùn)輸······運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度
······
飛機(jī)飛行高度
······自動(dòng)導(dǎo)航
······運(yùn)輸······第五十九頁,共一百八十頁。(2)增加屬性簡化一般-特殊結(jié)構(gòu)
人員············男人············女人············中國人············美國人············日本人············人員性別國籍··················第六十頁,共一百八十頁。(3)取消用途單一的一般類,減少繼承層次一般類存在的理由:*有兩個(gè)或兩個(gè)上以上的特殊類*需要用它創(chuàng)建對象實(shí)例*有助于軟件復(fù)用設(shè)備型號生產(chǎn)廠······開啟關(guān)閉
雷達(dá)安裝地點(diǎn)
······監(jiān)控
······雷達(dá)型號生產(chǎn)廠安裝地點(diǎn)
······開啟關(guān)閉監(jiān)控······電子設(shè)備激光打印機(jī)傳真機(jī)通訊設(shè)備設(shè)備電子設(shè)備計(jì)算機(jī)設(shè)備打印機(jī)民用通訊設(shè)備激光打印機(jī)傳真機(jī)第六十一頁,共一百八十頁。多繼承:允許一個(gè)特殊類具有一個(gè)以上一般類的繼承模式多繼承特殊類的內(nèi)部情況在職研究生姓名······學(xué)號班級專業(yè)······職稱專業(yè)······在職單位············來自“人員”類來自“研究生”類來自“教職工”類本類中顯式定義人員姓名············教職工職稱專業(yè)············研究生學(xué)號班級專業(yè)············在職研究生在職單位
······
······例:命名沖突第六十二頁,共一百八十頁。多態(tài):多態(tài)是指同一個(gè)命名可具有不同的語義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。多邊形邊數(shù)頂點(diǎn)數(shù)據(jù)繪圖XY矩形邊數(shù)*頂點(diǎn)數(shù)據(jù)*繪圖正多邊形*頂點(diǎn)數(shù)據(jù)*繪圖例:第六十三頁,共一百八十頁。概念:聚合(aggregation),組合(composition)整體-部分(whole-part)整體對象,部分對象語義:“apartof”或“hasa”聚合關(guān)系描述了對象實(shí)例之間的構(gòu)成情況,然而它的定義卻是在類的抽象層次給出的?!獜募险摰挠^點(diǎn)看聚合關(guān)系整體-部分關(guān)系(聚合關(guān)系)是兩個(gè)類之間的二元關(guān)系,其中一個(gè)類的某些對象是另一個(gè)類的某些對象的組成部分。整體-部分結(jié)構(gòu)是把若干具有聚合關(guān)系的類組織在一起所形成的結(jié)構(gòu)。它是一個(gè)以類為結(jié)點(diǎn),以聚合關(guān)系為邊的連通有向圖。8.2整體-部分結(jié)構(gòu)一種基本的模型元素由若干聚合關(guān)系形成的復(fù)合模型成分第六十四頁,共一百八十頁?!梢浴_——有問題若類A的對象a是類B對象b的一個(gè)組成部分——判斷以下幾種說法正確與否:“對象b和對象a之間具有聚合關(guān)系”“類B和類A之間具有聚合關(guān)系”“類A是類B的一個(gè)組成部分”組合(composition)是聚合關(guān)系的一種特殊情況,它表明整體對于部分的強(qiáng)擁有關(guān)系,即整體與部分之間具有緊密、固定的組成關(guān)系。UML把聚合定義為關(guān)聯(lián)的一種特殊情況而組合關(guān)系是聚合關(guān)系的特殊情況第六十五頁,共一百八十頁。數(shù)量數(shù)量數(shù)量數(shù)量整體對象類部分對象類整體對象類部分對象類表示法在連接符兩端通過數(shù)字或者符號給出關(guān)系雙方對象實(shí)例的數(shù)量約束,稱為多重性(multiplicity)
確定的整數(shù)——給出確定的數(shù)量——例如:1,2下界‥上界——給出一個(gè)范圍——例如:0‥1,1‥4
*——表示多個(gè),數(shù)量不確定下界‥*——表示多個(gè),下界確定——例如0‥*
,1‥*多重性有以下3種情況:一對一,一對多,多對多照相機(jī)1‥*0‥10‥1鏡頭機(jī)身1第六十六頁,共一百八十頁。如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)基本策略——考察問題域中各種具有構(gòu)成關(guān)系的事物(1)物理上的整體事物和它的組成部分
例:機(jī)器、設(shè)備和它的零部件(2)組織機(jī)構(gòu)和它的下級組織及部門
例:公司與子公司、部門(3)團(tuán)體(組織)與成員
例:公司與職員(4)一種事物在空間上包容其它事物
例:生產(chǎn)車間與機(jī)器(5)抽象事物的整體與部分
例:學(xué)科與分支學(xué)科、法律與法律條款(6)具體事物和它的某個(gè)抽象方面
例:人員與身份、履歷第六十七頁,共一百八十頁。審查與篩選(1)是否屬于問題域?例:公司職員與家庭(2)是不是系統(tǒng)責(zé)任的需要?例:員工與工會(3)部分對象是否有一個(gè)以上的屬性?例:汽車與車輪(規(guī)格)(4)是否有明顯的整體-部分關(guān)系?例:學(xué)生與課程第六十八頁,共一百八十頁。整體-部分結(jié)構(gòu)的高級應(yīng)用技巧(1)簡化對象的定義○○○△△△□□□□●●▲▲■■飛機(jī)有關(guān)發(fā)動(dòng)機(jī)的屬性與操作有關(guān)駕駛室的屬性與操作111‥41飛機(jī)○○○●●發(fā)動(dòng)機(jī)△△△▲▲駕駛室□□□□■■第六十九頁,共一百八十頁。(2)支持軟件復(fù)用起重機(jī)送料車機(jī)床鉆床刨床車床電動(dòng)機(jī)0‥110‥110‥11第七十頁,共一百八十頁。(3)表示數(shù)量不定的組成部分訂單編號賣方買方總金額成交日期…………訂單行商品編號訂購數(shù)量成交價(jià)金額…………1‥*1商品商品編號商品名稱單價(jià)廠商…………1*一個(gè)訂單可以包含一項(xiàng)到多達(dá)幾十項(xiàng)商品提問:能否不要訂單行,直接用商品作為訂單的部分對象?第七十一頁,共一百八十頁。(4)表示動(dòng)態(tài)變化的對象特征人員營業(yè)員會計(jì)師經(jīng)理問題:對象的屬性與操作定義在系統(tǒng)運(yùn)行中動(dòng)態(tài)變化,例如:不理想的解決辦法:刪除、重建Shlaer/Mellor的子類型遷移“動(dòng)態(tài)對象”會計(jì)師身份經(jīng)理身份營業(yè)員身份人員身份1m或人員營業(yè)員身份0‥1會計(jì)師身份0‥10‥1111解:經(jīng)理身份第七十二頁,共一百八十頁?!叭选睂栴}的描述及解決方法“大多數(shù)面向?qū)ο蟮木幊陶Z言是靜態(tài)類型化的,這意味著在創(chuàng)建對象時(shí)就限定了對象的類型。但是隨著時(shí)間的推移對象還可能扮演不同的角色?!崩樱汉蜻x者,雇員,退休者person?type?candidate?type?employee?type?retiree“對象在其生命期內(nèi)動(dòng)態(tài)地獲得或者丟棄類型”1999年第一版person?dynamic?candidate?dynamic?employee?dynamic?retiree2005年第二版總之都是圍繞著繼承想主意,沒有運(yùn)用聚合。第七十三頁,共一百八十頁。從上述例子得到的啟示:整體-部分結(jié)構(gòu)有很強(qiáng)的表達(dá)能力運(yùn)用OO方法的基本概念可以自然而有效地解決許多在其他方法中用擴(kuò)充概念解決的問題加強(qiáng)對基本概念的運(yùn)用,不要輕易創(chuàng)造新的擴(kuò)充概念person0‥10‥10‥1111用聚合概念解決:CandidateRoleEmployeeRoleRetireeRole第七十四頁,共一百八十頁。用一般-特殊結(jié)構(gòu)兩種結(jié)構(gòu)的變通汽車制冷設(shè)備冷藏車解釋:繼承和聚合都是使一類對象獲得另一類對象的特征,只是觀察問題的角度不同。兩種結(jié)構(gòu)同用汽車?yán)洳剀囍评湓O(shè)備冷藏車汽車制冷設(shè)備用整體-部分結(jié)構(gòu)第七十五頁,共一百八十頁。概念:關(guān)聯(lián)(association)是兩個(gè)或者多個(gè)類上的一個(gè)關(guān)系(即這些類的對象實(shí)例集合的笛卡兒積的一個(gè)子集合),其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。二元關(guān)聯(lián)(binaryassociation)n元關(guān)聯(lián)(n-aryassociation)關(guān)聯(lián)的實(shí)例——有序?qū)騨元組,又稱鏈(link)關(guān)聯(lián)是這些有序?qū)騨元組的集合關(guān)聯(lián)位于類的抽象層次,鏈位于對象的抽象層次8.3關(guān)聯(lián)提問:一個(gè)n元關(guān)聯(lián)中所涉及的類的數(shù)量是否可以小于n?第七十六頁,共一百八十頁。二元關(guān)聯(lián)的表示法城市**有航線(d)城市之間有航線教師學(xué)生1*指導(dǎo)論文教師為學(xué)生指導(dǎo)論文例子類A名稱類B數(shù)量數(shù)量角色角色111***多重性的表示一對一:一對多:多對多:數(shù)量約束固定數(shù)值:例如1數(shù)值范圍:例如0‥1符號:*表示多個(gè)0‥*=*1‥*表示1到多個(gè)第七十七頁,共一百八十頁。二元關(guān)聯(lián)的實(shí)現(xiàn)(一對一和一對多)編程語言:在程序中用兩個(gè)類分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類;以數(shù)量約束為“1”的類的對象實(shí)例為目標(biāo),在關(guān)聯(lián)另一端的類中設(shè)置一個(gè)指向該目標(biāo)的指針或者對象標(biāo)識(源類的屬性)。教師1授課課程*主講教師誰?關(guān)系數(shù)據(jù)庫:用兩個(gè)數(shù)據(jù)庫表分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類;以數(shù)量約束為“1”的類對應(yīng)的表的元組為目標(biāo),在關(guān)聯(lián)另一端的類對應(yīng)的表中設(shè)置一個(gè)指向該目標(biāo)的外鍵(目標(biāo)的主鍵)。教師課程第七十八頁,共一百八十頁。二元關(guān)聯(lián)的實(shí)現(xiàn)(多對多)問題:任何一端的一個(gè)對象實(shí)例的要和另一端多個(gè)對象實(shí)例發(fā)生關(guān)聯(lián),而且數(shù)量不確定。實(shí)現(xiàn)時(shí)不知道該設(shè)立多少個(gè)指針(或者對象標(biāo)識、外鍵)才能夠用。
課程學(xué)生**編程語言:用兩個(gè)類分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類,同時(shí)用另外一個(gè)類來實(shí)現(xiàn)它們之間的關(guān)聯(lián)。實(shí)現(xiàn)關(guān)聯(lián)的類含有兩個(gè)屬性,分別是指向兩端的類的對象實(shí)例的指針或者對象標(biāo)識。
增加一個(gè)類關(guān)系數(shù)據(jù)庫:用兩個(gè)數(shù)據(jù)庫表分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類,同時(shí)用另外一個(gè)數(shù)據(jù)庫表來實(shí)現(xiàn)它們之間的關(guān)聯(lián)。實(shí)現(xiàn)關(guān)聯(lián)的數(shù)據(jù)庫表含有兩個(gè)屬性,它們分別是指向兩端的表的元組的外鍵。課程課程-學(xué)生學(xué)生第七十九頁,共一百八十頁。運(yùn)用簡單的概念及表示法解決各種復(fù)雜的關(guān)聯(lián)問題教師學(xué)生1*指導(dǎo)論文(1)帶有屬性和操作的關(guān)聯(lián)有某些信息需要描述OMT(及UML)的概念擴(kuò)充關(guān)聯(lián)類(associationclass)
類1類2屬性……操作……例子教師學(xué)生1*指導(dǎo)論文論文題目答辯時(shí)間成績問題:增加了概念的復(fù)雜性,缺乏編程語言支持第八十頁,共一百八十頁。換一種思路考慮問題:兩類對象之間的關(guān)聯(lián)帶有某些復(fù)雜的信息,說明它們之間存在著某種事物(盡管可能是抽象事物)。用普通的對象概念來表示這種事物,簡化關(guān)聯(lián),減少概念,并加強(qiáng)與OOPL的對應(yīng)。教師學(xué)生1*指導(dǎo)論文論文題目答辯時(shí)間成績*論文題目答辯時(shí)間成績
……教師學(xué)生1指導(dǎo)畢業(yè)論文11寫作例1第八十一頁,共一百八十頁。城市之間有航線城市有航線距離每周班次**1公司個(gè)人工作薪水*公司與個(gè)人其他例子城市之間存在航線對象城市航線距離每周班次*2公司個(gè)人工作薪水公司與個(gè)人之間存在工作對象1*11第八十二頁,共一百八十頁。復(fù)雜關(guān)聯(lián)表示法的轉(zhuǎn)換
mn類A類B關(guān)聯(lián)類屬性操作類A類B類C屬性操作11mn第八十三頁,共一百八十頁。(2)n元關(guān)聯(lián)OMT的三元關(guān)聯(lián)及其表示法問題:編程語言不能直接支持可推廣到n元關(guān)聯(lián),是否要?jiǎng)?chuàng)造更多的符號?多重性表示的困難(詳后)項(xiàng)目語言人員增設(shè)對象類表示多元關(guān)聯(lián)*項(xiàng)目名承擔(dān)者語言
……項(xiàng)目語言1任務(wù)1*人員*1***第八十四頁,共一百八十頁。在理論上,n元關(guān)聯(lián)是由若干n元組形成的集合,本質(zhì)上也是一個(gè)類——是由每個(gè)n元組作為對象實(shí)例的類從實(shí)現(xiàn)的角度看,用類實(shí)現(xiàn)n元關(guān)聯(lián)是最自然的選擇例如:用一個(gè)數(shù)據(jù)庫表存放n元關(guān)聯(lián)的全部n元組外鍵1外鍵2外鍵3……外鍵n……表1表2表3表nn個(gè)表:類2類n類1類3……n個(gè)類:N元關(guān)聯(lián)第八十五頁,共一百八十頁。在模型中,把n元關(guān)聯(lián)定義為一個(gè)類并定義它與原有的各個(gè)類之間的關(guān)系——都是二元關(guān)聯(lián)類2……類n類1類3n元關(guān)聯(lián)類2……類n類1類3新增類第八十六頁,共一百八十頁。項(xiàng)目語言人員*?*是1還是*?1項(xiàng)目語言任務(wù)人員11***1*1項(xiàng)目語言任務(wù)人員11***n元關(guān)聯(lián)多重性表示的困難和解決辦法第八十七頁,共一百八十頁。例:課程實(shí)習(xí)中每兩名學(xué)生在一臺設(shè)備上合作完成一個(gè)題目1)若系統(tǒng)要求記錄和查閱哪兩名學(xué)生是合作者建立學(xué)生類到它自身的關(guān)聯(lián)(如同城市之間有航線)是一個(gè)二元關(guān)聯(lián),其中學(xué)生類在關(guān)聯(lián)中出現(xiàn)了兩次
2)如果還要記錄每組學(xué)生的實(shí)習(xí)題目和使用的設(shè)備建立學(xué)生、題目、設(shè)備三個(gè)類之間的4元關(guān)聯(lián)學(xué)生類在這個(gè)關(guān)聯(lián)中出現(xiàn)了兩次(3)一個(gè)類在一個(gè)關(guān)聯(lián)中多次出現(xiàn)第八十八頁,共一百八十頁。111**1題目設(shè)備學(xué)生學(xué)生實(shí)習(xí)11211**1題目設(shè)備學(xué)生實(shí)習(xí)假如該系統(tǒng)的多重性要求是:每兩名學(xué)生在一臺設(shè)備上合作完成一個(gè)題目;一個(gè)題目可以供多組學(xué)生實(shí)習(xí),可以在不同的設(shè)備上完成;一臺設(shè)備可以供多組學(xué)生使用,可以做不同的題目。
題目設(shè)備學(xué)生學(xué)生????題目設(shè)備學(xué)生**???第八十九頁,共一百八十頁。關(guān)聯(lián)端點(diǎn)的復(fù)雜情況關(guān)聯(lián)端點(diǎn):關(guān)聯(lián)的連接線與類符號相銜接的點(diǎn)修飾:在端點(diǎn)附近標(biāo)注符號或者文字,或者畫成不同的形狀多重性(multiplicity)√
有序(ordered){ordered}限定符(qualifier)詳后導(dǎo)航性(navigability)聚合標(biāo)志(aggregationindicator)√
角色名(rolename)
√
接口說明(interfacespecifier)角色名:接口說明可變性(changeability){frozen},{addOnly}可見性(visibility)。“+”、“#”或者“-”第九十頁,共一百八十頁?!跋薅ǚ顷P(guān)聯(lián)的一種屬性,它的值劃定了跨過一個(gè)關(guān)聯(lián)與一個(gè)對象相關(guān)的對象集合?!庇孟薅ǚ揎椀年P(guān)聯(lián)稱為受限關(guān)聯(lián)(qualifiedassociation)UML對限定符的解釋類A限定符類B*0‥1表示法第九十一頁,共一百八十頁。BankaccountNoPerson*0‥1Chessboardrank:Rankfile:FileSquare11Chessboard164Squarerank:intfile:intBankAccountPerson*1*1訂單產(chǎn)品訂單行Amount:Number0‥1WorkDeskjobID:intReturnedItem*0‥1訂單訂單行Amount:Number*1產(chǎn)品*1限定符的例子及其簡單解決方案WorkDeskjobReturnedItem*1*1第九十二頁,共一百八十頁。關(guān)聯(lián)端點(diǎn)的修飾在UML2的變化(1)取消了接口說明和可變性兩種修飾(2)新增兩種圖形方式的修飾╳:表示不可導(dǎo)航●:表示擁有權(quán)(3)增加了花括號內(nèi)的特性串(propertystring)
{subsets}子集合{redefines}重定義{union}合并{ordered}有序{nonunique}不唯一{sequence},{seq}序列第九十三頁,共一百八十頁。如何建立關(guān)聯(lián)1.根據(jù)問題域和系統(tǒng)責(zé)任發(fā)現(xiàn)所需要的關(guān)聯(lián)
哪些類的對象實(shí)例之間存在著對用戶業(yè)務(wù)有意義的關(guān)系?·問題域中實(shí)際事物之間有哪些值得注意的關(guān)系?·這種信息是否需要通過有序?qū)Γɑ蛘遪元組)來體現(xiàn)?·這些信息是否需要在系統(tǒng)中進(jìn)行保存、管理或維護(hù)?·系統(tǒng)是否需要查閱和使用由這種關(guān)系所體現(xiàn)的信息?第九十四頁,共一百八十頁。2.關(guān)聯(lián)的復(fù)雜情況處理·對關(guān)聯(lián)屬性和操作的處理
·對n元關(guān)聯(lián)的處理·避免一個(gè)類在關(guān)聯(lián)中多次出現(xiàn)
·多對多關(guān)聯(lián)的處理
供貨商客戶**多對多關(guān)聯(lián)的處理供需合同賣方買方…….**11第九十五頁,共一百八十頁。3.為關(guān)聯(lián)端點(diǎn)添加修飾·分析關(guān)聯(lián)的多重性·給出關(guān)聯(lián)名或角色名·識別聚合種類·其他修飾導(dǎo)航性、特性串等——根據(jù)實(shí)際情況決定是否采用限定符——用簡單的類和關(guān)聯(lián)的概念解決4.在類中設(shè)立實(shí)現(xiàn)關(guān)聯(lián)的屬性第九十六頁,共一百八十頁。5.關(guān)聯(lián)定位系統(tǒng)管理員1計(jì)算機(jī)服務(wù)器客戶機(jī)用戶*操作使用1*第九十七頁,共一百八十頁。6.4 消息1、什么是消息(message)
現(xiàn)實(shí)生活中——人或其他事物之間傳遞的信息,例如:人與人之間的對話、通信、發(fā)通知、留言交通信號燈對車輛和行人發(fā)出的信號人發(fā)給設(shè)備的遙控信號等……軟件系統(tǒng)中——進(jìn)程或軟件成分之間傳送的信息控制信息例如一次函數(shù)調(diào)用,或喚醒一個(gè)進(jìn)程數(shù)據(jù)信息例如傳送一個(gè)數(shù)據(jù)文件面向?qū)ο蟮南到y(tǒng)中——(按嚴(yán)格封裝的要求)消息是對象之間在行為上的唯一聯(lián)系方式消息是向?qū)ο蟀l(fā)出的服務(wù)請求(狹義)消息是對象之間在一次交互中所傳送的信息(廣義)消息有發(fā)送者和接收者,遵守共同約定的語法和語義第九十八頁,共一百八十頁?!っ總€(gè)消息都是向?qū)ο蟀l(fā)出的服務(wù)請求最常見的是函數(shù)調(diào)用·消息都是同步的?!そ邮照邎?zhí)行消息所請求的服務(wù)。·發(fā)送者等待消息處理完畢再繼續(xù)執(zhí)行?!っ總€(gè)消息只有唯一的接收者。順序系統(tǒng)中的消息第九十九頁,共一百八十頁。并發(fā)系統(tǒng)中的消息控制流內(nèi)部的消息——與順序系統(tǒng)相同控制流之間的消息——情況復(fù)雜得多·消息有多種用途服務(wù)請求,傳送數(shù)據(jù),發(fā)送通知,傳遞控制信號……·消息有同步與異步之分同步消息(synchronousmessage)異步消息(asynchronousmessage)
·接收者對消息有不同響應(yīng)方式創(chuàng)建控制流,立即響應(yīng),延遲響應(yīng),不響應(yīng)·發(fā)送者對消息處理結(jié)果有不同期待方式等待回應(yīng),事后查看結(jié)果,不等待不查看·消息的接收者可能不唯一定向消息(directedmessage)廣播消息(broadcastmessage)
第一百頁,共一百八十頁。消息對面向?qū)ο蠼5囊饬x消息體現(xiàn)了對象之間的行為依賴關(guān)系,是實(shí)現(xiàn)對象之間的動(dòng)態(tài)聯(lián)系,使系統(tǒng)成為一個(gè)能運(yùn)行的整體,并使各個(gè)部分能夠協(xié)調(diào)工作的關(guān)鍵因素。在順序系統(tǒng)中消息體現(xiàn)了過程抽象的原則一個(gè)對象的操作通過消息調(diào)用其他對象的操作在OO模型中通過消息把對象操作貫穿在一起系統(tǒng)實(shí)現(xiàn)后這些操作將在一個(gè)控制流中順序地執(zhí)行在并發(fā)系統(tǒng)中控制流內(nèi)部的消息使系統(tǒng)中的每個(gè)控制流呈現(xiàn)出清晰的脈絡(luò)控制流之間的消息體現(xiàn)了控制流之間的通信關(guān)系第一百零一頁,共一百八十頁。OO模型需要表示消息的哪些信息?(按重要性排序)
(1)對象之間是否存在著某種消息?(2)這種消息是控制流內(nèi)部的還是控制流之間的?(3)每一種消息是從發(fā)送者的哪個(gè)操作發(fā)出的?是由接收者的哪個(gè)操作響應(yīng)和處理的?(4)消息是同步的還是異步的?(5)發(fā)送者是否等待消息的處理結(jié)果?第一百零二頁,共一百八十頁。以往不同的OOA&D方法有不同的處理方式例如:Coad/Yourdon方法——在類圖中表示消息Booch方法——只在實(shí)例級的模型圖(對象圖和交互圖)中表示消息UML的處理方式:不在類圖中表示消息,只在協(xié)作圖和順序圖中表示理由:把類圖定義為靜態(tài)結(jié)構(gòu)圖,不表示動(dòng)態(tài)信息問題:抽象級別問題局部與全局問題實(shí)際上類圖中仍然包含動(dòng)態(tài)信息操作,調(diào)用(call)依賴要不要在類圖中表示消息第一百零三頁,共一百八十頁。UML對各種箭頭的用法同步消息(順序圖、協(xié)作圖)實(shí)線封閉箭頭依賴(類圖、包圖、用況圖、構(gòu)件圖)從消息接收者的操作返回(順序圖)虛線開放箭頭關(guān)聯(lián)的導(dǎo)航性(類圖)異步消息(順序圖)實(shí)線開放箭頭用途圖形符號箭頭種類用什么符號表示消息借用依賴關(guān)系表示類圖中的消息?call??send?控制流內(nèi)部的消息控制流之間的消息第一百零四頁,共一百八十頁。ACDEF?call??call??call??send?B?call??call?例子:
緩沖區(qū)存數(shù)據(jù)取數(shù)據(jù)掛起喚醒生產(chǎn)者消費(fèi)者?call??call??send?第一百零五頁,共一百八十頁。如何建立的消息(控制流內(nèi)部) 策略——“操作模擬”和“執(zhí)行路線追蹤”(1)人為地模擬當(dāng)前對象操作的執(zhí)行考慮:需要其它對象(或本對象)提供什么服務(wù)(2)判斷該消息是否屬于同一個(gè)控制流:
·二者應(yīng)該順序地執(zhí)行還是并發(fā)地執(zhí)行?
·是否引起控制流的切換?
·接收者是否只有通過當(dāng)前消息的觸發(fā)才能執(zhí)行?(3)向接收者畫出消息連接線,填寫模型規(guī)約上述工作進(jìn)行到當(dāng)前的操作模擬執(zhí)行完畢(4)沿著控制流內(nèi)部的每一種消息追蹤到接收該消息的對象操作,重復(fù)進(jìn)行以上的工作,直到已發(fā)現(xiàn)的全部消息都經(jīng)歷一遍。針對每個(gè)主動(dòng)類的每個(gè)主動(dòng)操作進(jìn)行上述模擬與追蹤檢查系統(tǒng)中每個(gè)操作是否都被經(jīng)歷過發(fā)現(xiàn)遺漏的消息或多余的操作第一百零六頁,共一百八十頁。建立控制流之間消息對每個(gè)控制流考慮以下問題:(1)它在執(zhí)行時(shí),是否需要請求其他控制流中的對象為它提供某種服務(wù)?(2)它在執(zhí)行時(shí)是否要向其他控制流中的對象提供或索取某些數(shù)據(jù)?(3)它在執(zhí)行時(shí)是否將產(chǎn)生某些可影響其他控制流執(zhí)行的事件?(4)各個(gè)控制流的并發(fā)執(zhí)行,是否需要相互傳遞一些同步控制信號?(5)一個(gè)控制流將在何種條件下中止執(zhí)行?在它中止之后將在何種條件下被喚醒?由哪個(gè)控制流喚醒?從上述各個(gè)角度發(fā)現(xiàn)控制流之間的消息在相應(yīng)的類之間畫出消息連接線
第一百零七頁,共一百八十頁。8.5關(guān)于依賴關(guān)系什么是依賴(dependency)在以往的OO方法中,只有Firesmith方法用到這個(gè)概念,其大意是:“客戶/服務(wù)者(client/server)關(guān)系,表示客戶對服務(wù)者的依賴?!绷信e的情況包括:消息傳送——其中客戶發(fā)送消息給服務(wù)者;聚合——其中聚合體(客戶)的定義依賴它的構(gòu)成部分(服務(wù)者);繼承——其中派生類(客戶)依賴它的基類(服務(wù)者)以繼承其特征。結(jié)論:在Firesmith方法中,依賴并不是對象之間的一種基本關(guān)系,而是為了指出在消息、聚合、繼承等基本關(guān)系中哪個(gè)模型成分是客戶(依賴者),哪個(gè)模型成分是服務(wù)者(被依賴者)所采用的一個(gè)概括性的術(shù)語。第一百零八頁,共一百八十頁。UML1.4對依賴的定義和解釋“依賴:兩個(gè)建模元素之間的一種關(guān)系,其中一個(gè)建模元素(獨(dú)立元素)的一個(gè)改變將影響到另一個(gè)建模元素(依賴元素)?!薄耙蕾囀浅岁P(guān)聯(lián)、泛化、流以及元關(guān)系之外的關(guān)系的方便術(shù)語?!薄耙蕾嚤砻饕粋€(gè)或者一組元素的實(shí)現(xiàn)或者功能需要另外一個(gè)或者一組元素出現(xiàn)?!薄耙蕾囍赋隽藘蓚€(gè)模型元素(或者兩組模型元素)之間的語義關(guān)系。它指的是這些模型元素本身,而不需要一組實(shí)例來說明其含義。它指出這樣一種情況:目標(biāo)元素的一個(gè)變化可能需要依賴中的源元素發(fā)生變化?!盉ooch等《UML用戶指南》的解釋“兩個(gè)事物之間的語義關(guān)系,其中一個(gè)事物(獨(dú)立事物)的改變將影響到另一個(gè)事物(依賴事物)。”第一百零九頁,共一百八十頁。UML2對依賴關(guān)系的新闡述“依賴表明模型元素之間的供方/客方(supplier/client)關(guān)系,其中供方的修改可能影響到客方元素。依賴意味著,如果沒有供方,客方的語義就是不完整的。依賴在一個(gè)模型中出現(xiàn)并不含有任何運(yùn)行時(shí)的語義,它完全是以參與這種關(guān)系的模型元素的名義而不是以其實(shí)例的名義給出的?!薄耙蕾囀沁@樣一個(gè)關(guān)系,它表明一個(gè)或者一組模型元素的詳細(xì)說明或者實(shí)現(xiàn)需要另外一些模型元素。這意味著,依賴元素的完整語義在語義和結(jié)構(gòu)上都依賴這些供方元素的定義?!闭J(rèn)識:依賴著眼于表達(dá)紙面上的模型元素之間的關(guān)系,而不是這些元素所描述的客觀事物在問題域中的固有關(guān)系。依賴基本上不能視為一種面向?qū)ο蟮母拍?。第一百一十頁,共一百八十頁。DependencyAbstractionPermissionUsageBindingUML1的依賴關(guān)系?derive??refine??realize??trace??call??create??instantiate??responsibility??send??access??friend??import?DependencyAbstractionUsageRealizationSubstitutionUML2的依賴關(guān)系?derive??refine??trace??call??create??instantiate??responsibility??send?依賴所指的并不是單獨(dú)的一種關(guān)系,而是包含了許多情況第一百一十一頁,共一百八十頁。?關(guān)鍵詞?依賴的表示法以及其他外觀類似的表示作為依賴關(guān)系標(biāo)準(zhǔn)衍型的關(guān)鍵詞---------------------?instantiate??create??call??derive??refine??responsibility??send??trace?用于依賴但未明確稱為標(biāo)準(zhǔn)衍型的關(guān)鍵詞------------------?abstraction??realize??substitute??permit??use?附加于虛線開放箭頭但不稱為依賴關(guān)系的關(guān)鍵詞---------------------?access??apply??bind??extend??import??include??manifest??occurrence??represents?①②③各種標(biāo)準(zhǔn)衍型和關(guān)鍵詞的含義,見教材表8.1和表8.2第一百一十二頁,共一百八十頁。依賴關(guān)系對面向?qū)ο蠼5淖饔美^承、聚合、關(guān)聯(lián)、消息這四種關(guān)系中都已經(jīng)蘊(yùn)涵了依賴的含義,不需要再用依賴關(guān)系再做重復(fù)的表示除了上述關(guān)系之外,在OO建模中沒有多少重要的信息必須用依賴關(guān)系表達(dá)由于UML沒有在類圖中提供消息的表示法,可以借用依賴關(guān)系來表示類圖中的消息?call??send?控制流內(nèi)部的消息控制流之間的消息告戒:避免建立語義含糊不清的依賴關(guān)系,更要避免用這些含糊不清的依賴關(guān)系代替含義明確的OO關(guān)系。建立一種依賴關(guān)系,就要具體地指出它是一種什么依賴。第一百一十三頁,共一百八十頁。歷史上OO方法采用其他模型圖的三種不同情況攙雜了其他方法OMT對象模型+動(dòng)態(tài)模型+功能模型解決不同階段的問題OOSE需求模型+健壯模型+設(shè)計(jì)模型以面向?qū)ο蠓椒楹诵模云渌P蛨D作為補(bǔ)充Booch方法基本模型+補(bǔ)充模型Coad/Yourdon類圖+流程圖UML的狀況和發(fā)展趨勢收集了大量的模型圖,從9種發(fā)展到13種從不同的視角對復(fù)雜系統(tǒng)建模各種圖向著健全和復(fù)雜的方向發(fā)展9.1類圖與其他模型圖之間的關(guān)系第9章建立輔助模型第一百一十四頁,共一百八十頁。在本書的面向?qū)ο蠼7椒ㄖ幸灶悎D作為主要模型——基本模型用況圖作為需求模型其他模型圖作為輔助模型基本模型:類圖模型規(guī)約需求模型:用況圖輔助模型:包圖順序圖活動(dòng)圖……對象層特征層關(guān)系層第一百一十五頁,共一百八十頁。UML2中的各種圖圖結(jié)構(gòu)圖行為圖交互圖類圖構(gòu)件圖對象圖活動(dòng)圖用況圖狀態(tài)機(jī)圖部署圖順序圖通訊圖組合結(jié)構(gòu)圖包圖交互概覽圖定時(shí)圖支持用戶從不同的視角進(jìn)行系統(tǒng)建模第一百一十六頁,共一百八十頁。類圖:基本模型,是面向?qū)ο蟮慕W钪匾哪P?,必不可少。用況圖:需求模型,是開展面向?qū)ο蠼5幕A(chǔ),提倡盡可能使用。包圖:輔助模型,各種模型圖的組織機(jī)制,系統(tǒng)規(guī)模較大時(shí)使用。順序圖:輔助模型,清晰地表示一組對象之間的交互,對類圖起到補(bǔ)充作用。在交互情況較復(fù)雜時(shí)使用?;顒?dòng)圖:輔助模型,可描述對象的操作流程,也可描述高層的行為。狀態(tài)機(jī)圖:輔助模型,對于狀態(tài)與行為復(fù)雜的對象,可描述對象狀態(tài)及轉(zhuǎn)移,以便更準(zhǔn)確地定義對象的操作。構(gòu)件圖,部署圖:輔助模型,在轉(zhuǎn)入實(shí)現(xiàn)階段之前,可以用它們表示如何組織構(gòu)件以及如何把軟件制品部署的各個(gè)結(jié)點(diǎn)(計(jì)算機(jī))上。組合結(jié)構(gòu)圖、交互概覽圖、定時(shí)圖:都可以作為輔助模型,無強(qiáng)烈建議。對象圖、通信圖:建議不使用。在本書的方法中各種UML模型圖的作用第一百一十七頁,共一百八十頁。9.2包圖(package
diagram)包(package)是一種將其他模型元素組織起來,形成較大粒度的系統(tǒng)單位的通用機(jī)制?;舅枷耄簭牟煌牧6让枋龊陀^察系統(tǒng)——從宏觀到微觀G.Miller的“7±2原則”注意:包是一種組織機(jī)制而不是一種基本模型元素包可以嵌套包中的模型元素應(yīng)具有某種意義的內(nèi)在聯(lián)系包的劃分有一定的靈活性或隨意性第一百一十八頁,共一百八十頁。名稱包的表示法包的壓縮方式包的展開方式
內(nèi)容名稱
教師學(xué)生一個(gè)包的例子課程管理教務(wù)管理第一百一十九頁,共一百八十頁。包之間的關(guān)系及表示法引入(import)是包之間的一種依賴關(guān)系,表明源包中的模型元素能夠直接引用目標(biāo)包中的模型元素。原由——名字空間(為了避免命名沖突)以包為單位劃分名字空間,引用時(shí)給出路徑名引入關(guān)系表明可以直接引用
Class1P3Class2Class3P2?import??import?P1P4訪問(access)關(guān)系與引入關(guān)系類似,二者之間的差別:UML1:目標(biāo)包的元素是否可以被引入源包的其他包引入U(xiǎn)ML2:目標(biāo)包(或目標(biāo)元素)的可見性不同采用不同的關(guān)系P5?access??import?第一百二十頁,共一百八十頁。
Class1P1Class2
Class1P2Class3?merge?合并(merge)是包之間的一個(gè)有向關(guān)系,表明目標(biāo)包的概念定義被合并到源包中。在UML自身的定義中經(jīng)常被使用對大部分應(yīng)用系統(tǒng)而言,這種層層追加的定義方式并不常見,也不值得提倡。包之間的其他關(guān)系泛化——沒有正式的定義,只在包圖的某些例子中出現(xiàn)依賴——不加任何關(guān)鍵詞的依賴關(guān)系,沒有確切的定義見講義節(jié)(其中第4條)的介紹第一百二十一頁,共一百八十頁。如何建立包圖1、將模型元素打包(類圖為例)根據(jù)類圖中的各種關(guān)系:一般-特殊結(jié)構(gòu)整體-部分結(jié)構(gòu)關(guān)聯(lián)消息其他關(guān)系根據(jù)問題域和用況:對象來源功能類別通信頻繁程度并發(fā)和分布情況包的內(nèi)容交叉問題
教師課程管理學(xué)生課程
學(xué)籍管理學(xué)歷學(xué)位?副本?學(xué)生第一百二十二頁,共一百八十頁。2、包的命名一般-特殊結(jié)構(gòu)中的根類整體-部分結(jié)構(gòu)中的整體對象類其他:事物、功能、來源3、組織嵌套的包7±2原則將若干低層包合并為高層包將低層的包與零散模型元素組織到高層的包中
合并的依據(jù)參照將模型元素打包的考慮因素包之間內(nèi)容是否有交叉包之間的關(guān)系是否緊密第一百二十三頁,共一百八十頁。A
Class1Class2Class3Class4Class5
BClass4Class5A
Class1BClass2Class3Class4Class5
Class1AClass2Class3
Class4BClass5Class6
CAB
Class1CClass2Class3Class5Class6Class44、減少包的嵌套層次第一百二十四頁,共一百八十頁。9.3順序圖(sequencediagram)順序圖是一種詳細(xì)地表示對象之間行為關(guān)系的圖。它按時(shí)間順序展現(xiàn)了一組相互協(xié)作的對象在完成一項(xiàng)功能時(shí)所執(zhí)行的操作,以及它們之間所傳送的消息,從而清晰地表示對象之間的行為關(guān)系以及操作和消息的時(shí)序關(guān)系。名稱的演變:UML之前交互圖UML1順序圖協(xié)作圖UML2順序圖通信圖定時(shí)圖交互概覽圖適應(yīng)范圍:通常只適合表示一組相互協(xié)作的對象執(zhí)行一項(xià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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年保姆看護(hù)老人協(xié)議樣本
- 投資入股協(xié)議書范文
- 【初中地理】第二章地圖知識點(diǎn)每日一背-2024-2025學(xué)年七年級地理上學(xué)期(人教版2024)
- 2024年環(huán)境衛(wèi)生治理合同協(xié)議書范本
- 房產(chǎn)投資合作協(xié)議書
- 戶外店鋪合作協(xié)議范本
- 家庭教育委托協(xié)議書新范本
- 中外貨物買賣合同要點(diǎn)解讀
- 有關(guān)上海租賃住房合同范本
- 企業(yè)擔(dān)保借款合同書
- 2024年汽車行業(yè)社媒營銷趨勢分析報(bào)告
- 竹子主題活動(dòng)課程設(shè)計(jì)
- QC/T 242-2024汽車車輪靜不平衡量要求及檢測方法
- 人教新目標(biāo)版英語八上Unit 3《Im more out-going than my sister》精美說課稿
- 中小企業(yè)數(shù)字化轉(zhuǎn)型研究報(bào)告2024年
- WS∕T 391-2024 CT檢查操作規(guī)程
- 習(xí)作:生活萬花筒【新課標(biāo)版】-四年級語文上冊課件
- 高風(fēng)險(xiǎn)群體健康干預(yù)計(jì)劃的開展與實(shí)施三篇
- 2024山東能源集團(tuán)中級人才庫選拔【重點(diǎn)基礎(chǔ)提升】模擬試題(共500題)附帶答案詳解
- 【加加食品產(chǎn)品成本控制問題及完善措施分析9600字】
- 【《青島海爾公司應(yīng)收賬款狀況調(diào)研分析報(bào)告》16000字】
評論
0/150
提交評論