面向?qū)ο蟮姆治雠c設(shè)計課件基礎(chǔ)篇_第1頁
面向?qū)ο蟮姆治雠c設(shè)計課件基礎(chǔ)篇_第2頁
面向?qū)ο蟮姆治雠c設(shè)計課件基礎(chǔ)篇_第3頁
面向?qū)ο蟮姆治雠c設(shè)計課件基礎(chǔ)篇_第4頁
面向?qū)ο蟮姆治雠c設(shè)計課件基礎(chǔ)篇_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟮姆治雠c設(shè)計課件基礎(chǔ)篇1第一頁,共九十七頁,編輯于2023年,星期二第一部分:基礎(chǔ)篇面向?qū)ο蟮姆治雠c設(shè)計第二頁,共九十七頁,編輯于2023年,星期二主要知識點1、什么是面向?qū)ο?,它的基本思想和主要特點。2、從認識論個角度,看面向?qū)ο蠓椒ǖ男纬珊椭饕獌?yōu)勢。3、面向?qū)ο蠓椒ㄖ械膶ο?、類、屬性、操作、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等基本概念的確切含義,以及它們在系統(tǒng)構(gòu)造中所起的作用。4、面向?qū)ο蠓椒ǖ陌l(fā)展歷史。第1章面向?qū)ο蠓椒ǜ耪?第三頁,共九十七頁,編輯于2023年,星期二從程序設(shè)計方法的角度看,面向?qū)ο笫且环N新的程序設(shè)計范型(paradigm),其基本思想是使用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等基本概念來進行程序設(shè)計。自20世紀(jì)80年代以來,面向?qū)ο蠓椒ㄒ焉钊氲接嬎銠C軟件領(lǐng)域的幾乎所有分支。它不僅是一些具體的軟件開發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實世界的關(guān)系,用什么觀點來研究問題并進行問題求解,以及如何進行系統(tǒng)構(gòu)造的軟件方法學(xué)。從這個意義上講:面向?qū)ο蠓椒ㄊ且环N運用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。1.1什么是面向?qū)ο蟮?章面向?qū)ο蠓椒ǜ耪?第四頁,共九十七頁,編輯于2023年,星期二面向?qū)ο蠓椒ǖ幕舅枷胍弧默F(xiàn)實世界中客觀存在的事物出發(fā)來構(gòu)造系統(tǒng)強調(diào)直接以問題域(現(xiàn)實世界)中的事物為中心來思考問題、認識問題,并根據(jù)這些事物的本質(zhì)特征,把它們抽象為系統(tǒng)中的對象,作為系統(tǒng)的基本構(gòu)成單位。這可以使系統(tǒng)直接映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌。二、充分運用人類日常的思維方法強調(diào)運用人類在日常的邏輯思維中經(jīng)常采用的思想方法與原則,例如抽象、分類、繼承、聚合、封裝、關(guān)聯(lián)等等。這使得軟件開發(fā)者能更有效地思考問題,并以其他人也能看得懂的方式把自己的認識表達出來。5第五頁,共九十七頁,編輯于2023年,星期二主要特點:用類和對象作為系統(tǒng)的基本構(gòu)成單位。對象對應(yīng)問題域中的事物,其屬性和操作刻畫了事物的靜態(tài)特征和動態(tài)特征,它們之間的繼承關(guān)系、聚合關(guān)系、關(guān)聯(lián)和消息如實地表達了問題域中事物之間實際存在的各種關(guān)系。因此,無論系統(tǒng)的構(gòu)成成分,還是通過這些成分之間的關(guān)系而體現(xiàn)的系統(tǒng)結(jié)構(gòu),都可直接地映射問題域。6第六頁,共九十七頁,編輯于2023年,星期二對問題域的認識(人)客觀世界(問題域)計算機自然語言語言的鴻溝編程語言語言的過渡(人)編程(人)程序的理解和執(zhí)行(機器)軟件開發(fā):對事物的認識和描述問題——語言的鴻溝1.2從認識論看面向?qū)ο蠓椒ǖ男纬?第七頁,共九十七頁,編輯于2023年,星期二計算機機器語言自然語言客觀世界(問題域)語言的鴻溝語言的發(fā)展——鴻溝變窄程序的指令、數(shù)據(jù)、地址,都是由二進制的“0”和“1”構(gòu)成的。離機器最近,能夠直接地執(zhí)行,然而沒有絲毫形象的意義,離人類的思維最遠。匯編語言以易理解的符號表示指令、數(shù)據(jù)以及寄存器、地址等物理概念。稍稍適合人類的形象思維,但仍然相差很遠。因為抽象層次太低,仍需考慮大量的機器細節(jié)。高級語言隱蔽了機器細節(jié),使用有形象意義的命名和表達式,可以聯(lián)系到程序所描述的具體事物。特別是結(jié)構(gòu)化編程語言更便于體現(xiàn)客觀事物的結(jié)構(gòu)和邏輯涵義,與人類的自然語言更接近,但仍有不少差距。面向?qū)ο笳Z言能比較直接地反映客觀世界的本來面目,并使軟件開發(fā)人員能夠運用人類認識事物所采用的一般思維方法來進行軟件開發(fā)。8第八頁,共九十七頁,編輯于2023年,星期二問題域測試編程計算機編程語言自然語言需求分析總體設(shè)計詳細設(shè)計軟件工程學(xué)的作用——傳統(tǒng)的軟件工程方法分析與設(shè)計的鴻溝分析與設(shè)計概念及表示法的不一致9第九頁,共九十七頁,編輯于2023年,星期二問題域OOA計算機自然語言面向?qū)ο缶幊陶Z言O(shè)ODOOPOOT軟件工程學(xué)的作用——面向?qū)ο蟮能浖こ谭椒?0第十頁,共九十七頁,編輯于2023年,星期二1.3面向?qū)ο蠓椒ǖ幕靖拍钆c原則對象,類屬性,操作封裝繼承,一般-特殊結(jié)構(gòu)聚合,整體-部分結(jié)構(gòu)關(guān)聯(lián)消息多態(tài)持久對象,主動對象……11第十一頁,共九十七頁,編輯于2023年,星期二對象是現(xiàn)實世界中某個實際存在的事物,它可以是有形的,比如一輛汽車,也可以是無形的,比如一項計劃。對象是構(gòu)成世界的一個獨立單位。它具有自己的靜態(tài)特征和動態(tài)特征。屬性是用來描述對象靜態(tài)特征的一個數(shù)據(jù)項。操作是用來描述對象動態(tài)特征的一個動作序列。對象標(biāo)識就是對象的名字,有“外部標(biāo)識”和“內(nèi)部標(biāo)識”之分。對象,屬性,操作對象是系統(tǒng)中用來描述客觀事物的一個實體,它是構(gòu)成系統(tǒng)的一個基本單位。對象由一組屬性和施加于這些屬性一組操作構(gòu)成。對象對象標(biāo)識屬性操作12第十二頁,共九十七頁,編輯于2023年,星期二對象(屬性,操作,對象標(biāo)識)要點:1、對象標(biāo)識符2、屬性3、服務(wù)注意點:1.一體性對象標(biāo)識符、屬性和服務(wù)2.區(qū)別三者的區(qū)別3.屬性是對對象的靜態(tài)描述.4.服務(wù)是對對象的動態(tài)描述.外部是通過調(diào)用服務(wù)與對象取得聯(lián)系.13第十三頁,共九十七頁,編輯于2023年,星期二類名,屬性,服務(wù)的命名注意點

標(biāo)識符(即名字)要達義。要簡明,短小,符合人的思維習(xí)慣。類名宜用名詞或動名詞,屬性名用名詞或動名詞,服務(wù)名用動詞或動名詞。14第十四頁,共九十七頁,編輯于2023年,星期二類名屬性服務(wù)PersonID,Name,Add,...GetID,GetName,ChID,ChName,...例:類課程的表示CourseCID,CName,Credet,Term,NoteGetID,GetName,GetCredit,GetNoteChID,ChName,ChCredit,ChNote類的表示(注意與對象的聯(lián)系)

15第十五頁,共九十七頁,編輯于2023年,星期二對象(屬性,操作,對象標(biāo)識)對象屬性服務(wù)人姓名、電話、性別、年齡、地址、編號等等獲取姓名,獲取地址,獲取編號,獲取電話,修改地址(圖一)例題1:考慮對象“人”,具體描述為:對象屬性服務(wù)課程課程名、編號、學(xué)時數(shù)、選課要求、任課教師等獲取并修改課程名、編號、學(xué)時數(shù)、選課要求、任課教師等(圖二)例題2:考慮對象“課程”,具體描述為:16第十六頁,共九十七頁,編輯于2023年,星期二類與對象的關(guān)系

類對象抽象定義實例

例:模具由模具壓出的工件學(xué)生學(xué)生王強模板應(yīng)用模板產(chǎn)生的文件類型變量,如

C語言中的

int和intx;17第十七頁,共九十七頁,編輯于2023年,星期二封裝:把對象的屬性和操作結(jié)合成一個獨立的系統(tǒng)單位,并盡可能隱蔽對象的內(nèi)部細節(jié)。售報亭屬性操作報刊A報刊B…錢箱報刊零售款貨清點顧客封裝的重要意義:使對象能夠集中而完整地描述并對應(yīng)一個具體的事物。體現(xiàn)了事物的相對獨立性,使對象外部不能隨意存取對象的內(nèi)部數(shù)據(jù),避免了外部錯誤對它的“交叉感染”。對象的內(nèi)部的修改對外部的影響很小,減少了修改引起的“波動效應(yīng)”。由封裝機制保證

封裝帶來的問題:編程的麻煩執(zhí)行效率的損失解決辦法:不強調(diào)嚴(yán)格封裝,實行可見性控制。(混合型OOPL)例如:C++18第十八頁,共九十七頁,編輯于2023年,星期二封裝的優(yōu)點:

數(shù)據(jù)獨立(如每件事物都對應(yīng)于一對象)

具有隱藏性和安全性(如銀行的賬戶)

易于維護(由于數(shù)據(jù)獨立,易于發(fā)現(xiàn)問題)封裝的缺點:

編程麻煩,需要更多的輸入輸出函數(shù)。

執(zhí)行效率的損失。解決辦法:不強調(diào)嚴(yán)格封裝,實行可見性控制。(混合型OOPL),如C++

19第十九頁,共九十七頁,編輯于2023年,星期二抽象,類,一般類,特殊類抽象與分類:忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,叫做抽象。抽象是形成概念的基本手段。把具有共同性質(zhì)的事物劃分為一類,叫做分類。類是具有相同屬性和操作的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和操作兩個主要部分。類的作用是用來創(chuàng)建對象,對象是類的一個實例。對象對象對象對象對象對象對象對象類名屬性操作抽象20第二十頁,共九十七頁,編輯于2023年,星期二不同程度的抽象可得到不同層次的分類較多地忽略事物之間的差別可得到較一般的類較多地注意事物之間的差別可得到較特殊的類運輸工具火車汽車飛機卡車轎車輪船車輛21第二十一頁,共九十七頁,編輯于2023年,星期二定義1:如果類A具有類B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則A叫做B的特殊類,B叫做A的一般類。一般類與特殊類又稱父類與子類。定義2:如果類A的全部對象都是類B的對象,而且類B中存在不屬于類A的對象,則A是B的特殊類,B是A的一般類?!梢宰C明,以上兩種定義是等價的一般類和特殊類的定義22第二十二頁,共九十七頁,編輯于2023年,星期二繼承:特殊類擁有其一般類的全部屬性與操作,稱作特殊類對一般類的繼承。繼承意味著自動地擁有,或曰隱含地復(fù)制繼承簡化了人們對事物的認識和描述,非常有益于軟件復(fù)用,是OO技術(shù)提高軟件開發(fā)效率的重要原因之一。由繼承機制保證由一組具有繼承關(guān)系的類所組成的結(jié)構(gòu)稱作一般-特殊結(jié)構(gòu)。它是一個以類為結(jié)點,以繼承關(guān)系為邊的連通的有向圖。繼承關(guān)系的語義:“isakindof”軍人軍官士兵義務(wù)兵志愿兵例23第二十三頁,共九十七頁,編輯于2023年,星期二多繼承:允許一個特殊類具有一個以上一般類的繼承方式稱作多繼承人員姓名············教職工職稱專業(yè)············研究生學(xué)號班級專業(yè)············在職研究生在職單位

······

······例:24第二十四頁,共九十七頁,編輯于2023年,星期二聚合:是兩個類之間的一個二元關(guān)系,它表示一個類的對象實例以另一個類的對象實例作為其組成部分。聚合刻畫了現(xiàn)實事物之間的構(gòu)成關(guān)系或者擁有關(guān)系。部分對象部分對象整體對象嵌套對象整體對象部分對象部分對象整體對象對象指針或?qū)ο髽?biāo)識兩種聚合,兩種實現(xiàn)方式:緊密、固定的聚合關(guān)系——例如汽車與發(fā)動機松散、靈活的聚合關(guān)系——例如公司與法律顧問聚合關(guān)系的語義:“hasa”或“isapartof”緊密、固定的聚合方式又稱為組合25第二十五頁,共九十七頁,編輯于2023年,星期二整體-部分結(jié)構(gòu):聚合關(guān)系又稱整體-部分關(guān)系。由一組具有聚合關(guān)系的類所形成的結(jié)構(gòu)稱為整體-部分結(jié)構(gòu)。它是一個以類為結(jié)點,以聚合關(guān)系為邊的連通有向圖。例公司0‥*0‥*法律顧問汽車發(fā)動機車身氣缸111111‥*26第二十六頁,共九十七頁,編輯于2023年,星期二關(guān)聯(lián):兩個或者多個類上的一個關(guān)系(即這些類的對象實例集合的笛卡兒積的一個子集合),其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。城市**有航線

城市之間有航線教師學(xué)生*1指導(dǎo)論文

教師與被指導(dǎo)的學(xué)生例:27第二十七頁,共九十七頁,編輯于2023年,星期二用集合論的觀點和系統(tǒng)需求討論關(guān)聯(lián)概念關(guān)聯(lián)是兩個或者多個類上的一個關(guān)系,其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。例:設(shè)A和B是兩個類,它們的對象實例集合是A={a1,a2,……,an}B={b1,b2,……,bm}A和B的笛卡兒積A×B={<a1,b1>,<a1,b2>,……<a1,bm><a2,b1>,<a2,b2>,……<a2,bm>……<an,b1>,<an,b2>,……<an,bm>}這個笛卡兒積集合中有n×m個元素,它們可以組合成2(n×m)個子集合。但是只有某個子集合中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息時,才有必要把它定義為系統(tǒng)中的一個關(guān)聯(lián)。28第二十八頁,共九十七頁,編輯于2023年,星期二例如:在一個教學(xué)管理系統(tǒng)中有教師、學(xué)生、教務(wù)員課程等類。系統(tǒng)中需要表明每一門課程由哪位教師承擔(dān)、有哪些學(xué)生選修,因此需要在教師和課程之間定義一個關(guān)聯(lián),在學(xué)生和課程之間也定義一個關(guān)聯(lián)。該系統(tǒng)的教務(wù)員要為學(xué)生做注冊、登記成績等工作,但是不需要區(qū)別是哪個教務(wù)員為哪個學(xué)生做的,因此就不需要在教務(wù)員和學(xué)生這兩個類之間定義關(guān)聯(lián)。教師課程學(xué)生教務(wù)員?call??call?1***教務(wù)員29第二十九頁,共九十七頁,編輯于2023年,星期二消息:消息是向?qū)ο蟀l(fā)出的服務(wù)請求目前在大部分面向?qū)ο蟮木幊陶Z言中,消息其實就是函數(shù)(或過程)調(diào)用。但是,函數(shù)調(diào)用只是實現(xiàn)消息的方式之一,上述理解只適合于順序系統(tǒng)更一般的定義:消息是對象之間在一次交互中所傳送的信息30第三十頁,共九十七頁,編輯于2023年,星期二什么是消息

消息是向?qū)ο蟀l(fā)出的服務(wù)請求1.對象標(biāo)志2.服務(wù)標(biāo)志3.輸入信息4.輸出信息消息的組成例:“請你把那本書拿給我!”對象標(biāo)志:你服務(wù)標(biāo)志:把那本書拿給我輸入信息:那本書輸出信息:書給我消息的作用1.提供類之間的動態(tài)聯(lián)系2.對象通過消息對外提供服務(wù)注意:你不能直接拿書,而是通過發(fā)送消息請求服務(wù).31第三十一頁,共九十七頁,編輯于2023年,星期二消息的執(zhí)行流程:創(chuàng)建對象發(fā)送消息分析處理消息返回相應(yīng)信息結(jié)束接受消息例11:對象A:打印機對象B:操作系統(tǒng)接受消息發(fā)送打印消息執(zhí)行返回信息結(jié)束接受信息在例題中:對象標(biāo)志:打印機,服務(wù)標(biāo)志:打印輸入信息:要打印的文件輸出信息:打印結(jié)束分析兩個對象打印機和操作系統(tǒng)之間的消息通信.32第三十二頁,共九十七頁,編輯于2023年,星期二教師課程學(xué)生教務(wù)員?call??call?1***糾正一種誤解——認為在任何兩個類之間只有存在關(guān)聯(lián)才可能存在消息。實際上,關(guān)聯(lián)和消息是兩個截然不同的概念,二者是相互獨立的。教務(wù)員?call?33第三十三頁,共九十七頁,編輯于2023年,星期二多態(tài):多態(tài)是指同一個命名可具有不同的語義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。實現(xiàn)機制:·重寫(override)——在特殊類中對繼承來的屬性或操作重新定義其實現(xiàn);·動態(tài)綁定(dynamicbinding)——在運行時根據(jù)對象接收的消息動態(tài)地確定要連接哪一段操作代碼;·類屬(generic)——操作參量的類型可以是參數(shù)化的。34第三十四頁,共九十七頁,編輯于2023年,星期二多態(tài)例:多邊形邊數(shù)頂點數(shù)據(jù)繪圖XY軸向矩形x邊數(shù)*頂點數(shù)據(jù)*繪圖正多邊形*頂點數(shù)據(jù)*繪圖35第三十五頁,共九十七頁,編輯于2023年,星期二其他:持久對象:在程序運行結(jié)束后仍能繼續(xù)保存的對象超出了程序運行時間,跨越了內(nèi)外存空間實現(xiàn)途徑:支持持久對象的OOPL,OO-DBMS主動對象:至少有一個操作不需要接收消息就能主動執(zhí)行的對象。描述具有主動行為的事物描述并發(fā)執(zhí)行的多個控制流36第三十六頁,共九十七頁,編輯于2023年,星期二面向機器面向代數(shù)面向過程面向數(shù)據(jù)面向人面向文件面向信息面向應(yīng)用面向功能面向數(shù)據(jù)流

······面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真軟件科學(xué)的發(fā)展歷程中出現(xiàn)過許多“面向”軟件開發(fā)從過分專業(yè)化的方法、規(guī)則和技巧中回到了客觀世界,回到了人們的日常思維,是軟件理論的返樸歸真。面向?qū)ο?7第三十七頁,共九十七頁,編輯于2023年,星期二1.雛形階段60年代挪威計算中心開發(fā)的Simula67——面向?qū)ο笳Z言的先驅(qū)和第一個里程碑(首先引入了類的概念和繼承機制)。70年代CLU、并發(fā)Pascal、Ada和Modula-2等語言對抽象數(shù)據(jù)類型理論的發(fā)展起到重要作用(支持?jǐn)?shù)據(jù)與操作的封裝)。猶他大學(xué)的博士生AlanKay設(shè)計了一個實驗性的語言Flex。從Simula67中借鑒了許多概念,如類、對象、繼承等。1972年P(guān)aloAlno研究中心(PARC)發(fā)布了Smalltalk-72,其中正式使用了“面向?qū)ο蟆边@個術(shù)語。Smalltalk的問世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計方法的正式形成。但是這個時期的Smalltalk語言還不夠完善1.4OO方法的發(fā)展歷史與現(xiàn)狀38第三十八頁,共九十七頁,編輯于2023年,星期二PARC先后發(fā)布了Smalltalk-72,76,78等版本,直至1981年推出該語言最完善的版本Smalltalk-80。Smalltalk-80的問世被今認為是面向?qū)ο笳Z言發(fā)展史上最重要的里程碑。迄今絕大部分面向?qū)ο蟮幕靖拍罴捌渲С謾C制在Smalltalk-80中都已具備。它是第一個完善的、能夠?qū)嶋H應(yīng)用的面向?qū)ο笳Z言。但是,Smalltalk開始幾年的應(yīng)用不夠廣泛,原因是:①一種新的軟件方法學(xué)被廣泛接受需要一定的時間。②商品化軟件開發(fā)工作到87年才開始進行。③追求純OO的宗旨使許多軟件開發(fā)人員感到不便。2.完善階段39第三十九頁,共九十七頁,編輯于2023年,星期二3.繁榮階段自80年代中期到90年代,是面向?qū)ο笳Z言走向繁榮的階段。其主要表現(xiàn)是大批比較實用的OOPL的涌現(xiàn),例如C++、Objective-C、ObjectPascal、CLOS(CommonLispObjectSystem)、Eiffel、Actor等。OO編程語言分為純OO語言和混合型OO語言混合型語言是在傳統(tǒng)的過程式語言基礎(chǔ)上增加OO語言成分,在實用性方面具有更大的優(yōu)勢。此時的純OO語言也比較重視實用性。40第四十頁,共九十七頁,編輯于2023年,星期二4、發(fā)展到軟件生存周期前期階段計算機軟件領(lǐng)域的很多新的方法與技術(shù)都有這樣的發(fā)展經(jīng)歷,例如:結(jié)構(gòu)化方法,形式化方法,軟件復(fù)用。與其他方法相比,面向?qū)ο蟮姆椒ㄅc技術(shù)發(fā)展到軟件生命期的前期階段有著更為深刻的意義。當(dāng)前:幾乎覆蓋計算機軟件領(lǐng)域的所有分支面向?qū)ο蟮木幊陶Z言面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮脑O(shè)計面向?qū)ο蟮能浖y試面向?qū)ο蟮能浖S護面向?qū)ο蟮膱D形用戶界面面向?qū)ο蟮臄?shù)據(jù)庫面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)面向?qū)ο蟮闹悄艹绦蛟O(shè)計面向?qū)ο蟮能浖_發(fā)環(huán)境面向?qū)ο蟮捏w系結(jié)構(gòu)許多新領(lǐng)域以面向?qū)ο罄碚摓榛A(chǔ),或作為主要技術(shù)軟件體系結(jié)構(gòu)(softwarearchitecture)領(lǐng)域工程(domainengineering)設(shè)計模式(designpatterns)基于構(gòu)件的軟件工程(CBSE)智能代理(agent)面向服務(wù)的體系結(jié)構(gòu)(SOA)面向?qū)ο蠓椒◤木幊贪l(fā)展到設(shè)計、分析,進而發(fā)展到整個軟件生存周期。41第四十一頁,共九十七頁,編輯于2023年,星期二5.最新發(fā)展編程語言——語言+類庫+可視化編程環(huán)境例如:VisualC++,VisualBasic,Delhpi分析與設(shè)計方法走向統(tǒng)一,形成統(tǒng)一建模語言UML結(jié)束各種方法的概念及表示法不一致的局面42第四十二頁,共九十七頁,編輯于2023年,星期二傳統(tǒng)方法數(shù)據(jù)結(jié)構(gòu)+算法=程序設(shè)計以對象為中心組織數(shù)據(jù)與操作數(shù)據(jù)對象的屬性操作對象的操作類型與變量類與對象實例函數(shù)(過程)調(diào)用消息傳送類型與子類型一般類與特殊類,繼承構(gòu)造類型整體-部分結(jié)構(gòu),聚合指針關(guān)聯(lián)不同點思想觀念:從對象出發(fā)認識問題域;構(gòu)造策略:以對象作為構(gòu)成系統(tǒng)的基本單位,將對象的數(shù)據(jù)與操作緊密結(jié)合;保證機制:由支持封裝、繼承、多態(tài)的機制保證其原則的實現(xiàn)。面向?qū)ο蠓椒ㄅc傳統(tǒng)方法的比較面向?qū)ο蠓椒?3第四十三頁,共九十七頁,編輯于2023年,星期二在軟件生存周期全過程運用面向?qū)ο蠓椒↙.M.Northrop:“盡管面向?qū)ο笳Z言正取得令人振奮的發(fā)展,但編程并不是軟件開發(fā)問題的主要根源。需求分析與設(shè)計問題更為普遍并且更值得解決。因此面向?qū)ο箝_發(fā)技術(shù)的焦點不應(yīng)該只對準(zhǔn)編程階段,而應(yīng)更全面地對準(zhǔn)軟件工程的其他階段。面向?qū)ο蠓椒ㄕ嬲饬x深遠的目標(biāo)是它適合于解決分析與設(shè)計期間的復(fù)雜性并實現(xiàn)分析與設(shè)計的復(fù)用。面向?qū)ο蟮拈_發(fā)不僅僅是編程,必須在整個軟件生存周期采用一種全新的方法,這一觀點已被人們所接受?!盾浖こ贪倏迫珪芳~約,1994面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮脑O(shè)計面向?qū)ο蟮木幊堂嫦驅(qū)ο蟮臏y試面向?qū)ο蟮能浖S護44第四十四頁,共九十七頁,編輯于2023年,星期二第2章不同的分析與設(shè)計方法幾種典型的建模方法功能分解法結(jié)構(gòu)化方法信息建模法面向?qū)ο蠓椒ǚ椒ǖ谋容^對問題域的不同映射以不同的概念構(gòu)成系統(tǒng)模型什么是OOA什么是OODOO方法的主要優(yōu)點幾種典型的OO方法從軟件系統(tǒng)建模面臨的難題看面向?qū)ο蠓椒ǖ膬?yōu)勢Booch方法Coad-Yourdon方法Jacobson方法(OOSE)Rumbaugh方法(OMT)本章內(nèi)容結(jié)構(gòu)45第四十五頁,共九十七頁,編輯于2023年,星期二歷史上幾種典型的建模方法2.1功能分解法(functiondecomposition)以系統(tǒng)需要提供的功能為中心來組織系統(tǒng)。首先定義各種功能,然后把功能分解為子功能對較大的子功能進一步分解,直到可給出明確的定義。根據(jù)功能/子功能的需要設(shè)計數(shù)據(jù)結(jié)構(gòu)。定義功能/子功能之間的接口。沒有明確地區(qū)分分析與設(shè)計

功能

功能

功能

系統(tǒng)子功能子功能子功能子功能分解分解分解……………………建模過程:層層進行功能分解46第四十六頁,共九十七頁,編輯于2023年,星期二功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊得到的系統(tǒng)模型:由模塊及其接口構(gòu)成優(yōu)點與缺點:直接地反映用戶的需求,所以工作很容易開始。不能直接地映射問題域,很難檢驗結(jié)果的正確性。對需求變化的適應(yīng)能力很差。局部的錯誤和修改很容易產(chǎn)生全局性的影響。47第四十七頁,共九十七頁,編輯于2023年,星期二2.2結(jié)構(gòu)化方法結(jié)構(gòu)化分析(structuredanalysis,SA)結(jié)構(gòu)化設(shè)計(structureddesign,SD)

結(jié)構(gòu)化分析又稱數(shù)據(jù)流法,其基本策略是跟蹤數(shù)據(jù)流,即研究問題域中數(shù)據(jù)如何流動,以及在各個環(huán)節(jié)上進行何種處理,從而發(fā)現(xiàn)數(shù)據(jù)流和加工。得到的分析模型是數(shù)據(jù)流圖(DFD),主要模型元素是數(shù)據(jù)流、加工、文件及端點,外加處理說明和數(shù)據(jù)字典。結(jié)構(gòu)化設(shè)計與功能分解法基本相同,基于模塊的概念建立設(shè)計模型,分為概要設(shè)計和詳細設(shè)計。概要設(shè)計:確定系統(tǒng)中包含哪些模塊以及模塊之間的調(diào)用關(guān)系,得到模塊結(jié)構(gòu)圖(MSD)。詳細設(shè)計:描述每個模塊內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和操作流程。48第四十八頁,共九十七頁,編輯于2023年,星期二數(shù)據(jù)流加工文件起點處理說明————————————————————————數(shù)據(jù)詞典————————————————————————優(yōu)點:有嚴(yán)格的法則,強調(diào)研究問題域。缺點:仍然是間接映射問題域;與結(jié)構(gòu)化設(shè)計的概念不一致,從分析到設(shè)計的過渡比較困難;數(shù)據(jù)流和加工的數(shù)量太多,引起分析文檔的膨脹。終點49第四十九頁,共九十七頁,編輯于2023年,星期二2.3信息建模法(informationmodeling)由實體-關(guān)系法(E-R方法)發(fā)展而來。核心概念是實體和關(guān)系。實體描述問題域中的事物,關(guān)系描述事物之間在數(shù)據(jù)方面的聯(lián)系,都可以帶有屬性。發(fā)展之后的方法也把實體稱作對象,并使用了類型和子類型的概念,作為實體(對象)的抽象描述。有人也稱之為面向?qū)ο蠓椒ǎ幸韵虏顒e:1.強調(diào)的重點是信息建模和狀態(tài)建模,而不是對象建模。2.沒有把對實體屬性所進行的操作封裝到實體對象中。3.只有屬性的繼承,不支持操作的繼承。4.沒有采用消息通訊。實體屬性屬性屬性屬性關(guān)系實體mnE-R圖信息模型mn對象屬性關(guān)系屬性對象屬性50第五十頁,共九十七頁,編輯于2023年,星期二2.4面向?qū)ο蠓椒嫦驅(qū)ο蟮姆治觯∣OA)面向?qū)ο蟮脑O(shè)計(OOD)運用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來構(gòu)造系統(tǒng)。把問題域中的事物抽象為對象,作為系統(tǒng)的基本構(gòu)成單位其屬性和操作刻畫了事物的靜態(tài)特征和動態(tài)特征——完整地刻畫了問題域中事物。用類作為對象的抽象描述,建立它們之間的繼承、聚合、關(guān)聯(lián)、消息等關(guān)系——如實地表達了問題域中事物之間的各種關(guān)系。封裝、繼承、聚合、關(guān)聯(lián)、消息通訊等原則符合人類的日常思維——使系統(tǒng)的復(fù)雜性得到控制。因此,得到的系統(tǒng)模型可以直接映射問題域。51第五十一頁,共九十七頁,編輯于2023年,星期二不同的建模方法體現(xiàn)于從不同的概念出發(fā)來認識問題域用不同的概念進行系統(tǒng)構(gòu)造系統(tǒng)對現(xiàn)實世界的不同映射

信息建模法

面向?qū)ο蠓椒üδ?子功能功能接口功能分解法數(shù)據(jù)流加工

結(jié)構(gòu)化方法間接映射間接映射半直接映射直接映射52第五十二頁,共九十七頁,編輯于2023年,星期二審批不同的方法對同一應(yīng)用實例(電話安裝業(yè)務(wù)系統(tǒng))的不同效果結(jié)構(gòu)化分析——數(shù)據(jù)流和加工登記安裝開通問題:不是直接映射問題域,與問題域事物相關(guān)的數(shù)據(jù)和操作不是圍繞這些事物來組織的,而是分散在數(shù)據(jù)流和加工中;經(jīng)常發(fā)生信息膨脹——模型中的多個數(shù)據(jù)流,實現(xiàn)中其實只是一項數(shù)據(jù);分析模型難以與設(shè)計模型及源程序?qū)?yīng)。用戶登記表用戶登記表用戶登記表用戶登記表文件用戶信息53第五十三頁,共九十七頁,編輯于2023年,星期二面向?qū)ο蠓椒ā獙ο蠹捌潢P(guān)系用戶登記表用戶名登記人審批人施工隊號碼登記審批安裝開通用戶營業(yè)員主管人施工隊機房1*1*1*?call??call??call??call?個人用戶團體用戶帳單帳單項1*1*?call?直接映射了問題域中的實際事物;能夠與程序形成良好的對應(yīng)。54第五十四頁,共九十七頁,編輯于2023年,星期二顧名思義,面向?qū)ο蟮姆治觯∣OA),就是運用面向?qū)ο蠓椒ㄟM行系統(tǒng)分析。首先,OOA是分析,是軟件生存周期的一個階段,具有一般分析方法共同具有的內(nèi)容、目標(biāo)及策略;但是,它強調(diào)運用面向?qū)ο蠓椒ㄟM行分析,用面向?qū)ο蟮母拍詈捅硎痉ū磉_分析結(jié)果?;救蝿?wù):運用面向?qū)ο蟮母拍顚栴}域進行分析和理解,將問題域中與系統(tǒng)責(zé)任有關(guān)的事物抽象為系統(tǒng)中的類和對象,定義這些類和對象的屬性與操作,以及它們之間所形成的各種關(guān)系。最終目標(biāo):建立一個滿足用戶需求、直接映射問題域的OOA模型及其規(guī)約。2.4.1什么是OOA問題:OOA是需求分析還是系統(tǒng)分析?55第五十五頁,共九十七頁,編輯于2023年,星期二2.4.2什么是OOD不同時期有不同內(nèi)容及特點早期(80年代末期之前)OOD的特點:1、不是基于OOA的大多基于結(jié)構(gòu)化分析結(jié)果(數(shù)據(jù)流圖)2、是OO編程方法的延伸多數(shù)方法與編程語言有關(guān),特別受Ada影響很大3、不是純OO的對某些OO概念(如繼承)缺少支持,攙雜一些非OO概念(如數(shù)據(jù)流、包、模塊等)4、不是只針對軟件生存周期的設(shè)計階段OOD中的“D”——指的是Design或Development多少涉及分析問題(如識別問題域的對象),但很不徹底——早期的OOD可看作現(xiàn)今OOA&D方法的雛形56第五十六頁,共九十七頁,編輯于2023年,星期二定義:面向?qū)ο蟮脑O(shè)計(OOD)就在是OOA模型基礎(chǔ)上運用面向?qū)ο蠓椒ㄟM行系統(tǒng)設(shè)計,目標(biāo)是產(chǎn)生一個符合具體實現(xiàn)條件的OOD模型?,F(xiàn)今(90年代以后)OOD的特點:1.以面向?qū)ο蟮姆治鰹榛A(chǔ),一般不依賴結(jié)構(gòu)化分析。2.與相應(yīng)的OOA方法共同構(gòu)成一種OOA&D方法體系。OOA和OOD采用一致的概念與原則,但屬于軟件生存周期的不同階段,有不同的目標(biāo)及策略。3.較全面地體現(xiàn)面向?qū)ο蠓椒ǖ母拍钆c原則。4.大多數(shù)方法獨立于編程語言,通過面向?qū)ο蟮姆治雠c設(shè)計所得到的系統(tǒng)模型可以由不同的編程語言實現(xiàn)。57第五十七頁,共九十七頁,編輯于2023年,星期二軟件建模面臨的挑戰(zhàn)1、問題域和系統(tǒng)責(zé)任復(fù)雜性日益增長問題域(problemdomain):被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域,即在現(xiàn)實世界中由這個系統(tǒng)進行處理的業(yè)務(wù)范圍。系統(tǒng)責(zé)任(systemresponsibilities):所開發(fā)的系統(tǒng)應(yīng)該具備的職能。隨著硬件性能的提高和價格的下降,軟件系統(tǒng)所面臨的問題域和系統(tǒng)責(zé)任越來越復(fù)雜,因此系統(tǒng)也越來越龐大。

2、交流問題軟件系統(tǒng)的開發(fā)需要各類人員之間頻繁交流。領(lǐng)域的多樣性使軟件工程中的交流問題比與其他工程更為突出。

有效的交流需要一種彼此都能理解的共同語言,否則將使彼此的思想難以溝通,很容易隱藏下許多錯誤。

2.4.3OO方法的主要優(yōu)點58第五十八頁,共九十七頁,編輯于2023年,星期二3、需求的不斷變化用戶因素,競爭因素,經(jīng)費因素……開發(fā)者必須接受和適應(yīng)需求變化易變部分和穩(wěn)定部分:功能:最易變外部接口:很易變屬性:較易變對象:較穩(wěn)定4、軟件復(fù)用的要求復(fù)用級別提高——分析結(jié)果復(fù)用要求分析模型的基本成分可以在多個系統(tǒng)中復(fù)用要求一個分析模型可以在多種條件下設(shè)計和實現(xiàn)需求變化系統(tǒng)局部修改受影響部分修改產(chǎn)生新錯誤延長開發(fā)時間59第五十九頁,共九十七頁,編輯于2023年,星期二面向?qū)ο蠓椒ǖ膬?yōu)勢對問題域和系統(tǒng)責(zé)任的復(fù)雜性具有較強的處理能力從問題域中的實際事物出發(fā)來構(gòu)造系統(tǒng)模型,使系統(tǒng)模型能直接地映射問題域;繼承、封裝、聚合等概念使系統(tǒng)的復(fù)雜性得到有效的控制。提供了便于各類相關(guān)人員交流共同語言使用與問題域一致的概念及術(shù)語,體現(xiàn)人類的日常思維方式,為改進各類人員之間的交流提供了最基本的條件。對需求的變化具有較強的適應(yīng)性按封裝原則把系統(tǒng)中最容易變化的因素隔離起來,系統(tǒng)的各個單元成分之間接口很少,把需求變化所引起的影響局部化。為實現(xiàn)分析與設(shè)計級別的軟件復(fù)用提供了有力支持OO方法的封裝、繼承、聚合等原則,對象的完整性、獨立性以及與問題域的良好對應(yīng),使之非常有利于軟件復(fù)用。貫穿軟件生存周期全過程的一致性從OOA開始使用與問題域一致的概念、詞匯、原則及表示法,這種一致性保持到設(shè)計、編程、測試、維護等各個階段,對于整個軟件生存周期的開發(fā)、維護及管理活動都具有重要的意義。60第六十頁,共九十七頁,編輯于2023年,星期二Booch方法Coad-Yourdon方法Firesmith方法Jacobson方法(OOSE)Martin-Odell方法Rumbaugh方法(OMT)Seidewitz-Stark方法Shlaer-Mellor方法Wirfs-Brock方法……2.4.4幾種典型的OO方法方法的異同體現(xiàn)于:概念表示法系統(tǒng)模型開發(fā)過程可用性技術(shù)支持61第六十一頁,共九十七頁,編輯于2023年,星期二Booch方法必要時使用用于分析和設(shè)計6種模型圖基本圖通常不可缺少類圖對象圖模塊圖進程圖只用于設(shè)計補充圖狀態(tài)轉(zhuǎn)移圖交互圖模型圖62第六十二頁,共九十七頁,編輯于2023年,星期二開發(fā)期望行為模型(分析)建立體系結(jié)構(gòu)(設(shè)計)逐漸形成實現(xiàn)(演化)建立核心需求(概念化)(a)宏過程識別類和對象識別類和對象的語義識別類和對象的關(guān)系說明類和對象的接口和實現(xiàn)(b)微過程管理交付后的演化(維護)特點:思想活躍,開拓與創(chuàng)新可操作性不夠強類圖與對象圖并存過程Booch方法(續(xù))63第六十三頁,共九十七頁,編輯于2023年,星期二主題層類及對象層結(jié)構(gòu)層屬性層服務(wù)層OOA模型的5個層次主題層類及對象層結(jié)構(gòu)層屬性層服務(wù)層人機交互部分(HIC)問題域部分(PDC)任務(wù)管理部分(TMC)數(shù)據(jù)管理部分(DMC)OOD模型的5個層次和4個部分Coad/Yourdon方法特點:概念簡練,過程清晰強調(diào)概念的一致性過程指導(dǎo)不夠具體64第六十四頁,共九十七頁,編輯于2023年,星期二實體對象界面對象控制對象三種對象行為表示信息三維的分析模型四維的設(shè)計模型實現(xiàn)環(huán)境需求說明需求分析健壯分析需求模型分析模型需求模型設(shè)計實現(xiàn)設(shè)計模型實現(xiàn)模型分析模型需求模型單元測試組裝測試實現(xiàn)模型設(shè)計模型系統(tǒng)測試測試模型分析過程構(gòu)造過程測試過程Jacobson方法(OOSE)特點:通過用況描述用戶需求用交互圖描述對象之間的交互用況驅(qū)動的觀點言之有過65第六十五頁,共九十七頁,編輯于2023年,星期二三個模型功能模型對象模型模型動態(tài)Rumbaugh方法(OMT)過程:分析(面向?qū)ο螅┫到y(tǒng)設(shè)計(傳統(tǒng)方法)對象設(shè)計(面向?qū)ο螅崿F(xiàn)特點:概念嚴(yán)謹(jǐn),闡述清楚過程具體,可操作性強包含了許多非OO的內(nèi)容提出若干擴充概念,偏于復(fù)雜66第六十六頁,共九十七頁,編輯于2023年,星期二第3章統(tǒng)一建模語言UML簡介3.1UML的背景與發(fā)展歷史3.2UML1概況3.3UML2概況主要組成部分元模型體系結(jié)構(gòu)具體元類和抽象元類各種圖和擴展機制UML2的四個規(guī)范圖的增加和主要變化67第六十七頁,共九十七頁,編輯于2023年,星期二面向?qū)ο蠓椒ǚN類繁多1989年約10種,1994年達到50種以上概念、表示法、過程策略及文檔組織等方面的差異使用戶在選擇建模方法和工具時無所適從不利于技術(shù)交流迫切需要OO概念及表示法走向統(tǒng)一和標(biāo)準(zhǔn)化統(tǒng)一建模語言UML應(yīng)運而生誕生背景UML的背景與發(fā)展歷史68第六十八頁,共九十七頁,編輯于2023年,星期二發(fā)展歷史第一階段:OO方法學(xué)家的聯(lián)合行動1995.10:G.Booch與J.Rumbaugh聯(lián)合推出UnifiedMethod0.81996.6:I.Jacobson加入推出UML0.9(UnifiedModelingLanguage)不再稱“方法”而改稱“建模語言”第二階段:公司的聯(lián)合行動1996:成立了UML伙伴組織,12家公司加入1997.1:推出UML1.0,另外5家公司加盟1997.9:形成UML1.1,提交OMG作為建模語言規(guī)范提案1997.11:UML1.1被OMG正式采納69第六十九頁,共九十七頁,編輯于2023年,星期二第三階段:OMG主持下的修訂1997~2002:OMG成立UML修訂任務(wù)組主持UML的修訂先后產(chǎn)生UML1.2、UML1.3、UML1.4、UML1.5等版本UML1.3和UML1.4是兩個最重要的修訂版本第四階段:UML的重大修訂——UML21999:開始醞釀,旨在產(chǎn)生比UML1有顯著改進的新版本2000~2001:由OMG陸續(xù)發(fā)布了4個提案需求(RFP)征集提案,擇優(yōu)采納2002年之后先后形成4個UML2.0規(guī)范在OMG的組織下繼續(xù)修訂和改進,目前最新的版本是UML2.470第七十頁,共九十七頁,編輯于2023年,星期二UML是什么不是什么1、是一種建模語言,不是一種建模方法“Rational統(tǒng)一過程”不是UML的一部分2、用于建立系統(tǒng)的分析模型和設(shè)計模型,而不是用于編程3、是一種已被OMG采納的建模語言規(guī)范(specification)正式場合一般不稱作“標(biāo)準(zhǔn)”(standard)

4、部分地采用了形式化語言的定義方式,但并不嚴(yán)格不是一種形式化語言,不能編譯執(zhí)行或解釋執(zhí)行“統(tǒng)一建模語言(UML)是一種用來對軟件密集型系統(tǒng)制品進行可視化、詳述、構(gòu)造和建檔的圖形語言,也可用于業(yè)務(wù)建模以及其它非軟件系統(tǒng)?!?1第七十一頁,共九十七頁,編輯于2023年,星期二UML1規(guī)范的主要構(gòu)成部分(1)UML概要(UMLSummary):對UML做概括介紹,包括其構(gòu)成、動機、目標(biāo)、范圍、特點、歷史、現(xiàn)狀以及對未來演化的建議。

(2)UML語義(UMLSemantics):定義UML的語法和語義,是定義UML語言的基本文件(3)UML表示法指南(UMLNotationGuide)定義UML的各種模型圖給出各種圖中建模元素的可視化表示法UML1概況72第七十二頁,共九十七頁,編輯于2023年,星期二(4)UML外廓范例(UMLExampleProfiles)用于軟件開發(fā)過程的UML外廓用于業(yè)務(wù)建模的UML外廓(5)UML模型交換(UMLModelInterchange)規(guī)定了建模工具在實現(xiàn)各種UML模型時需要共同遵守的語言約定,使來自不同廠商的建模工具能夠彼此交換和處理各自開發(fā)的系統(tǒng)模型。(6)對象約束語言O(shè)CL(ObjectConstraintLanguage)定義了一種對象約束語言,用來描述模型中關(guān)于對象的附加約束,是一種形式化的語言。73第七十三頁,共九十七頁,編輯于2023年,星期二定義建模語言的語言元-元模型層應(yīng)用領(lǐng)域中的事物用戶對象層應(yīng)用系統(tǒng)的抽象描述系統(tǒng)模型層抽象描述模型的語言元模型層抽象實例化抽象實例化實例化元-元模型(meta-metamodel):元模型的基礎(chǔ)體系結(jié)構(gòu),定義一種說明元模型的語言。例如:MOF元模型(metamodel):元-元模型的一個實例,定義一種說明模型的語言例如:UML模型(model):元模型的一個實例,定義一種語言來描述信息領(lǐng)域。例如:教學(xué)管理系統(tǒng)——教室類、學(xué)生類、課程類用戶對象(userobject):模型的一個實例,定義一個特定的信息領(lǐng)域。例如:一個學(xué)?!忱蠋煟硨W(xué)生,某課程OMG的四層元模型體系結(jié)構(gòu)74第七十四頁,共九十七頁,編輯于2023年,星期二抽象元類和具體元類

類類型接口構(gòu)件結(jié)點關(guān)聯(lián)泛化依賴類目關(guān)系可泛化元素模型元素元素具體元類抽象元類(classifier)75第七十五頁,共九十七頁,編輯于2023年,星期二UML1的9種模型圖靜態(tài)結(jié)構(gòu)圖(StaticStructureDiagram)類圖(ClassDiagram)對象圖(ObjectDiagram)用況圖(UseCaseDiagram)交互圖(InteractionDiagram)順序圖(SequenceDiagram)協(xié)作圖(CollaborationDiagram)狀態(tài)圖(StatechartDiagrams)活動圖(ActivityDiagrams)實現(xiàn)圖(ImplementationDiagrams)構(gòu)件圖(ComponentDiagram)部署圖(DeploymentDiagram)

九種圖支持用戶從不同的視角進行系統(tǒng)建模76第七十六頁,共九十七頁,編輯于2023年,星期二關(guān)聯(lián)類對象鏈教師:史密斯課程:計算概論教師:瑪麗課程:圖論*1課程教師元模型中的實例級概念引起體系結(jié)構(gòu)層次的混亂77第七十七頁,共九十七頁,編輯于2023年,星期二擴展機制:附加到其他模型元素之上以,將原有的建模元素特化成一種語義較特殊的新變種,或者表示出它們的某些細節(jié)。約束(constraint):用于說明某些必須保持為真的命題。注釋(comment):對模型元素的細節(jié)所進行的解釋。標(biāo)記值(TaggedValue):表示模型元素的附加的特征。衍型(stereotype):附加到其他模型元素之上,從而將原有的建模元素定制成一種語義較為特殊的新變種。衍型的表示法和例子?active?類名類名?界面?類名+關(guān)鍵詞或圖標(biāo)=78第七十八頁,共九十七頁,編輯于2023年,星期二UML基礎(chǔ)結(jié)構(gòu)Infrastructure定義一個可復(fù)用的元語言核心,用來定義各種元模型,包括UML、MOF和CWM等元模型UML上層結(jié)構(gòu)Superstructure提供可直接用來構(gòu)造用戶系統(tǒng)的各種模型元素,以及從不同的視角對系統(tǒng)進行建模的各種模型圖UML圖交換DiagramInterchange給出在不同的建模工具之間實現(xiàn)模型交換的規(guī)范UML對象約束語言UMLOCL一個形式化的語言,描述模型約束信息UML2的四個規(guī)范UML2概況79第七十九頁,共九十七頁,編輯于2023年,星期二UML2的13種模型圖圖結(jié)構(gòu)圖行為圖交互圖類圖構(gòu)件圖對象圖活動圖用況圖狀態(tài)機圖部署圖順序圖通訊圖組合結(jié)構(gòu)圖包圖交互概覽圖定時圖支持用戶從不同的視角進行系統(tǒng)建模80第八十頁,共九十七頁,編輯于2023年,星期二UML1的圖UML2的圖詳見結(jié)構(gòu)圖類圖classdiagram類圖classdiagram第6章~第8章對象圖objectdiagram對象圖objectdiagram第9章9.7.1節(jié)構(gòu)件圖componentdiagram構(gòu)件圖componentdiagram第9章9.6節(jié)部署圖deploymentdiagram部署圖deploymentdiagram第9章9.7.6節(jié)包圖packagediagram第9章9.2節(jié)組合結(jié)構(gòu)圖compositestructurediagram第9章9.7.2節(jié)行為圖用況圖usecasediagram用況圖usecasediagram第5章5.5節(jié)狀態(tài)圖statechartdiagram狀態(tài)機圖statemachinediagram第9章9.5節(jié)活動圖activitydiagrams活動圖activitydiagrams第9章9.4節(jié)順序圖sequencediagram順序圖sequencediagram第9章9.3節(jié)協(xié)作圖collaborationdiagram通信圖communicationdiagram第9章9.7.3節(jié)交互概覽圖interactionoverviewdiagram第9章9.7.4節(jié)定時圖timingdiagram第9章9.7.5節(jié)UML與UML2的各種圖的對照81第八十一頁,共九十七頁,編輯于2023年,星期二學(xué)習(xí)建議:1、重點掌握UML直接提供給應(yīng)用模型開發(fā)者使用的建模元素,即“具體元類”;熟練地掌握面向?qū)ο蠓椒ㄗ罨镜母拍睢?、在13種圖中,重點掌握類圖、用況圖、順序圖、活動圖狀態(tài)機圖、構(gòu)件圖。3、著眼于實際應(yīng)用,從UML的復(fù)雜性中解放出來。4、切記:UML只是一種建模語言,不是建模方法。它不包括過程,而且是獨立于過程的。根據(jù)本單位的實際情況選擇適當(dāng)?shù)倪^程。5、動手實踐,使用工具;選擇合適的項目開始實際應(yīng)用。82第八十二頁,共九十七頁,編輯于2023年,星期二4.1引言(本書的宗旨)充分運用面向?qū)ο蠓椒ǖ幕靖拍?,限制擴充概念以往某些OO方法提出了許多擴充概念,問題是:使方法復(fù)雜化——增加學(xué)習(xí)難度和工程開銷缺乏編程語言支持——造成模型與源程序不一致加強過程指導(dǎo)給出運用最基本的OO概念自然而有效地解決建模問題的策略,包括那些在其他方法中采用擴充概念解決的問題。強調(diào)在類的抽象層次上建立系統(tǒng)模型所有對象的屬性和操作以及對象之間的關(guān)系,都通過它們的類來描述,而不是針對個別對象實例進行描述……第4章本書的OOA&D方法概貌83第八十三頁,共九十七頁,編輯于2023年,星期二面向?qū)ο蟮母拍畎ㄒ韵聝煞N情況:(1)用來構(gòu)成系統(tǒng)模型的某種基本成分,稱為建模元素(2)在建模中需要遵守的某種原則,不代表任何模型成分4.2主要概念主要建模元素

對象、類(所有的對象都通過類來表示)屬性、操作(類屬性和實例屬性,被動操作和主動操作)一般-特殊關(guān)系,一般-特殊結(jié)構(gòu)整體-部分關(guān)系,整體-部分結(jié)構(gòu)關(guān)聯(lián)(二元關(guān)聯(lián)、多元關(guān)聯(lián))消息(控制流內(nèi)部的消息,控制流之間的消息)84第八十四頁,共九十七頁,編輯于2023年,星期二主要原則(1)抽象什么叫抽象?(回顧定義)OO方法廣泛地運用抽象原則,例如:·系統(tǒng)中的對象是對現(xiàn)實世界中事物的抽象,·類是對象的抽象,·一般類是對特殊類的進一步抽象,·屬性是事物靜態(tài)特征的抽象,·操作是事物動態(tài)特征的抽象。過程抽象任何一個完成確定功能的操作序列,其使用者都可把它看作一個單一的實體,盡管實際上它可能是由一系列更低級的操作完成的。數(shù)據(jù)抽象根據(jù)施加于數(shù)據(jù)之上的操作來定義數(shù)據(jù)類型,并限定數(shù)據(jù)的值只能由這些操作來修改和觀察。85第八十五頁,共九十七頁,編輯于2023年,星期二(2)分類分類就是把具有相同屬性和操作的對象劃分為一類,用類作為這些對象的抽象描述。不同程度的抽象可得到不同層次的類,形成一般-特殊結(jié)構(gòu)(又稱分類結(jié)構(gòu))。強調(diào):在類的抽象層次上建模(3)封裝(4)繼承(5)聚合(6)關(guān)聯(lián)(7)消息通信即要求對象之間只能通過消息進行通訊,而不允許在對象之外直接地存取對象內(nèi)部的屬性。86第八十六頁,共九十七頁,編輯于2023年,星期二(8)粒度控制人們在研究問題時既需要微觀的思考,也需要宏觀的思考。因此需要控制自己的視野:考慮全局時,注重其大的組成部分,暫時不詳察每一部分的具體的細節(jié);考慮某部分的細節(jié)時則暫時撇開其余的部分。這就是粒度控制原則。引入包(package)的概念,把模型中的類按一定的規(guī)則進行組合,形成一些包,使模型具有大小不同的粒度層次,從而有利于人們對復(fù)雜性的控制。87第八十七頁,共九十七頁,編輯于2023年,星期二(9)行為分析·以對象為單位描述系統(tǒng)中的各種行為任何行為都歸屬于某個對象,用對象的操作表示。對象的操作只作用于對象自身的屬性?!ねㄟ^消息描述對象之間的行為依賴關(guān)系如果一個對象操作的執(zhí)行需要另一個對象為它提供服務(wù),則在模型中表現(xiàn)為前者向后者發(fā)送消息?!ふJ識行為的起因,區(qū)分主動行為和被動行為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論