面向?qū)ο蠼EcUML-基礎(chǔ)_第1頁(yè)
面向?qū)ο蠼EcUML-基礎(chǔ)_第2頁(yè)
面向?qū)ο蠼EcUML-基礎(chǔ)_第3頁(yè)
面向?qū)ο蠼EcUML-基礎(chǔ)_第4頁(yè)
面向?qū)ο蠼EcUML-基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩112頁(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)介

面向?qū)ο蠼EcUML信息與電氣工程學(xué)院高洪江2/2/20240第1章面向?qū)ο蠓椒ǜ耪?/2/20241內(nèi)容什么是面向?qū)ο髲恼J(rèn)識(shí)論看面向?qū)ο蠓椒ǖ男纬擅嫦驅(qū)ο蠓椒ǖ母靖拍钆c原那么OO方法的開展歷史與現(xiàn)狀2/2/20242什么是面向?qū)ο髲某绦蛟O(shè)計(jì)方法的角度看,面向?qū)ο笫且环N新的程序設(shè)計(jì)范型(paradigm),其根本思想是使用對(duì)象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等根本概念來(lái)進(jìn)行程序設(shè)計(jì)。2/2/20243自20世紀(jì)80年代以來(lái),面向?qū)ο蠓椒ㄒ焉钊氲接?jì)算機(jī)軟件領(lǐng)域的幾乎所有分支。它不僅是一些具體的軟件開發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實(shí)世界的關(guān)系,用什么觀點(diǎn)來(lái)研究問(wèn)題并進(jìn)行問(wèn)題求解,以及如何進(jìn)行系統(tǒng)構(gòu)造的軟件方法學(xué)。從這個(gè)意義上講:面向?qū)ο蠓椒ㄊ且环N運(yùn)用對(duì)象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來(lái)構(gòu)造系統(tǒng)的軟件開發(fā)方法。2/2/20244面向?qū)ο蠓椒ǖ母舅枷霃默F(xiàn)實(shí)世界中客觀存在的事物出發(fā)來(lái)構(gòu)造系統(tǒng)強(qiáng)調(diào)直接以問(wèn)題域〔現(xiàn)實(shí)世界〕中的事物為中心來(lái)思考問(wèn)題、認(rèn)識(shí)問(wèn)題,并根據(jù)這些事物的本質(zhì)特征,把它們抽象為系統(tǒng)中的對(duì)象,作為系統(tǒng)的根本構(gòu)成單位。這可以使系統(tǒng)直接映射問(wèn)題域,保持問(wèn)題域中事物及其相互關(guān)系的本來(lái)面貌。充分運(yùn)用人類日常的思維方法強(qiáng)調(diào)運(yùn)用人類在日常的邏輯思維中經(jīng)常采用的思想方法與原那么,例如抽象、分類、繼承、聚合、封裝、關(guān)聯(lián)等等。這使得軟件開發(fā)者能更有效地思考問(wèn)題,并以其他人也能看得懂的方式把自己的認(rèn)識(shí)表達(dá)出來(lái)。2/2/20245主要特點(diǎn):用類和對(duì)象作為系統(tǒng)的根本構(gòu)成單位。對(duì)象對(duì)應(yīng)問(wèn)題域中的事物,其屬性和操作刻畫了事物的靜態(tài)特征和動(dòng)態(tài)特征,它們之間的繼承關(guān)系、聚合關(guān)系、關(guān)聯(lián)和消息如實(shí)地表達(dá)了問(wèn)題域中事物之間實(shí)際存在的各種關(guān)系。因此,無(wú)論系統(tǒng)的構(gòu)成成分,還是通過(guò)這些成分之間的關(guān)系而表達(dá)的系統(tǒng)結(jié)構(gòu),都可直接地映射問(wèn)題域。2/2/20246內(nèi)容什么是面向?qū)ο髲恼J(rèn)識(shí)論看面向?qū)ο蠓椒ǖ男纬擅嫦驅(qū)ο蠓椒ǖ母靖拍钆c原那么OO方法的開展歷史與現(xiàn)狀2/2/20247從認(rèn)識(shí)論看面向?qū)ο蠓椒ǖ男纬绍浖_發(fā):對(duì)事物的認(rèn)識(shí)和描述問(wèn)題——語(yǔ)言的鴻溝對(duì)問(wèn)題域的認(rèn)識(shí)〔人〕客觀世界〔問(wèn)題域〕計(jì)算機(jī)自然語(yǔ)言語(yǔ)言的鴻溝編程語(yǔ)言語(yǔ)言的過(guò)渡〔人〕編程〔人〕程序的理解和執(zhí)行〔機(jī)器〕2/2/20248語(yǔ)言的開展——鴻溝變窄計(jì)算機(jī)機(jī)器語(yǔ)言自然語(yǔ)言客觀世界〔問(wèn)題域〕語(yǔ)言的鴻溝程序的指令、數(shù)據(jù)、地址,都是由二進(jìn)制的“0〞和“1〞構(gòu)成的。離機(jī)器最近,能夠直接地執(zhí)行,然而沒有絲毫形象的意義,離人類的思維最遠(yuǎn)。匯編語(yǔ)言以易理解的符號(hào)表示指令、數(shù)據(jù)以及寄存器、地址等物理概念。稍稍適合人類的形象思維,但仍然相差很遠(yuǎn)。因?yàn)槌橄髮哟翁?,仍需考慮大量的機(jī)器細(xì)節(jié)。高級(jí)語(yǔ)言隱蔽了機(jī)器細(xì)節(jié),使用有形象意義的命名和表達(dá)式,可以聯(lián)系到程序所描述的具體事物。特別是結(jié)構(gòu)化編程語(yǔ)言更便于體現(xiàn)客觀事物的結(jié)構(gòu)和邏輯涵義,與人類的自然語(yǔ)言更接近,但仍有不少差距。面向?qū)ο笳Z(yǔ)言能比較直接地反映客觀世界的本來(lái)面目,并使軟件開發(fā)人員能夠運(yùn)用人類認(rèn)識(shí)事物所采用的一般思維方法來(lái)進(jìn)行軟件開發(fā)。2/2/20249軟件工程學(xué)的作用——傳統(tǒng)的軟件工程方法問(wèn)題域測(cè)試編程計(jì)算機(jī)編程語(yǔ)言自然語(yǔ)言需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)分析與設(shè)計(jì)的鴻溝分析與設(shè)計(jì)概念及表示法的不一致2/2/202410軟件工程學(xué)的作用——

面向?qū)ο蟮能浖こ谭椒▎?wèn)題域OOA計(jì)算機(jī)自然語(yǔ)言面向?qū)ο缶幊陶Z(yǔ)言O(shè)ODOOPOOT2/2/202411內(nèi)容什么是面向?qū)ο髲恼J(rèn)識(shí)論看面向?qū)ο蠓椒ǖ男纬擅嫦驅(qū)ο蠓椒ǖ母靖拍钆c原那么OO方法的開展歷史與現(xiàn)狀2/2/202412面向?qū)ο蠓椒ǖ母靖拍钆c原那么對(duì)象,類屬性,操作封裝繼承,一般—特殊結(jié)構(gòu)聚合,整體—局部結(jié)構(gòu)關(guān)聯(lián)消息多態(tài)持久對(duì)象,主動(dòng)對(duì)象……2/2/202413對(duì)象,屬性,操作對(duì)象是現(xiàn)實(shí)世界中某個(gè)實(shí)際存在的事物,它可以是有形的,比方一輛汽車,也可以是無(wú)形的,比方一項(xiàng)方案。對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位。它具有自己的靜態(tài)特征和動(dòng)態(tài)特征。屬性是用來(lái)描述對(duì)象靜態(tài)特征的一個(gè)數(shù)據(jù)項(xiàng)。操作是用來(lái)描述對(duì)象動(dòng)態(tài)特征的一個(gè)動(dòng)作序列。對(duì)象標(biāo)識(shí)就是對(duì)象的名字,有“外部標(biāo)識(shí)〞和“內(nèi)部標(biāo)識(shí)〞之分。對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。對(duì)象由一組屬性和施加于這些屬性一組操作構(gòu)成。對(duì)象對(duì)象標(biāo)識(shí)屬性操作2/2/202414封裝:把對(duì)象的屬性和操作結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。售報(bào)亭屬性操作報(bào)刊A報(bào)刊B…錢箱報(bào)刊零售款貨清點(diǎn)顧客封裝的重要意義:使對(duì)象能夠集中而完整地描述并對(duì)應(yīng)一個(gè)具體的事物。表達(dá)了事物的相對(duì)獨(dú)立性,使對(duì)象外部不能隨意存取對(duì)象的內(nèi)部數(shù)據(jù),防止了外部錯(cuò)誤對(duì)它的“交叉感染〞。對(duì)象的內(nèi)部的修改對(duì)外部的影響很小,減少了修改引起的“波動(dòng)效應(yīng)〞。由封裝機(jī)制保證封裝帶來(lái)的問(wèn)題:編程的麻煩執(zhí)行效率的損失解決方法:不強(qiáng)調(diào)嚴(yán)格封裝,實(shí)行可見性控制?!不旌闲蚈OPL〕例如:C++2/2/202415抽象,類,一般類,特殊類抽象與分類:忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,叫做抽象。抽象是形成概念的根本手段。把具有共同性質(zhì)的事物劃分為一類,叫做分類。類是具有相同屬性和操作的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和操作兩個(gè)主要局部。類的作用是用來(lái)創(chuàng)立對(duì)象,對(duì)象是類的一個(gè)實(shí)例。對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象類名屬性操作抽象2/2/202416不同程度的抽象可得到不同層次的分類較多地忽略事物之間的差異可得到較一般的類較多地注意事物之間的差異可得到較特殊的類運(yùn)輸工具火車汽車飛機(jī)卡車轎車輪船車輛2/2/202417一般類和特殊類的定義定義1:如果類A具有類B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,那么A叫做B的特殊類,B叫做A的一般類。一般類與特殊類又稱父類與子類。定義2:如果類A的全部對(duì)象都是類B的對(duì)象,而且類B中存在不屬于類A的對(duì)象,那么A是B的特殊類,B是A的一般類?!梢宰C明,以上兩種定義是等價(jià)的2/2/202418繼承特殊類擁有其一般類的全部屬性與操作,稱作特殊類對(duì)一般類的繼承。繼承意味著自動(dòng)地?fù)碛校蛟浑[含地復(fù)制繼承簡(jiǎn)化了人們對(duì)事物的認(rèn)識(shí)和描述,非常有益于軟件復(fù)用,是OO技術(shù)提高軟件開發(fā)效率的重要原因之一。由繼承機(jī)制保證由一組具有繼承關(guān)系的類所組成的結(jié)構(gòu)稱作一般-特殊結(jié)構(gòu)。它是一個(gè)以類為結(jié)點(diǎn),以繼承關(guān)系為邊的連通的有向圖。繼承關(guān)系的語(yǔ)義:“isakindof〞軍人軍官士兵義務(wù)兵志愿兵例2/2/202419多繼承允許一個(gè)特殊類具有一個(gè)以上一般類的繼承方式稱作多繼承人員姓名············教職工職稱專業(yè)············研究生學(xué)號(hào)班級(jí)專業(yè)············在職研究生在職單位············例:2/2/202420聚合:是兩個(gè)類之間的一個(gè)二元關(guān)系,它表示一個(gè)類的對(duì)象實(shí)例以另一個(gè)類的對(duì)象實(shí)例作為其組成局部。聚合刻畫了現(xiàn)實(shí)事物之間的構(gòu)成關(guān)系或者擁有關(guān)系。部分對(duì)象部分對(duì)象整體對(duì)象嵌套對(duì)象整體對(duì)象部分對(duì)象部分對(duì)象整體對(duì)象對(duì)象指針或?qū)ο髽?biāo)識(shí)兩種聚合,兩種實(shí)現(xiàn)方式:緊密、固定的聚合關(guān)系——例如汽車與發(fā)動(dòng)機(jī)松散、靈活的聚合關(guān)系——例如公司與法律顧問(wèn)聚合關(guān)系的語(yǔ)義:“hasa〞或“isapartof〞緊密、固定的聚合方式又稱為組合2/2/202421整體-局部結(jié)構(gòu)聚合關(guān)系又稱整體-局部關(guān)系。由一組具有聚合關(guān)系的類所形成的結(jié)構(gòu)稱為整體-局部結(jié)構(gòu)。它是一個(gè)以類為結(jié)點(diǎn),以聚合關(guān)系為邊的連通有向圖。例公司0‥*0‥*法律顧問(wèn)汽車發(fā)動(dòng)機(jī)車身氣缸111111‥*2/2/202422關(guān)聯(lián)兩個(gè)或者多個(gè)類上的一個(gè)關(guān)系〔即這些類的對(duì)象實(shí)例集合的笛卡兒積的一個(gè)子集合〕,其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。城市**有航線城市之間有航線教師學(xué)生*1指導(dǎo)論文教師與被指導(dǎo)的學(xué)生例:2/2/202423用集合論的觀點(diǎn)和系統(tǒng)需求討論關(guān)聯(lián)概念關(guān)聯(lián)是兩個(gè)或者多個(gè)類上的一個(gè)關(guān)系,其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。例:設(shè)A和B是兩個(gè)類,它們的對(duì)象實(shí)例集合是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>}這個(gè)笛卡兒積集合中有n×m個(gè)元素,它們可以組合成2〔n×m〕個(gè)子集合。但是只有某個(gè)子集合中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息時(shí),才有必要把它定義為系統(tǒng)中的一個(gè)關(guān)聯(lián)。2/2/202424例如:在一個(gè)教學(xué)管理系統(tǒng)中有教師、學(xué)生、教務(wù)員課程等類。系統(tǒng)中需要說(shuō)明每一門課程由哪位教師承擔(dān)、有哪些學(xué)生選修,因此需要在教師和課程之間定義一個(gè)關(guān)聯(lián),在學(xué)生和課程之間也定義一個(gè)關(guān)聯(lián)。該系統(tǒng)的教務(wù)員要為學(xué)生做注冊(cè)、登記成績(jī)等工作,但是不需要區(qū)別是哪個(gè)教務(wù)員為哪個(gè)學(xué)生做的,因此就不需要在教務(wù)員和學(xué)生這兩個(gè)類之間定義關(guān)聯(lián)。教師課程學(xué)生教務(wù)員?call??call?1***教務(wù)員2/2/202425消息:消息是向?qū)ο蟀l(fā)出的效勞請(qǐng)求目前在大局部面向?qū)ο蟮木幊陶Z(yǔ)言中,消息其實(shí)就是函數(shù)〔或過(guò)程〕調(diào)用。但是,函數(shù)調(diào)用只是實(shí)現(xiàn)消息的方式之一,上述理解只適合于順序系統(tǒng)更一般的定義:消息是對(duì)象之間在一次交互中所傳送的信息2/2/202426糾正一種誤解——認(rèn)為在任何兩個(gè)類之間只有存在關(guān)聯(lián)才可能存在消息。實(shí)際上,關(guān)聯(lián)和消息是兩個(gè)截然不同的概念,二者是相互獨(dú)立的。教師課程學(xué)生教務(wù)員?call??call?1***教務(wù)員?call?2/2/202427多態(tài)多態(tài)是指同一個(gè)命名可具有不同的語(yǔ)義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。實(shí)現(xiàn)機(jī)制:重寫〔override〕——在特殊類中對(duì)繼承來(lái)的屬性或操作重新定義其實(shí)現(xiàn);動(dòng)態(tài)綁定〔dynamicbinding〕——在運(yùn)行時(shí)根據(jù)對(duì)象接收的消息動(dòng)態(tài)地確定要連接哪一段操作代碼;類屬〔generic〕——操作參量的類型可以是參數(shù)化的。2/2/202428其他持久對(duì)象在程序運(yùn)行結(jié)束后仍能繼續(xù)保存的對(duì)象超出了程序運(yùn)行時(shí)間,跨越了內(nèi)外存空間實(shí)現(xiàn)途徑:支持持久對(duì)象的OOPL,OO-DBMS主動(dòng)對(duì)象至少有一個(gè)操作不需要接收消息就能主動(dòng)執(zhí)行的對(duì)象。描述具有主動(dòng)行為的事物描述并發(fā)執(zhí)行的多個(gè)控制流2/2/202429面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真面向機(jī)器面向代數(shù)面向過(guò)程面向數(shù)據(jù)面向人面向文件面向信息面向應(yīng)用面向功能面向數(shù)據(jù)流······軟件科學(xué)的開展歷程中出現(xiàn)過(guò)許多“面向〞軟件開發(fā)從過(guò)分專業(yè)化的方法、規(guī)那么和技巧中回到了客觀世界,回到了人們的日常思維,是軟件理論的返樸歸真。面向?qū)ο?/2/202430內(nèi)容什么是面向?qū)ο髲恼J(rèn)識(shí)論看面向?qū)ο蠓椒ǖ男纬擅嫦驅(qū)ο蠓椒ǖ母靖拍钆c原那么OO方法的開展歷史與現(xiàn)狀2/2/202431OO方法的開展歷史與現(xiàn)狀雛形階段60年代挪威計(jì)算中心開發(fā)的Simula67——面向?qū)ο笳Z(yǔ)言的先驅(qū)和第一個(gè)里程碑〔首先引入了類的概念和繼承機(jī)制〕。70年代CLU、并發(fā)Pascal、Ada和Modula-2等語(yǔ)言對(duì)抽象數(shù)據(jù)類型理論的開展起到重要作用〔支持?jǐn)?shù)據(jù)與操作的封裝〕。猶他大學(xué)的博士生AlanKay設(shè)計(jì)了一個(gè)實(shí)驗(yàn)性的語(yǔ)言Flex。從Simula67中借鑒了許多概念,如類、對(duì)象、繼承等。2/2/2024321972年P(guān)aloAlno研究中心〔PARC〕發(fā)布了Smalltalk-72,其中正式使用了“面向?qū)ο蟥曔@個(gè)術(shù)語(yǔ)。Smalltalk的問(wèn)世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計(jì)方法的正式形成。但是這個(gè)時(shí)期的Smalltalk語(yǔ)言還不夠完善2/2/202433完善階段PARC先后發(fā)布了Smalltalk-72,76,78等版本,直至1981年推出該語(yǔ)言最完善的版本Smalltalk-80。Smalltalk-80的問(wèn)世被今認(rèn)為是面向?qū)ο笳Z(yǔ)言開展史上最重要的里程碑。迄今絕大局部面向?qū)ο蟮母靖拍罴捌渲С謾C(jī)制在Smalltalk-80中都已具備。它是第一個(gè)完善的、能夠?qū)嶋H應(yīng)用的面向?qū)ο笳Z(yǔ)言。但是,Smalltalk開始幾年的應(yīng)用不夠廣泛,原因是:一種新的軟件方法學(xué)被廣泛接受需要一定的時(shí)間。商品化軟件開發(fā)工作到87年才開始進(jìn)行。追求純OO的宗旨使許多軟件開發(fā)人員感到不便。2/2/202434繁榮階段自80年代中期到90年代,是面向?qū)ο笳Z(yǔ)言走向繁榮的階段。其主要表現(xiàn)是大批比較實(shí)用的OOPL的涌現(xiàn),例如C++、Objective-C、ObjectPascal、CLOS〔CommonLispObjectSystem〕、Eiffel、Actor等。OO編程語(yǔ)言分為純OO語(yǔ)言和混合型OO語(yǔ)言混合型語(yǔ)言是在傳統(tǒng)的過(guò)程式語(yǔ)言根底上增加OO語(yǔ)言成分,在實(shí)用性方面具有更大的優(yōu)勢(shì)。此時(shí)的純OO語(yǔ)言也比較重視實(shí)用性。2/2/202435開展到軟件生存周期前期階段計(jì)算機(jī)軟件領(lǐng)域的很多新的方法與技術(shù)都有這樣的開展經(jīng)歷,例如:結(jié)構(gòu)化方法,形式化方法,軟件復(fù)用。與其他方法相比,面向?qū)ο蟮姆椒ㄅc技術(shù)開展到軟件生命期的前期階段有著更為深刻的意義。當(dāng)前:幾乎覆蓋計(jì)算機(jī)軟件領(lǐng)域的所有分支面向?qū)ο蟮木幊陶Z(yǔ)言面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮脑O(shè)計(jì)面向?qū)ο蟮能浖y(cè)試面向?qū)ο蟮能浖S護(hù)面向?qū)ο蟮膱D形用戶界面面向?qū)ο蟮臄?shù)據(jù)庫(kù)面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)面向?qū)ο蟮闹悄艹绦蛟O(shè)計(jì)面向?qū)ο蟮能浖_發(fā)環(huán)境面向?qū)ο蟮捏w系結(jié)構(gòu)許多新領(lǐng)域以面向?qū)ο罄碚摓榛A(chǔ),或作為主要技術(shù)軟件體系結(jié)構(gòu)(softwarearchitecture)領(lǐng)域工程(domainengineering)設(shè)計(jì)模式(designpatterns)基于構(gòu)件的軟件工程(CBSE)智能代理(agent)面向服務(wù)的體系結(jié)構(gòu)(SOA)面向?qū)ο蠓椒◤木幊涕_展到設(shè)計(jì)、分析,進(jìn)而開展到整個(gè)軟件生存周期。2/2/202436最新開展編程語(yǔ)言——語(yǔ)言+類庫(kù)+可視化編程環(huán)境例如:VisualC++,VisualBasic,Delhpi分析與設(shè)計(jì)方法走向統(tǒng)一,形成統(tǒng)一建模語(yǔ)言UML結(jié)束各種方法的概念及表示法不一致的局面2/2/202437在軟件生存周期全過(guò)程運(yùn)用面向?qū)ο蠓椒↙.M.Northrop:“盡管面向?qū)ο笳Z(yǔ)言正取得令人振奮的開展,但編程并不是軟件開發(fā)問(wèn)題的主要根源。需求分析與設(shè)計(jì)問(wèn)題更為普遍并且更值得解決。因此面向?qū)ο箝_發(fā)技術(shù)的焦點(diǎn)不應(yīng)該只對(duì)準(zhǔn)編程階段,而應(yīng)更全面地對(duì)準(zhǔn)軟件工程的其他階段。面向?qū)ο蠓椒ㄕ嬲饬x深遠(yuǎn)的目標(biāo)是它適合于解決分析與設(shè)計(jì)期間的復(fù)雜性并實(shí)現(xiàn)分析與設(shè)計(jì)的復(fù)用。面向?qū)ο蟮拈_發(fā)不僅僅是編程,必須在整個(gè)軟件生存周期采用一種全新的方法,這一觀點(diǎn)已被人們所接受?!盾浖こ贪倏迫珪芳~約,1994面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮脑O(shè)計(jì)面向?qū)ο蟮木幊堂嫦驅(qū)ο蟮臏y(cè)試面向?qū)ο蟮能浖S護(hù)2/2/202438第2章不同的分析與設(shè)計(jì)方法2/2/202439本章內(nèi)容結(jié)構(gòu)幾種典型的建模方法功能分解法結(jié)構(gòu)化方法信息建模法面向?qū)ο蠓椒ǚ椒ǖ谋容^對(duì)問(wèn)題域的不同映射以不同的概念構(gòu)成系統(tǒng)模型什么是OOA什么是OODOO方法的主要優(yōu)點(diǎn)幾種典型的OO方法從軟件系統(tǒng)建模面臨的難題看面向?qū)ο蠓椒ǖ膬?yōu)勢(shì)Booch方法Coad-Yourdon方法Jacobson方法(OOSE)Rumbaugh方法(OMT)2/2/202440內(nèi)容功能分解法結(jié)構(gòu)化方法信息建模法面向?qū)ο蠓椒?/2/202441功能分解法〔functiondecomposition〕以系統(tǒng)需要提供的功能為中心來(lái)組織系統(tǒng)。首先定義各種功能,然后把功能分解為子功能對(duì)較大的子功能進(jìn)一步分解,直到可給出明確的定義。根據(jù)功能/子功能的需要設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)。定義功能/子功能之間的接口。沒有明確地區(qū)分分析與設(shè)計(jì)功能功能功能系統(tǒng)子功能子功能子功能子功能分解分解分解……………………建模過(guò)程:層層進(jìn)行功能分解2/2/202442功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊得到的系統(tǒng)模型:由模塊及其接口構(gòu)成優(yōu)點(diǎn)與缺點(diǎn):直接地反映用戶的需求,所以工作很容易開始。不能直接地映射問(wèn)題域,很難檢驗(yàn)結(jié)果的正確性。對(duì)需求變化的適應(yīng)能力很差。局部的錯(cuò)誤和修改很容易產(chǎn)生全局性的影響。2/2/202443內(nèi)容功能分解法結(jié)構(gòu)化方法信息建模法面向?qū)ο蠓椒?/2/202444結(jié)構(gòu)化方法SA+SD結(jié)構(gòu)化分析〔structuredanalysis,SA〕結(jié)構(gòu)化分析又稱數(shù)據(jù)流法,其根本策略是跟蹤數(shù)據(jù)流,即研究問(wèn)題域中數(shù)據(jù)如何流動(dòng),以及在各個(gè)環(huán)節(jié)上進(jìn)行何種處理,從而發(fā)現(xiàn)數(shù)據(jù)流和加工。得到的分析模型是數(shù)據(jù)流圖〔DFD〕,主要模型元素是數(shù)據(jù)流、加工、文件及端點(diǎn),外加處理說(shuō)明和數(shù)據(jù)字典。2/2/202445結(jié)構(gòu)化設(shè)計(jì)〔structureddesign,SD〕結(jié)構(gòu)化設(shè)計(jì)與功能分解法根本相同,基于模塊的概念建立設(shè)計(jì)模型,分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì):確定系統(tǒng)中包含哪些模塊以及模塊之間的調(diào)用關(guān)系,得到模塊結(jié)構(gòu)圖〔MSD〕。詳細(xì)設(shè)計(jì):描述每個(gè)模塊內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和操作流程。2/2/202446數(shù)據(jù)流加工文件起點(diǎn)處理說(shuō)明————————————————————————數(shù)據(jù)詞典————————————————————————優(yōu)點(diǎn):有嚴(yán)格的法那么,強(qiáng)調(diào)研究問(wèn)題域。缺點(diǎn):仍然是間接映射問(wèn)題域;與結(jié)構(gòu)化設(shè)計(jì)的概念不一致,從分析到設(shè)計(jì)的過(guò)渡比較困難;數(shù)據(jù)流和加工的數(shù)量太多,引起分析文檔的膨脹。終點(diǎn)2/2/202447內(nèi)容功能分解法結(jié)構(gòu)化方法信息建模法面向?qū)ο蠓椒?/2/202448信息建模法〔informationmodeling〕由實(shí)體-關(guān)系法〔E-R方法〕開展而來(lái)。核心概念是實(shí)體和關(guān)系。實(shí)體描述問(wèn)題域中的事物,關(guān)系描述事物之間在數(shù)據(jù)方面的聯(lián)系,都可以帶有屬性。開展之后的方法也把實(shí)體稱作對(duì)象,并使用了類型和子類型的概念,作為實(shí)體〔對(duì)象〕的抽象描述。實(shí)體屬性屬性屬性屬性關(guān)系實(shí)體mnE-R圖信息模型mn對(duì)象屬性關(guān)系屬性對(duì)象屬性2/2/202449有人也稱之為面向?qū)ο蠓椒?,但有以下差異:?qiáng)調(diào)的重點(diǎn)是信息建模和狀態(tài)建模,而不是對(duì)象建模。沒有把對(duì)實(shí)體屬性所進(jìn)行的操作封裝到實(shí)體對(duì)象中。只有屬性的繼承,不支持操作的繼承。沒有采用消息通訊。2/2/202450內(nèi)容功能分解法結(jié)構(gòu)化方法信息建模法面向?qū)ο蠓椒?/2/202451面向?qū)ο蠓椒∣OA+OOD運(yùn)用對(duì)象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來(lái)構(gòu)造系統(tǒng)。把問(wèn)題域中的事物抽象為對(duì)象,作為系統(tǒng)的根本構(gòu)成單位其屬性和操作刻畫了事物的靜態(tài)特征和動(dòng)態(tài)特征——完整地刻畫了問(wèn)題域中事物。用類作為對(duì)象的抽象描述,建立它們之間的繼承、聚合、關(guān)聯(lián)、消息等關(guān)系——如實(shí)地表達(dá)了問(wèn)題域中事物之間的各種關(guān)系。封裝、繼承、聚合、關(guān)聯(lián)、消息通訊等原那么符合人類的日常思維——使系統(tǒng)的復(fù)雜性得到控制。因此,得到的系統(tǒng)模型可以直接映射問(wèn)題域。2/2/202452不同的建模方法表達(dá)于從不同的概念出發(fā)來(lái)認(rèn)識(shí)問(wèn)題域用不同的概念進(jìn)行系統(tǒng)構(gòu)造系統(tǒng)對(duì)現(xiàn)實(shí)世界的不同映射信息建模法面向?qū)ο蠓椒üδ?子功能功能接口功能分解法數(shù)據(jù)流加工結(jié)構(gòu)化方法間接映射間接映射半直接映射直接映射2/2/202453不同的方法對(duì)同一應(yīng)用實(shí)例〔安裝業(yè)務(wù)系統(tǒng)〕的不同效果結(jié)構(gòu)化分析——數(shù)據(jù)流和加工問(wèn)題:不是直接映射問(wèn)題域,與問(wèn)題域事物相關(guān)的數(shù)據(jù)和操作不是圍繞這些事物來(lái)組織的,而是分散在數(shù)據(jù)流和加工中;經(jīng)常發(fā)生信息膨脹——模型中的多個(gè)數(shù)據(jù)流,實(shí)現(xiàn)中其實(shí)只是一項(xiàng)數(shù)據(jù);分析模型難以與設(shè)計(jì)模型及源程序?qū)?yīng)。審批登記安裝開通用戶登記表用戶登記表用戶登記表用戶登記表文件用戶信息2/2/202454面向?qū)ο蠓椒ā獙?duì)象及其關(guān)系用戶登記表用戶名登記人審批人施工隊(duì)號(hào)碼登記審批安裝開通用戶營(yíng)業(yè)員主管人施工隊(duì)機(jī)房1*1*1*?call??call??call??call?個(gè)人用戶團(tuán)體用戶帳單帳單項(xiàng)1*1*?call?直接映射了問(wèn)題域中的實(shí)際事物;能夠與程序形成良好的對(duì)應(yīng)。2/2/202455什么是OOA顧名思義,面向?qū)ο蟮姆治觥睴OA〕,就是運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)分析。首先,OOA是分析,是軟件生存周期的一個(gè)階段,具有一般分析方法共同具有的內(nèi)容、目標(biāo)及策略;但是,它強(qiáng)調(diào)運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行分析,用面向?qū)ο蟮母拍詈捅硎痉ū磉_(dá)分析結(jié)果。2/2/202456根本任務(wù):運(yùn)用面向?qū)ο蟮母拍顚?duì)問(wèn)題域進(jìn)行分析和理解,將問(wèn)題域中與系統(tǒng)責(zé)任有關(guān)的事物抽象為系統(tǒng)中的類和對(duì)象,定義這些類和對(duì)象的屬性與操作,以及它們之間所形成的各種關(guān)系。最終目標(biāo):建立一個(gè)滿足用戶需求、直接映射問(wèn)題域的OOA模型及其規(guī)約。問(wèn)題:OOA是需求分析還是系統(tǒng)分析?2/2/202457什么是OOD不同時(shí)期有不同內(nèi)容及特點(diǎn)早期〔80年代末期之前〕OOD的特點(diǎn):不是基于OOA的大多基于結(jié)構(gòu)化分析結(jié)果〔數(shù)據(jù)流圖〕是OO編程方法的延伸多數(shù)方法與編程語(yǔ)言有關(guān),特別受Ada影響很大不是純OO的對(duì)某些OO概念〔如繼承〕缺少支持,攙雜一些非OO概念〔如數(shù)據(jù)流、包、模塊等〕不是只針對(duì)軟件生存周期的設(shè)計(jì)階段OOD中的“D〞——指的是Design或Development多少涉及分析問(wèn)題〔如識(shí)別問(wèn)題域的對(duì)象〕,但很不徹底——早期的OOD可看作現(xiàn)今OOA&OOD方法的雛形2/2/202458現(xiàn)今〔90年代以后〕OOD的特點(diǎn):以面向?qū)ο蟮姆治鰹楦祝话悴灰蕾嚱Y(jié)構(gòu)化分析。與相應(yīng)的OOA方法共同構(gòu)成一種OOA&OOD方法體系。OOA和OOD采用一致的概念與原那么,但屬于軟件生存周期的不同階段,有不同的目標(biāo)及策略。較全面地表達(dá)面向?qū)ο蠓椒ǖ母拍钆c原那么。大多數(shù)方法獨(dú)立于編程語(yǔ)言,通過(guò)面向?qū)ο蟮姆治雠c設(shè)計(jì)所得到的系統(tǒng)模型可以由不同的編程語(yǔ)言實(shí)現(xiàn)。2/2/202459定義:面向?qū)ο蟮脑O(shè)計(jì)〔OOD〕就在是OOA模型根底上運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)設(shè)計(jì),目標(biāo)是產(chǎn)生一個(gè)符合具體實(shí)現(xiàn)條件的OOD模型。2/2/202460OO方法的主要優(yōu)點(diǎn)軟件建模面臨的挑戰(zhàn)問(wèn)題域和系統(tǒng)責(zé)任復(fù)雜性日益增長(zhǎng)問(wèn)題域〔problemdomain〕:被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域,即在現(xiàn)實(shí)世界中由這個(gè)系統(tǒng)進(jìn)行處理的業(yè)務(wù)范圍。系統(tǒng)責(zé)任〔systemresponsibilities〕:所開發(fā)的系統(tǒng)應(yīng)該具備的職能。隨著硬件性能的提高和價(jià)格的下降,軟件系統(tǒng)所面臨的問(wèn)題域和系統(tǒng)責(zé)任越來(lái)越復(fù)雜,因此系統(tǒng)也越來(lái)越龐大。交流問(wèn)題軟件系統(tǒng)的開發(fā)需要各類人員之間頻繁交流。領(lǐng)域的多樣性使軟件工程中的交流問(wèn)題比與其他工程更為突出。有效的交流需要一種彼此都能理解的共同語(yǔ)言,否那么將使彼此的思想難以溝通,很容易隱藏下許多錯(cuò)誤。2/2/202461需求的不斷變化用戶因素,競(jìng)爭(zhēng)因素,經(jīng)費(fèi)因素……開發(fā)者必須接受和適應(yīng)需求變化軟件復(fù)用的要求復(fù)用級(jí)別提高——分析結(jié)果復(fù)用要求分析模型的根本成分可以在多個(gè)系統(tǒng)中復(fù)用要求一個(gè)分析模型可以在多種條件下設(shè)計(jì)和實(shí)現(xiàn)易變局部和穩(wěn)定局部:功能:最易變外部接口:很易變屬性:較易變對(duì)象:較穩(wěn)定需求變化系統(tǒng)局部修改受影響局部修改產(chǎn)生新錯(cuò)誤延長(zhǎng)開發(fā)時(shí)間2/2/202462面向?qū)ο蠓椒ǖ膬?yōu)勢(shì)對(duì)問(wèn)題域和系統(tǒng)責(zé)任的復(fù)雜性具有較強(qiáng)的處理能力從問(wèn)題域中的實(shí)際事物出發(fā)來(lái)構(gòu)造系統(tǒng)模型,使系統(tǒng)模型能直接地映射問(wèn)題域;繼承、封裝、聚合等概念使系統(tǒng)的復(fù)雜性得到有效的控制。提供了便于各類相關(guān)人員交流共同語(yǔ)言使用與問(wèn)題域一致的概念及術(shù)語(yǔ),表達(dá)人類的日常思維方式,為改進(jìn)各類人員之間的交流提供了最根本的條件。對(duì)需求的變化具有較強(qiáng)的適應(yīng)性按封裝原那么把系統(tǒng)中最容易變化的因素隔離起來(lái),系統(tǒng)的各個(gè)單元成分之間接口很少,把需求變化所引起的影響局部化。為實(shí)現(xiàn)分析與設(shè)計(jì)級(jí)別的軟件復(fù)用提供了有力支持OO方法的封裝、繼承、聚合等原那么,對(duì)象的完整性、獨(dú)立性以及與問(wèn)題域的良好對(duì)應(yīng),使之非常有利于軟件復(fù)用。貫穿軟件生存周期全過(guò)程的一致性從OOA開始使用與問(wèn)題域一致的概念、詞匯、原那么及表示法,這種一致性保持到設(shè)計(jì)、編程、測(cè)試、維護(hù)等各個(gè)階段,對(duì)于整個(gè)軟件生存周期的開發(fā)、維護(hù)及管理活動(dòng)都具有重要的意義。2/2/202463幾種典型的OO方法Booch方法Coad-Yourdon方法Firesmith方法Jacobson方法(OOSE)Martin-Odell方法Rumbaugh方法(OMT)Seidewitz-Stark方法Shlaer-Mellor方法Wirfs-Brock方法……方法的異同表達(dá)于:概念表示法系統(tǒng)模型開發(fā)過(guò)程可用性技術(shù)支持2/2/202464Booch方法必要時(shí)使用用于分析和設(shè)計(jì)6種模型圖根本圖通常不可缺少類圖對(duì)象圖模塊圖進(jìn)程圖只用于設(shè)計(jì)補(bǔ)充圖狀態(tài)轉(zhuǎn)移圖交互圖模型圖2/2/202465Booch方法〔續(xù)〕開發(fā)期望行為模型(分析〕建立體系結(jié)構(gòu)(設(shè)計(jì))逐漸形成實(shí)現(xiàn)(演化)建立核心需求(概念化)(a)宏過(guò)程識(shí)別類和對(duì)象識(shí)別類和對(duì)象的語(yǔ)義識(shí)別類和對(duì)象的關(guān)系說(shuō)明類和對(duì)象的接口和實(shí)現(xiàn)(b)微過(guò)程管理交付后的演化(維護(hù)〕特點(diǎn):思想活潑,開拓與創(chuàng)新可操作性不夠強(qiáng)類圖與對(duì)象圖并存過(guò)程2/2/202466Coad/Yourdon方法主題層類及對(duì)象層結(jié)構(gòu)層屬性層效勞層OOA模型的5個(gè)層次主題層類及對(duì)象層結(jié)構(gòu)層屬性層效勞層人機(jī)交互局部〔HIC〕問(wèn)題域局部〔PDC〕任務(wù)管理局部〔TMC〕數(shù)據(jù)管理局部〔DMC〕OOD模型的5個(gè)層次和4個(gè)局部特點(diǎn):概念簡(jiǎn)練,過(guò)程清晰強(qiáng)調(diào)概念的一致性過(guò)程指導(dǎo)不夠具體2/2/202467Jacobson方法實(shí)體對(duì)象界面對(duì)象控制對(duì)象三種對(duì)象行為表示信息三維的分析模型四維的設(shè)計(jì)模型實(shí)現(xiàn)環(huán)境需求說(shuō)明需求分析健壯分析需求模型分析模型需求模型設(shè)計(jì)實(shí)現(xiàn)設(shè)計(jì)模型實(shí)現(xiàn)模型分析模型需求模型單元測(cè)試組裝測(cè)試實(shí)現(xiàn)模型設(shè)計(jì)模型系統(tǒng)測(cè)試測(cè)試模型分析過(guò)程構(gòu)造過(guò)程測(cè)試過(guò)程特點(diǎn):通過(guò)用況描述用戶需求用交互圖描述對(duì)象之間的交互用況驅(qū)動(dòng)的觀點(diǎn)言之有過(guò)2/2/202468Rumbaugh方法三個(gè)模型功能模型對(duì)象模型模型動(dòng)態(tài)過(guò)程:分析〔面向?qū)ο蟆诚到y(tǒng)設(shè)計(jì)〔傳統(tǒng)方法〕對(duì)象設(shè)計(jì)〔面向?qū)ο蟆硨?shí)現(xiàn)特點(diǎn):概念嚴(yán)謹(jǐn),闡述清楚過(guò)程具體,可操作性強(qiáng)包含了許多非OO的內(nèi)容提出假設(shè)干擴(kuò)充概念,偏于復(fù)雜2/2/202469第3章統(tǒng)一建模語(yǔ)言UML簡(jiǎn)介2/2/202470內(nèi)容UML的背景與開展歷史UML1概況UML2概況主要組成局部元模型體系結(jié)構(gòu)具體元類和抽象元類各種圖和擴(kuò)展機(jī)制UML2的四個(gè)標(biāo)準(zhǔn)圖的增加和主要變化2/2/202471誕生背景面向?qū)ο蠓椒ǚN類繁多1989年約10種,1994年到達(dá)50種以上概念、表示法、過(guò)程策略及文檔組織等方面的差異使用戶在選擇建模方法和工具時(shí)無(wú)所適從不利于技術(shù)交流迫切需要OO概念及表示法走向統(tǒng)一和標(biāo)準(zhǔn)化統(tǒng)一建模語(yǔ)言UML應(yīng)運(yùn)而生2/2/202472開展歷史第一階段:OO方法學(xué)家的聯(lián)合行動(dòng)1995.10:G.Booch與J.Rumbaugh聯(lián)合推出UnifiedMethod0.81996.6:I.Jacobson參加推出UML0.9〔UnifiedModelingLanguage〕第二階段:公司的聯(lián)合行動(dòng)1996:成立了UML伙伴組織,12家公司參加1997.1:推出UML1.0,另外5家公司加盟1997.9:形成UML1.1,提交OMG作為建模語(yǔ)言標(biāo)準(zhǔn)提案1997.11:UML1.1被OMG正式采納不再稱“方法〞而改稱“建模語(yǔ)言〞2/2/202473第三階段:OMG主持下的修訂1997~2002:OMG成立UML修訂任務(wù)組主持UML的修訂先后產(chǎn)生UML1.2、UML1.3、UML1.4、UML1.5等版本第四階段:UML的重大修訂——UML21999:開始醞釀,旨在產(chǎn)生比UML1有顯著改進(jìn)的新版本2000~2001:由OMG陸續(xù)發(fā)布了4個(gè)提案需求〔RFP〕征集提案,擇優(yōu)采納2002年之后先后形成4個(gè)UML2.0標(biāo)準(zhǔn)在OMG的組織下繼續(xù)修訂和改進(jìn),目前最新的版本是UML1.3和UML1.4是兩個(gè)最重要的修訂版本2/2/202474UML是什么不是什么是一種建模語(yǔ)言,不是一種建模方法“Rational統(tǒng)一過(guò)程〞不是UML的一局部用于建立系統(tǒng)的分析模型和設(shè)計(jì)模型,而不是用于編程是一種已被OMG采納的建模語(yǔ)言標(biāo)準(zhǔn)〔specification〕正式場(chǎng)合一般不稱作“標(biāo)準(zhǔn)〞〔standard〕局部地采用了形式化語(yǔ)言的定義方式,但并不嚴(yán)格不是一種形式化語(yǔ)言,不能編譯執(zhí)行或解釋執(zhí)行“統(tǒng)一建模語(yǔ)言〔UML〕是一種用來(lái)對(duì)軟件密集型系統(tǒng)制品進(jìn)行可視化、詳述、構(gòu)造和建檔的圖形語(yǔ)言,也可用于業(yè)務(wù)建模以及其它非軟件系統(tǒng)。〞2/2/202475內(nèi)容UML的背景與開展歷史UML1概況UML2概況主要組成局部元模型體系結(jié)構(gòu)具體元類和抽象元類各種圖和擴(kuò)展機(jī)制UML2的四個(gè)標(biāo)準(zhǔn)圖的增加和主要變化2/2/202476UML1標(biāo)準(zhǔn)的主要構(gòu)成局部UML概要〔UMLSummary〕對(duì)UML做概括介紹,包括其構(gòu)成、動(dòng)機(jī)、目標(biāo)、范圍、特點(diǎn)、歷史、現(xiàn)狀以及對(duì)未來(lái)演化的建議UML語(yǔ)義〔UMLSemantics〕定義UML的語(yǔ)法和語(yǔ)義,是定義UML語(yǔ)言的根本文件UML表示法指南〔UMLNotationGuide〕定義UML的各種模型圖給出各種圖中建模元素的可視化表示法2/2/202477UML外廓范例〔UMLExampleProfiles〕用于軟件開發(fā)過(guò)程的UML外廓用于業(yè)務(wù)建模的UML外廓UML模型交換〔UMLModelInterchange〕規(guī)定了建模工具在實(shí)現(xiàn)各種UML模型時(shí)需要共同遵守的語(yǔ)言約定,使來(lái)自不同廠商的建模工具能夠彼此交換和處理各自開發(fā)的系統(tǒng)模型對(duì)象約束語(yǔ)言O(shè)CL〔ObjectConstraintLanguage〕定義了一種對(duì)象約束語(yǔ)言,用來(lái)描述模型中關(guān)于對(duì)象的附加約束,是一種形式化的語(yǔ)言2/2/202478定義建模語(yǔ)言的語(yǔ)言元-元模型層應(yīng)用領(lǐng)域中的事物用戶對(duì)象層應(yīng)用系統(tǒng)的抽象描述系統(tǒng)模型層抽象描述模型的語(yǔ)言元模型層抽象實(shí)例化抽象實(shí)例化實(shí)例化元-元模型〔meta-metamodel〕:元模型的根底體系結(jié)構(gòu),定義一種說(shuō)明元模型的語(yǔ)言。例如:MOF元模型〔metamodel〕:元-元模型的一個(gè)實(shí)例,定義一種說(shuō)明模型的語(yǔ)言例如:UML模型〔model〕:元模型的一個(gè)實(shí)例,定義一種語(yǔ)言來(lái)描述信息領(lǐng)域。例如:教學(xué)管理系統(tǒng)——教室類、學(xué)生類、課程類用戶對(duì)象〔userobject〕:模型的一個(gè)實(shí)例,定義一個(gè)特定的信息領(lǐng)域。例如:一個(gè)學(xué)校——某老師,某學(xué)生,某課程OMG的四層元模型體系結(jié)構(gòu)2/2/202479抽象元類和具體元類類類型接口構(gòu)件結(jié)點(diǎn)關(guān)聯(lián)泛化依賴類目關(guān)系可泛化元素模型元素元素具體元類抽象元類〔classifier〕2/2/202480UML1的9種模型圖靜態(tài)結(jié)構(gòu)圖〔StaticStructureDiagram〕類圖〔ClassDiagram〕對(duì)象圖〔ObjectDiagram〕用況圖〔UseCaseDiagram〕交互圖〔InteractionDiagram〕順序圖〔SequenceDiagram〕協(xié)作圖〔CollaborationDiagram〕狀態(tài)圖〔StatechartDiagrams〕活動(dòng)圖〔ActivityDiagrams〕實(shí)現(xiàn)圖〔ImplementationDiagrams〕構(gòu)件圖〔ComponentDiagram〕部署圖〔DeploymentDiagram〕九種圖支持用戶從不同的視角進(jìn)行系統(tǒng)建模2/2/202481元模型中的實(shí)例級(jí)概念引起

體系結(jié)構(gòu)層次的混亂關(guān)聯(lián)類對(duì)象鏈教師:史密斯課程:計(jì)算概論教師:瑪麗課程:圖論*1課程教師2/2/202482約束〔constraint〕用于說(shuō)明某些必須保持為真的命題。注釋〔comment〕對(duì)模型元素的細(xì)節(jié)所進(jìn)行的解釋。標(biāo)記值〔TaggedValue〕表示模型元素的附加的特征。衍型/構(gòu)造型〔stereotype〕附加到其他模型元素之上,從而將原有的建模元素定制成一種語(yǔ)義較為特殊的新變種。衍型的表示法和例子?active?類名類名?界面?類名+關(guān)鍵詞或圖標(biāo)=擴(kuò)展機(jī)制:附加到其他模型元素之上以,將原有的建模元素特化成一種語(yǔ)義較特殊的新變種,或者表示出它們的某些細(xì)節(jié)。2/2/202483內(nèi)容UML的背景與開展歷史UML1概況UML2概況主要組成局部元模型體系結(jié)構(gòu)具體元類和抽象元類各種圖和擴(kuò)展機(jī)制UML2的四個(gè)標(biāo)準(zhǔn)圖的增加和主要變化2/2/202484UML2的四個(gè)標(biāo)準(zhǔn)UML基礎(chǔ)結(jié)構(gòu)Infrastructure定義一個(gè)可復(fù)用的元語(yǔ)言核心,用來(lái)定義各種元模型,包括UML、MOF和CWM等元模型UML上層結(jié)構(gòu)Superstructure提供可直接用來(lái)構(gòu)造用戶系統(tǒng)的各種模型元素,以及從不同的視角對(duì)系統(tǒng)進(jìn)行建模的各種模型圖UML圖交換DiagramInterchange給出在不同的建模工具之間實(shí)現(xiàn)模型交換的規(guī)范UML對(duì)象約束語(yǔ)言UMLOCL一個(gè)形式化的語(yǔ)言,描述模型約束信息2/2/202485UML2的13種模型圖圖結(jié)構(gòu)圖行為圖交互圖類圖構(gòu)件圖對(duì)象圖活動(dòng)圖用況圖狀態(tài)機(jī)圖部署圖順序圖通訊圖組合結(jié)構(gòu)圖包圖交互概覽圖定時(shí)圖支持用戶從不同的視角進(jìn)行系統(tǒng)建模2/2/202486UML與UML2的各種圖的對(duì)照UML1的圖UML2的圖詳見結(jié)構(gòu)圖類圖classdiagram類圖classdiagram第6章~第8章對(duì)象圖objectdiagram對(duì)象圖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)機(jī)圖statemachinediagram第9章9.5節(jié)活動(dòng)圖activitydiagrams活動(dòng)圖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é)定時(shí)圖timingdiagram第9章9.7.5節(jié)2/2/202487學(xué)習(xí)建議重點(diǎn)掌握UML直接提供給應(yīng)用模型開發(fā)者使用的建模元素,即“具體元類〞;熟練地掌握面向?qū)ο蠓椒ㄗ罡镜母拍?。?3種圖中,重點(diǎn)掌握類圖、用況圖、順序圖、活動(dòng)圖狀態(tài)機(jī)圖、構(gòu)件圖。著眼于實(shí)際應(yīng)用,從UML的復(fù)雜性中解放出來(lái)。切記:UML只是一種建模語(yǔ)言,不是建模方法。它不包括過(guò)程,而且是獨(dú)立于過(guò)程的。根據(jù)本單位的實(shí)際情況選擇適當(dāng)?shù)倪^(guò)程。動(dòng)手實(shí)踐,使用工具;選擇適宜的工程開始實(shí)際應(yīng)用。2/2/202488第4章OOA&OOD方法概貌2/2/202489內(nèi)容引言主要概念模型及其規(guī)約建模過(guò)程OOA與OOD的關(guān)系從MDA看OOA與OOD的關(guān)系2/2/202490引言充分運(yùn)用面向?qū)ο蠓椒ǖ母靖拍?,限制擴(kuò)充概念以往某些OO方法提出了許多擴(kuò)充概念,問(wèn)題是:使方法復(fù)雜化——增加學(xué)習(xí)難度和工程開銷缺乏編程語(yǔ)言支持——造成模型與源程序不一致加強(qiáng)過(guò)程指導(dǎo)給出運(yùn)用最根本的OO概念自然而有效地解決建模問(wèn)題的策略,包括那些在其他方法中采用擴(kuò)充概念解決的問(wèn)題強(qiáng)調(diào)在類的抽象層次上建立系統(tǒng)模型所有對(duì)象的屬性和操作以及對(duì)象之間的關(guān)系,都通過(guò)它們的類來(lái)描述,而不是針對(duì)個(gè)別對(duì)象實(shí)例進(jìn)行描述……2/2/202491內(nèi)容引言主要概念模型及其規(guī)約建模過(guò)程OOA與OOD的關(guān)系從MDA看OOA與OOD的關(guān)系2/2/202492主要概念面向?qū)ο蟮母拍畎ㄒ韵聝煞N情況用來(lái)構(gòu)成系統(tǒng)模型的某種根本成分,稱為建模元素在建模中需要遵守的某種原那么,不代表任何模型成分主要建模元素對(duì)象、類〔所有的對(duì)象都通過(guò)類來(lái)表示〕屬性、操作〔類屬性和實(shí)例屬性,被動(dòng)操作和主動(dòng)操作〕一般-特殊關(guān)系,一般-特殊結(jié)構(gòu)整體-局部關(guān)系,整體-局部結(jié)構(gòu)關(guān)聯(lián)〔二元關(guān)聯(lián)、多元關(guān)聯(lián)〕消息〔控制流內(nèi)部的消息,控制流之間的消息〕2/2/202493主要原那么抽象什么叫抽象?〔回憶定義〕OO方法廣泛地運(yùn)用抽象原那么,例如:系統(tǒng)中的對(duì)象是對(duì)現(xiàn)實(shí)世界中事物的抽象類是對(duì)象的抽象一般類是對(duì)特殊類的進(jìn)一步抽象屬性是事物靜態(tài)特征的抽象操作是事物動(dòng)態(tài)特征的抽象過(guò)程抽象任何一個(gè)完成確定功能的操作序列,其使用者都可把它看作一個(gè)單一的實(shí)體,盡管實(shí)際上它可能是由一系列更低級(jí)的操作完成的。數(shù)據(jù)抽象根據(jù)施加于數(shù)據(jù)之上的操作來(lái)定義數(shù)據(jù)類型,并限定數(shù)據(jù)的值只能由這些操作來(lái)修改和觀察。2/2/202494分類分類就是把具有相同屬性和操作的對(duì)象劃分為一類,用類作為這些對(duì)象的抽象描述不同程度的抽象可得到不同層次的類,形成一般-特殊結(jié)構(gòu)〔又稱分類結(jié)構(gòu)〕強(qiáng)調(diào):在類的抽象層次上建模封裝繼承聚合關(guān)聯(lián)消息通信即要求對(duì)象之間只能通過(guò)消息進(jìn)行通訊,而不允許在對(duì)象之外直接地存取對(duì)象內(nèi)部的屬性。2/2/202495粒度控制人們?cè)谘芯繂?wèn)題時(shí)既需要微觀的思考,也需要宏觀的思考。因此需要控制自己的視野:考慮全局時(shí),注重其大的組成局部,暫時(shí)不詳察每一局部的具體的細(xì)節(jié);考慮某局部的細(xì)節(jié)時(shí)那么暫時(shí)撇開其余的局部。這就是粒度控制原那么引入包〔package〕的概念,把模型中的類按一定的規(guī)那么進(jìn)行組合,形成一些包,使模型具有大小不同的粒度層次,從而有利于人們對(duì)復(fù)雜性的控制2/2/202496行為分析以對(duì)象為單位描述系統(tǒng)中的各種行為任何行為都?xì)w屬于某個(gè)對(duì)象,用對(duì)象的操作表示對(duì)象的操作只作用于對(duì)象自身的屬性通過(guò)消息描述對(duì)象之間的行為依賴關(guān)系如果一個(gè)對(duì)象操作的執(zhí)行需要另一個(gè)對(duì)象為它提供效勞,那么在模型中表現(xiàn)為前者向后者發(fā)送消息認(rèn)識(shí)行為的起因,區(qū)分主動(dòng)行為和被動(dòng)行為用主動(dòng)對(duì)象的主動(dòng)操作描述主動(dòng)行為用對(duì)象的被動(dòng)操作描述被動(dòng)行為認(rèn)識(shí)系統(tǒng)的并發(fā)行為在分析階段根據(jù),根據(jù)系統(tǒng)的需求和事物的主動(dòng)性來(lái)認(rèn)識(shí)系統(tǒng)的并發(fā)行為。在設(shè)計(jì)階段,根據(jù)具體的實(shí)現(xiàn)條件確定系統(tǒng)中需要設(shè)計(jì)哪些控制流2/2/202497內(nèi)容引言主要概念模型及其規(guī)約建模過(guò)程OOA與OOD的關(guān)系從MDA看OOA與OOD的關(guān)系2/2/202498模型及其規(guī)約在分析階段和設(shè)計(jì)階段建立的系統(tǒng)模型分別稱為OOA模型和OOD模型正規(guī)理解:一個(gè)系統(tǒng)模型,應(yīng)包括建模過(guò)程中產(chǎn)生的圖形、文字等各種形式的文檔。因?yàn)?,所謂“模型〞是指某一級(jí)別上的系統(tǒng)抽象描述,構(gòu)成這種描述的任何資料都是模型的一局部。習(xí)慣說(shuō)法:目前大局部OOA/OOD著作談到“模型〞,一般是指OOA或OOD過(guò)程中產(chǎn)生的圖形文檔。2/2/202499本課程采用習(xí)慣說(shuō)法——將模型和模型規(guī)約分別討論OOA和OOD模型包括需求模型、根本模型和輔助模型,通過(guò)模型規(guī)約做詳細(xì)說(shuō)明根本模型——類圖面向?qū)ο蟮慕V凶钪匾⒆罡镜哪P蛨D集中而完整地表達(dá)了面向?qū)ο蟮母拍顬槊嫦驅(qū)ο蟮木幊烫峁┝酥苯?、可靠的依?jù)可以從三個(gè)層次來(lái)看:2/2/2024100需求模型——用況圖每個(gè)用況是一項(xiàng)系統(tǒng)功能使用情況的說(shuō)明,把每一類參與者對(duì)每一項(xiàng)系統(tǒng)功能的使用情況確切地描述出來(lái),便全面地定義了系統(tǒng)的功能需求對(duì)象層特征層關(guān)系層輔助模型——其他各種圖對(duì)類圖起到輔助作用,提供更詳細(xì)的建模信息,或者從不同的視角來(lái)描述系統(tǒng)。例如包圖、順序圖、活動(dòng)圖等模型規(guī)約對(duì)上述各種模型圖及其模型元素的詳細(xì)而確切的定義和解釋2/2/2024101OOA模型框架根本模型:類圖模型規(guī)約需求模型:用況圖輔助模型:包圖順序圖活動(dòng)圖……對(duì)象層特征層關(guān)系層2/2/2024102OOD模型框架——從兩個(gè)側(cè)面來(lái)描述人機(jī)交互部分?jǐn)?shù)據(jù)接口部分控制驅(qū)動(dòng)部分問(wèn)題域部分從一個(gè)側(cè)面看:OOD模型包括幾個(gè)主要部分?一個(gè)核心加三個(gè)外圍需求模型輔助模型類圖模型規(guī)約從另一側(cè)面看:OOD模型每個(gè)部分如何用OO概念表達(dá)?采用與OOA相同的概念及模型組織方式2/2/2024103內(nèi)容引言主要概念模型及其規(guī)約建模過(guò)程OOA與OOD的關(guān)系從MDA

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論