版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、2022-2-151北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計面向?qū)ο蟮姆治雠c設(shè)計課件基礎(chǔ)篇2022-2-152北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計從程序設(shè)計方法的角度看,面向?qū)ο笫且环N新的程序設(shè)計從程序設(shè)計方法的角度看,面向?qū)ο笫且环N新的程序設(shè)計范型范型(paradigm)(paradigm),其基本思想是使用對象、類、繼承、封,其基本思想是使用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等基本概念來進(jìn)行程序設(shè)裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等基本概念來進(jìn)行程序設(shè)計。計。自自2020世紀(jì)世紀(jì)8080年代以來,面向?qū)ο蠓椒ㄒ焉钊氲接嬎銠C軟件年代以來,面向?qū)ο蠓椒ㄒ焉钊氲接嬎銠C軟件領(lǐng)
2、域的幾乎所有分支。它不僅是一些具體的軟件開發(fā)技術(shù)領(lǐng)域的幾乎所有分支。它不僅是一些具體的軟件開發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實世界與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實世界的關(guān)系,用什么觀點來研究問題并進(jìn)行問題求解,以及如的關(guān)系,用什么觀點來研究問題并進(jìn)行問題求解,以及如何進(jìn)行系統(tǒng)構(gòu)造的軟件方法學(xué)。從這個意義上講:何進(jìn)行系統(tǒng)構(gòu)造的軟件方法學(xué)。從這個意義上講:面向?qū)ο蠓椒ㄊ且环N運用對象、類、繼承、封裝面向?qū)ο蠓椒ㄊ且环N運用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來構(gòu)造系統(tǒng)、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。的軟件開發(fā)方法。1.1 1.1
3、 什么是面向?qū)ο笫裁词敲嫦驅(qū)ο蟮诘? 1章章 面向?qū)ο蠓椒ǜ耪撁嫦驅(qū)ο蠓椒ǜ耪?022-2-153北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計面向?qū)ο蠓椒ǖ幕舅枷朊嫦驅(qū)ο蠓椒ǖ幕舅枷胍?、從現(xiàn)實世界中客觀存在的事物出發(fā)來構(gòu)造系統(tǒng)一、從現(xiàn)實世界中客觀存在的事物出發(fā)來構(gòu)造系統(tǒng)強調(diào)直接以問題域(現(xiàn)實世界)中的事物為中心強調(diào)直接以問題域(現(xiàn)實世界)中的事物為中心來思考問題、認(rèn)識問題,并根據(jù)這些事物的本質(zhì)來思考問題、認(rèn)識問題,并根據(jù)這些事物的本質(zhì)特征,把它們抽象為系統(tǒng)中的對象,作為系統(tǒng)的特征,把它們抽象為系統(tǒng)中的對象,作為系統(tǒng)的基本構(gòu)成單位。這可以使系統(tǒng)直接映射問題基本構(gòu)成單位。這可以使系統(tǒng)直接映射
4、問題域,域,保持問題域中事物及其相互關(guān)系的本來面貌。保持問題域中事物及其相互關(guān)系的本來面貌。二、充分運用人類日常的思維方法二、充分運用人類日常的思維方法強調(diào)運用人類在日常的邏輯思維中經(jīng)常采用的思想強調(diào)運用人類在日常的邏輯思維中經(jīng)常采用的思想方法與原則,例如抽象、分類、繼承、聚合、封裝方法與原則,例如抽象、分類、繼承、聚合、封裝、關(guān)聯(lián)等等。這使得軟件開發(fā)者能更有效地思考問、關(guān)聯(lián)等等。這使得軟件開發(fā)者能更有效地思考問題,并以其他人也能看得懂的方式把自己的認(rèn)識表題,并以其他人也能看得懂的方式把自己的認(rèn)識表達(dá)出來。達(dá)出來。2022-2-154北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計主要特點:主要
5、特點:用用類類和和對象對象作為系統(tǒng)的基本構(gòu)成單位。對象對應(yīng)作為系統(tǒng)的基本構(gòu)成單位。對象對應(yīng)問題域中的事物,其問題域中的事物,其屬性屬性和和操作操作刻畫了事物的靜刻畫了事物的靜態(tài)特征和動態(tài)特征,它們之間的態(tài)特征和動態(tài)特征,它們之間的繼承繼承關(guān)系、關(guān)系、聚合聚合關(guān)系、關(guān)系、關(guān)聯(lián)關(guān)聯(lián)和和消息消息如實地表達(dá)了問題域中事物之如實地表達(dá)了問題域中事物之間實際存在的各種關(guān)系。間實際存在的各種關(guān)系。因此,無論系統(tǒng)的構(gòu)成成分,還是通過這些成分因此,無論系統(tǒng)的構(gòu)成成分,還是通過這些成分之間的關(guān)系而體現(xiàn)的系統(tǒng)結(jié)構(gòu),都可直接地映射之間的關(guān)系而體現(xiàn)的系統(tǒng)結(jié)構(gòu),都可直接地映射問題域。問題域。2022-2-155北京大學(xué)信
6、息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計對問題域的認(rèn)識(人)客觀世界(問題域)計算機自然語言語言的鴻溝編程語言語言的過渡(人)編程(人)程序的理解和執(zhí)行(機器)軟件開發(fā):對事物的認(rèn)識和描述軟件開發(fā):對事物的認(rèn)識和描述問題問題語言的鴻溝語言的鴻溝1.2 從認(rèn)識論看面向?qū)ο蠓椒ǖ男纬蓮恼J(rèn)識論看面向?qū)ο蠓椒ǖ男纬?022-2-156北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計計算機機器語言自然語言客觀世界(問題域)語言的鴻溝語言的發(fā)展語言的發(fā)展鴻溝變窄鴻溝變窄程序的指令、數(shù)據(jù)、地址,都是由二進(jìn)制的“0”和“1”構(gòu)成的。離機器最近,能夠直接地執(zhí)行,然而沒有絲毫形象的意義,離人類的思維最遠(yuǎn)。匯編語言以易理
7、解的符號表示指令、數(shù)據(jù)以及寄存器、地址等物理概念。稍稍適合人類的形象思維,但仍然相差很遠(yuǎn)。因為抽象層次太低,仍需考慮大量的機器細(xì)節(jié)。高級語言隱蔽了機器細(xì)節(jié),使用有形象意義的命名和表達(dá)式,可以聯(lián)系到程序所描述的具體事物。特別是結(jié)構(gòu)化編程語結(jié)構(gòu)化編程語言言更便于體現(xiàn)客觀事物的結(jié)構(gòu)和邏輯涵義,與人類的自然語言更接近,但仍有不少差距。面向?qū)ο笳Z言能比較直接地反映客觀世界的本來面目,并使軟件開發(fā)人員能夠運用人類認(rèn)識事物所采用的一般思維方法來進(jìn)行軟件開發(fā)。2022-2-157北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計問題域測試編程計算機編程語言自然語言需求分析總體設(shè)計詳細(xì)設(shè)計軟件工程學(xué)的作用軟件工程學(xué)
8、的作用傳統(tǒng)的軟件工程方法傳統(tǒng)的軟件工程方法分析與設(shè)計的鴻溝分析與設(shè)計概念及表示法的不一致2022-2-158北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計問題域問題域OOA計算機計算機自然語言面向?qū)ο缶幊陶Z言O(shè)ODOOPOOT軟件工程學(xué)的作用軟件工程學(xué)的作用面向?qū)ο蟮能浖こ谭椒嫦驅(qū)ο蟮能浖こ谭椒?022-2-159北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計1.3 1.3 面向?qū)ο蠓椒ǖ幕靖拍钆c原則面向?qū)ο蠓椒ǖ幕靖拍钆c原則對象,類對象,類屬性,操作屬性,操作封裝封裝繼承,一般繼承,一般- -特殊結(jié)構(gòu)特殊結(jié)構(gòu)聚合,整體聚合,整體- -部分結(jié)構(gòu)部分結(jié)構(gòu)關(guān)聯(lián)關(guān)聯(lián)消息消息多態(tài)多態(tài)持久對象
9、,主動對象持久對象,主動對象2022-2-1510北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計對象對象是現(xiàn)實世界中是現(xiàn)實世界中某個實際存在的事某個實際存在的事物,它可以是有形物,它可以是有形的,比如一輛汽車的,比如一輛汽車,也可以是無形的,也可以是無形的,比如一項計劃。,比如一項計劃。對象是構(gòu)成世界的對象是構(gòu)成世界的一個獨立單位。它一個獨立單位。它具有自己的靜態(tài)特具有自己的靜態(tài)特征和動態(tài)特征。征和動態(tài)特征。屬性屬性是用來描述對象靜態(tài)特是用來描述對象靜態(tài)特征的一個數(shù)據(jù)項。征的一個數(shù)據(jù)項。操作操作是用來描述對象動態(tài)特是用來描述對象動態(tài)特征的一個動作序列。征的一個動作序列。對象標(biāo)識對象標(biāo)識就是對象
10、的名字,就是對象的名字,有有“外部標(biāo)識外部標(biāo)識”和和“內(nèi)部標(biāo)內(nèi)部標(biāo)識識”之分。之分。對象,屬性,操作對象,屬性,操作對象對象是系統(tǒng)中用來是系統(tǒng)中用來描述客觀事物的一描述客觀事物的一個實體,它是構(gòu)成個實體,它是構(gòu)成系統(tǒng)的一個基本單系統(tǒng)的一個基本單位。對象由一組屬位。對象由一組屬性和性和施加于這些屬施加于這些屬性一組操作構(gòu)成。性一組操作構(gòu)成。對象對象對象標(biāo)識對象標(biāo)識屬性屬性操作操作2022-2-1511北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計封裝:封裝:把對象的屬性和操作結(jié)合成一個獨立把對象的屬性和操作結(jié)合成一個獨立的系統(tǒng)單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。的系統(tǒng)單位,并盡可能隱蔽對象的內(nèi)部細(xì)
11、節(jié)。屬屬性性操操作作報刊報刊A A報刊報刊B B錢箱錢箱報刊零售報刊零售款貨清點款貨清點顧顧客客封裝的重要意義:封裝的重要意義:使對象能夠集中而完整地描述并對應(yīng)一個使對象能夠集中而完整地描述并對應(yīng)一個具體的事物。具體的事物。體現(xiàn)了事物的相對獨立性,使對象外部不體現(xiàn)了事物的相對獨立性,使對象外部不能隨意存取對象的內(nèi)部數(shù)據(jù),避免了外部能隨意存取對象的內(nèi)部數(shù)據(jù),避免了外部錯誤對它的錯誤對它的“交叉感染交叉感染”。對象的內(nèi)部的修改對外部的影響很小,減對象的內(nèi)部的修改對外部的影響很小,減少了修改引起的少了修改引起的“波動效應(yīng)波動效應(yīng)”。由封裝機由封裝機制保證制保證 封裝帶來的問題:封裝帶來的問題:編程的
12、麻煩編程的麻煩執(zhí)行效率的損失執(zhí)行效率的損失 解決辦法:解決辦法:不強調(diào)嚴(yán)格封裝,不強調(diào)嚴(yán)格封裝,實行可見性控制。實行可見性控制。(混合型(混合型OOPLOOPL) 例如:例如:C+C+2022-2-1512北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計抽象,類,一般類,特殊類抽象,類,一般類,特殊類抽象與分類:抽象與分類:忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,叫做抽象。抽象是形成概念的基本手段。把具有共同性質(zhì)的事物劃分為一類,叫做分類。類類是具有相同屬性和操作的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和操作兩個主要部分。
13、類的作用是用來創(chuàng)建對象,對象是類的一個實例。對象對象對象對象對象對象對象對象對象對象對象對象對象對象對象對象類名類名屬性屬性操作操作抽象抽象2022-2-1513北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計不同程度的抽象可得到不同層次的分類不同程度的抽象可得到不同層次的分類較多地較多地忽略事忽略事物之間物之間的差別的差別可得到可得到較一般較一般的類的類較多地較多地注意事注意事物之間物之間的差別的差別可得到可得到較特殊較特殊的類的類運輸工具運輸工具火車火車汽車汽車飛機飛機卡車卡車轎車轎車輪船輪船車輛車輛2022-2-1514北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計定義定義1:如果類如果類
14、A A具有類具有類B B的全部屬性和全部操作,而且具的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則有自己特有的某些屬性或操作,則A A叫做叫做B B的的特殊類特殊類,B B叫叫做做A A的的一般類一般類。一般類與特殊類又稱。一般類與特殊類又稱父類父類與與子類子類。定義定義2 2:如果類如果類A A的全部對象都是類的全部對象都是類B B的對象,而且類的對象,而且類B B中存中存在不屬于類在不屬于類A A的對象,則的對象,則A A是是B B的特殊類,的特殊類,B B是是A A的一般類。的一般類。可以證明,以上兩種定義是等價的可以證明,以上兩種定義是等價的一般類和特殊類的定義一般類和特殊
15、類的定義2022-2-1515北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計繼承:繼承:特殊類擁有其一般類的全部屬性與操特殊類擁有其一般類的全部屬性與操作,稱作特殊類對一般類的繼承。作,稱作特殊類對一般類的繼承。繼承意味著繼承意味著自動地?fù)碛凶詣拥負(fù)碛校蛟?,或曰隱含地復(fù)制隱含地復(fù)制繼承簡化了繼承簡化了人們對事物人們對事物的認(rèn)識和描的認(rèn)識和描述,非常有述,非常有益于軟件復(fù)益于軟件復(fù)用,是用,是OOOO技技術(shù)提高軟件術(shù)提高軟件開發(fā)效率的開發(fā)效率的重要原因之重要原因之一。一。由繼承機由繼承機制保證制保證由一組具有繼由一組具有繼承關(guān)系的類所承關(guān)系的類所組成的結(jié)構(gòu)稱組成的結(jié)構(gòu)稱作作一般一般- -特殊特
16、殊結(jié)構(gòu)結(jié)構(gòu)。它是一。它是一個以類為結(jié)點個以類為結(jié)點,以繼承關(guān)系,以繼承關(guān)系為邊的連通的為邊的連通的有向圖。有向圖。繼承關(guān)系的語義:繼承關(guān)系的語義:“is a kind of”軍人軍人軍官軍官士兵士兵義務(wù)兵義務(wù)兵志愿兵志愿兵例例2022-2-1516北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計多繼承:多繼承:允許一個允許一個特殊類具有一個以上特殊類具有一個以上一般類的繼承方式稱作多繼承一般類的繼承方式稱作多繼承人員人員姓名姓名教職工教職工職稱職稱專業(yè)專業(yè)研究生研究生學(xué)號學(xué)號班級班級專業(yè)專業(yè)在職研究生在職研究生在職單位在職單位 例例:2022-2-1517北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治?/p>
17、與設(shè)計聚合:聚合:是兩個類之間的一個二元關(guān)系,它表示一個類的對象是兩個類之間的一個二元關(guān)系,它表示一個類的對象實例以另一個類的對象實例作為其組成部分。實例以另一個類的對象實例作為其組成部分。聚合刻畫了現(xiàn)實事物之間的構(gòu)成關(guān)系或者擁有關(guān)系。聚合刻畫了現(xiàn)實事物之間的構(gòu)成關(guān)系或者擁有關(guān)系。部分對象部分對象整體對象嵌套對象嵌套對象整體對象部分對象部分對象整體對象對象指針或?qū)ο髽?biāo)識對象指針或?qū)ο髽?biāo)識兩種聚合,兩種實現(xiàn)方式:兩種聚合,兩種實現(xiàn)方式:緊密、固定的聚合關(guān)系緊密、固定的聚合關(guān)系例如汽車與發(fā)動機例如汽車與發(fā)動機松散、靈活的聚合關(guān)系松散、靈活的聚合關(guān)系例如公司與法律顧問例如公司與法律顧問聚合關(guān)系的語義
18、:聚合關(guān)系的語義:“has a”或或“is a part of”緊密、固定緊密、固定的聚合方式的聚合方式又稱為又稱為組合組合2022-2-1518北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計整體整體-部分結(jié)構(gòu):部分結(jié)構(gòu):聚合關(guān)系又稱整體聚合關(guān)系又稱整體-部分關(guān)系。由一組具有聚合關(guān)系的類所部分關(guān)系。由一組具有聚合關(guān)系的類所形成的結(jié)構(gòu)稱為形成的結(jié)構(gòu)稱為整體整體-部分結(jié)構(gòu)部分結(jié)構(gòu)。它是一個以類為結(jié)點,以。它是一個以類為結(jié)點,以聚合關(guān)系為邊的連通有向圖。聚合關(guān)系為邊的連通有向圖。例例公公 司司0*0*法律顧問法律顧問汽車發(fā)動機車身氣缸111111*2022-2-1519北京大學(xué)信息學(xué)院研究生課程面向
19、對象的分析與設(shè)計關(guān)聯(lián):關(guān)聯(lián):兩個或者多個類上的一個關(guān)系(即這些類的對象實兩個或者多個類上的一個關(guān)系(即這些類的對象實例集合的笛卡兒積的一個子集合),其中的元素提例集合的笛卡兒積的一個子集合),其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。 城市城市* * *有航線有航線 城市之間有航線城市之間有航線教教 師師學(xué)學(xué) 生生* *1 1指導(dǎo)論文指導(dǎo)論文 教師與被指導(dǎo)的學(xué)生教師與被指導(dǎo)的學(xué)生例:例:2022-2-1520北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計用集合論的觀點和系統(tǒng)需求討論關(guān)聯(lián)概念用集合論的觀點和系統(tǒng)需求討論關(guān)聯(lián)概念 關(guān)聯(lián)是兩個
20、或者多個類上的一個關(guān)系,其中的元素提關(guān)聯(lián)是兩個或者多個類上的一個關(guān)系,其中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。 例:設(shè)例:設(shè)A和和B是兩個類,它們的對象實例集合是是兩個類,它們的對象實例集合是A=a1,a2,anB=b1,b2,bmA和和B的笛卡兒積的笛卡兒積AB= , , , , , , 這個笛卡兒積集合中這個笛卡兒積集合中有有n m個元素,它們個元素,它們可以組合成可以組合成2( n m)個個子集合。子集合。但是只有某個子集合但是只有某個子集合中的元素提供了被開中的元素提供了被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息
21、時一組有意義的信息時,才有必要把它定義,才有必要把它定義為系統(tǒng)中的一個關(guān)聯(lián)為系統(tǒng)中的一個關(guān)聯(lián)。2022-2-1521北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計例如:在一個教學(xué)管理系統(tǒng)中例如:在一個教學(xué)管理系統(tǒng)中有教師、學(xué)生、教務(wù)員課程等類。有教師、學(xué)生、教務(wù)員課程等類。系統(tǒng)中需要表明每一門課程由哪位教師承擔(dān)、有哪些學(xué)生系統(tǒng)中需要表明每一門課程由哪位教師承擔(dān)、有哪些學(xué)生選修,因此需要在教師和課程之間定義一個關(guān)聯(lián),在學(xué)生選修,因此需要在教師和課程之間定義一個關(guān)聯(lián),在學(xué)生和課程之間也定義一個關(guān)聯(lián)。和課程之間也定義一個關(guān)聯(lián)。該系統(tǒng)的教務(wù)員要為學(xué)生做注冊、登記成績等工作,但是該系統(tǒng)的教務(wù)員要為學(xué)生做
22、注冊、登記成績等工作,但是不需要區(qū)別是哪個教務(wù)員為哪個學(xué)生做的,因此就不需要不需要區(qū)別是哪個教務(wù)員為哪個學(xué)生做的,因此就不需要在教務(wù)員和學(xué)生這兩個類之間定義關(guān)聯(lián)。在教務(wù)員和學(xué)生這兩個類之間定義關(guān)聯(lián)。 教師教師課程課程學(xué)生學(xué)生教務(wù)員教務(wù)員callcall1*教務(wù)員教務(wù)員2022-2-1522北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計消息:消息:消息是向?qū)ο蟀l(fā)出的服務(wù)請求消息是向?qū)ο蟀l(fā)出的服務(wù)請求 目前在大部分面向?qū)ο蟮木幊陶Z言中,消息其實就目前在大部分面向?qū)ο蟮木幊陶Z言中,消息其實就是函數(shù)(或過程)調(diào)用。是函數(shù)(或過程)調(diào)用。但是,函數(shù)調(diào)用只是實現(xiàn)消息的方式之一,上述理解但是,函數(shù)調(diào)用只是實
23、現(xiàn)消息的方式之一,上述理解只適合于順序系統(tǒng)只適合于順序系統(tǒng)更一般的定義:更一般的定義:消息是對象之間在一次交互中所傳送的信息消息是對象之間在一次交互中所傳送的信息 2022-2-1523北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計教師教師課程課程學(xué)生學(xué)生教務(wù)員教務(wù)員callcall1*糾正一種誤解糾正一種誤解認(rèn)為在任何兩個類之間只有存在關(guān)聯(lián)才認(rèn)為在任何兩個類之間只有存在關(guān)聯(lián)才可能存在消息。可能存在消息。實際上,關(guān)聯(lián)和消息是兩個截然不同的概念,二者是相互實際上,關(guān)聯(lián)和消息是兩個截然不同的概念,二者是相互獨立的。獨立的。教務(wù)員教務(wù)員call2022-2-1524北京大學(xué)信息學(xué)院研究生課程面向?qū)ο?/p>
24、的分析與設(shè)計多態(tài):多態(tài):多態(tài)是指同一個命名可具有不同的語義。多態(tài)是指同一個命名可具有不同的語義。OOOO方法中,常方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。實現(xiàn)機制:實現(xiàn)機制:重寫(重寫(override)在特殊類中對繼承來的屬性或操作重在特殊類中對繼承來的屬性或操作重新定義其實現(xiàn);新定義其實現(xiàn);動態(tài)綁定(動態(tài)綁定(dynamic binding)在運行時根據(jù)對象接收在運行時根據(jù)對象接收的消息動態(tài)地確定要連接哪一段操作代碼;的消息動態(tài)地確定要連接哪一段
25、操作代碼;類屬(類屬(generic)操作參量的類型可以是參數(shù)化的。操作參量的類型可以是參數(shù)化的。2022-2-1525北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計其他:其他:持久對象:持久對象:在程序運行結(jié)束后仍能繼續(xù)保存的對象在程序運行結(jié)束后仍能繼續(xù)保存的對象超出了程序運行時間,跨越了內(nèi)外存空間超出了程序運行時間,跨越了內(nèi)外存空間實現(xiàn)途徑:支持持久對象的實現(xiàn)途徑:支持持久對象的OOPL,OO-DBMS主動對象:主動對象:至少有一個操作不需要接收消息就能主動執(zhí)至少有一個操作不需要接收消息就能主動執(zhí)行的對象。行的對象。描述具有主動行為的事物描述具有主動行為的事物描述并發(fā)執(zhí)行的多個控制流描述并
26、發(fā)執(zhí)行的多個控制流2022-2-1526北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計面向機器面向代數(shù)面向過程面向數(shù)據(jù)面向人面向文件面向信息面向應(yīng)用面向功能面向數(shù)據(jù)流 面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真軟件科學(xué)的發(fā)展歷程中軟件科學(xué)的發(fā)展歷程中出現(xiàn)過許多出現(xiàn)過許多“面向面向”軟件開發(fā)從過分專業(yè)化的方法、規(guī)則和技巧中回到了客觀世界,回到了人們的日常思維,是軟件理論的返樸歸真。面向?qū)ο竺嫦驅(qū)ο?022-2-1527北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計1. 雛形階段雛形階段60年代挪威計算中心開發(fā)的年代挪威計算中心開發(fā)的Simula67面向?qū)ο笳Z言的先面向?qū)ο笳Z言的
27、先驅(qū)和第一個里程碑(首先引入了類的概念和繼承機制)。驅(qū)和第一個里程碑(首先引入了類的概念和繼承機制)。70年代年代CLU、并發(fā)、并發(fā)Pascal、Ada和和Modula-2等語言對抽象數(shù)據(jù)等語言對抽象數(shù)據(jù)類型理論的發(fā)展起到重要作用(支持?jǐn)?shù)據(jù)與操作的封裝)。類型理論的發(fā)展起到重要作用(支持?jǐn)?shù)據(jù)與操作的封裝)。猶他大學(xué)的博士生猶他大學(xué)的博士生Alan Kay設(shè)計了一個實驗性的語言設(shè)計了一個實驗性的語言Flex。從從Simula 67中借鑒了許多概念,如類、對象、繼承等。中借鑒了許多概念,如類、對象、繼承等。1972年年P(guān)alo Alno研究中心(研究中心(PARC)發(fā)布了)發(fā)布了Smalltalk
28、-72,其,其中正式使用了中正式使用了“面向?qū)ο竺嫦驅(qū)ο蟆边@個術(shù)語。這個術(shù)語。Smalltalk的問世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計方法的正式形成。的問世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計方法的正式形成。但是這個時期的但是這個時期的Smalltalk語言還不夠完善語言還不夠完善1.4 OO1.4 OO方法的發(fā)展歷史與現(xiàn)狀方法的發(fā)展歷史與現(xiàn)狀2022-2-1528北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計PARCPARC先后發(fā)布了先后發(fā)布了Smalltalk-72Smalltalk-72,7676,7878等版本,直至等版本,直至19811981年推出該語言最完善的版本年推出該語言最完善的版本Smalltalk
29、-80Smalltalk-80。Smalltalk-80Smalltalk-80的問世被今認(rèn)為是面向?qū)ο笳Z言發(fā)展史上最的問世被今認(rèn)為是面向?qū)ο笳Z言發(fā)展史上最重要的里程碑。迄今絕大部分面向?qū)ο蟮幕靖拍罴捌渲е匾睦锍瘫?。迄今絕大部分面向?qū)ο蟮幕靖拍罴捌渲С謾C制在持機制在Smalltalk-80Smalltalk-80中都已具備。它是第一個完善的、中都已具備。它是第一個完善的、能夠?qū)嶋H應(yīng)用的面向?qū)ο笳Z言。能夠?qū)嶋H應(yīng)用的面向?qū)ο笳Z言。但是,但是,SmalltalkSmalltalk開始幾年的應(yīng)用不夠廣泛,原因是:開始幾年的應(yīng)用不夠廣泛,原因是: 一種新的軟件方法學(xué)被廣泛接受需要一定的時間。一種新
30、的軟件方法學(xué)被廣泛接受需要一定的時間。 商品化軟件開發(fā)工作到商品化軟件開發(fā)工作到8787年才開始進(jìn)行。年才開始進(jìn)行。 追求純追求純OOOO的宗旨使許多軟件開發(fā)人員感到不便。的宗旨使許多軟件開發(fā)人員感到不便。 2.2.完善階段完善階段2022-2-1529北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計3.3.繁榮階段繁榮階段自自8080年代中期到年代中期到9090年代,是面向?qū)ο笳Z言走向繁榮的階段。年代,是面向?qū)ο笳Z言走向繁榮的階段。其主要表現(xiàn)是大批比較實用的其主要表現(xiàn)是大批比較實用的OOPLOOPL的涌現(xiàn),例如的涌現(xiàn),例如 C+C+、Objective-CObjective-C、Object
31、PascalObject Pascal、CLOSCLOS(Common Lisp Common Lisp Object SystemObject System)、)、EiffelEiffel、ActorActor等。等。OOOO編程語言分為編程語言分為純純OOOO語言語言和和混合型混合型OOOO語言語言混合型語言是在傳統(tǒng)的過程式語言基礎(chǔ)上增加混合型語言是在傳統(tǒng)的過程式語言基礎(chǔ)上增加OOOO語言成分,語言成分,在實用性方面具有更大的優(yōu)勢。在實用性方面具有更大的優(yōu)勢。此時的純此時的純OOOO語言也比較重視實用性。語言也比較重視實用性。2022-2-1530北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c
32、設(shè)計4 4、發(fā)展到軟件生存周期前期階段、發(fā)展到軟件生存周期前期階段計算機軟件領(lǐng)域的很多新計算機軟件領(lǐng)域的很多新的方法與技術(shù)都有這樣的的方法與技術(shù)都有這樣的發(fā)展經(jīng)歷,例如:結(jié)構(gòu)化發(fā)展經(jīng)歷,例如:結(jié)構(gòu)化方法,形式化方法,軟件方法,形式化方法,軟件復(fù)用。復(fù)用。與其他方法相比,面向?qū)εc其他方法相比,面向?qū)ο蟮姆椒ㄅc技術(shù)發(fā)展到軟象的方法與技術(shù)發(fā)展到軟件生命期的前期階段有著件生命期的前期階段有著更為深刻的意義。更為深刻的意義。當(dāng)前:幾乎覆蓋計算機軟件當(dāng)前:幾乎覆蓋計算機軟件領(lǐng)域的所有分支領(lǐng)域的所有分支面向?qū)ο蟮木幊陶Z言面向?qū)ο蟮木幊陶Z言面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮姆治雒嫦驅(qū)ο蟮脑O(shè)計面向?qū)ο蟮脑O(shè)計面向?qū)ο蟮能浖?/p>
33、測試面向?qū)ο蟮能浖y試面向?qū)ο蟮能浖S護(hù)面向?qū)ο蟮能浖S護(hù)面向?qū)ο蟮膱D形用戶界面面向?qū)ο蟮膱D形用戶界面面向?qū)ο蟮臄?shù)據(jù)庫面向?qū)ο蟮臄?shù)據(jù)庫面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)面向?qū)ο蟮闹悄艹绦蛟O(shè)計面向?qū)ο蟮闹悄艹绦蛟O(shè)計面向?qū)ο蟮能浖_發(fā)環(huán)境面向?qū)ο蟮能浖_發(fā)環(huán)境面向?qū)ο蟮捏w系結(jié)構(gòu)面向?qū)ο蟮捏w系結(jié)構(gòu)許多新領(lǐng)域以面向?qū)υS多新領(lǐng)域以面向?qū)ο罄碚摓榛A(chǔ),或作象理論為基礎(chǔ),或作為主要技術(shù)為主要技術(shù)軟件體系結(jié)構(gòu)(軟件體系結(jié)構(gòu)(software architecture)領(lǐng)域工程(領(lǐng)域工程(domain engineering)設(shè)計模式(設(shè)計模式(design patterns)基于構(gòu)件的軟件工程(基于構(gòu)件的軟
34、件工程(CBSE)智能代理(智能代理(agent)面向服務(wù)的體系結(jié)構(gòu)(面向服務(wù)的體系結(jié)構(gòu)(SOA)面向?qū)ο蠓椒◤木幊贪l(fā)展到面向?qū)ο蠓椒◤木幊贪l(fā)展到設(shè)計、分析,進(jìn)而發(fā)展到整設(shè)計、分析,進(jìn)而發(fā)展到整個軟件生存周期。個軟件生存周期。2022-2-1531北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計5. 最新發(fā)展最新發(fā)展編程語言編程語言語言語言 + 類庫類庫 + 可視化編程環(huán)境可視化編程環(huán)境例如:例如:Visual C+, Visual Basic, Delhpi分析與設(shè)計方法分析與設(shè)計方法走向統(tǒng)一,形成統(tǒng)一建模語言走向統(tǒng)一,形成統(tǒng)一建模語言UML結(jié)束各種方法的概念及表示法不一致的局面結(jié)束各種方法的
35、概念及表示法不一致的局面2022-2-1532北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計在軟件生存周期全過程運用面向?qū)ο蠓椒ㄔ谲浖嬷芷谌^程運用面向?qū)ο蠓椒↙.M.Northrop:“L.M.Northrop:“盡管面向?qū)ο笳Z言正取得令人振奮的發(fā)展,但編程并盡管面向?qū)ο笳Z言正取得令人振奮的發(fā)展,但編程并不是軟件開發(fā)問題的主要根源。需求分析與設(shè)計問題更為普遍并且更不是軟件開發(fā)問題的主要根源。需求分析與設(shè)計問題更為普遍并且更值得解決。因此面向?qū)ο箝_發(fā)技術(shù)的焦點不應(yīng)該只對準(zhǔn)編程階段,而值得解決。因此面向?qū)ο箝_發(fā)技術(shù)的焦點不應(yīng)該只對準(zhǔn)編程階段,而應(yīng)更全面地對準(zhǔn)軟件工程的其他階段。面向?qū)ο蠓椒ㄕ?/p>
36、正意義深遠(yuǎn)的應(yīng)更全面地對準(zhǔn)軟件工程的其他階段。面向?qū)ο蠓椒ㄕ嬲饬x深遠(yuǎn)的目標(biāo)是它適合于解決分析與設(shè)計期間的復(fù)雜性并實現(xiàn)分析與設(shè)計的復(fù)目標(biāo)是它適合于解決分析與設(shè)計期間的復(fù)雜性并實現(xiàn)分析與設(shè)計的復(fù)用。面向?qū)ο蟮拈_發(fā)不僅僅是編程,必須在整個軟件生存周期采用一用。面向?qū)ο蟮拈_發(fā)不僅僅是編程,必須在整個軟件生存周期采用一種全新的方法,這一觀點已被人們所接受。種全新的方法,這一觀點已被人們所接受。軟件工程百科全書軟件工程百科全書紐約,紐約,19941994面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮脑O(shè)計面向?qū)ο蟮木幊堂嫦驅(qū)ο蟮臏y試面向?qū)ο蟮能浖S護(hù)2022-2-1533北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計第第2 2
37、章章 不同的分析與設(shè)計方法不同的分析與設(shè)計方法幾種典型的幾種典型的建模方法建模方法功能分解法功能分解法結(jié)構(gòu)化方法結(jié)構(gòu)化方法信息建模法信息建模法面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ǚ椒ǖ谋容^方法的比較對問題域的不對問題域的不同映射同映射以不同的概念以不同的概念構(gòu)成系統(tǒng)模型構(gòu)成系統(tǒng)模型什么是什么是OOA什么是什么是OODOO方法的主要優(yōu)點方法的主要優(yōu)點幾種典型的幾種典型的OO方法方法從軟件系統(tǒng)建從軟件系統(tǒng)建模面臨的難題模面臨的難題看面向?qū)ο蠓娇疵嫦驅(qū)ο蠓椒ǖ膬?yōu)勢法的優(yōu)勢Booch方法方法Coad-Yourdon方法方法Jacobson方法方法(OOSE)Rumbaugh方法方法(OMT)本章內(nèi)容結(jié)構(gòu)本章內(nèi)容結(jié)
38、構(gòu)2022-2-1534北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計歷史上幾種典型的建模方法歷史上幾種典型的建模方法2.1 功能分解法功能分解法(function decomposition)以系統(tǒng)需要提供的功能為中心來組織系統(tǒng)。首先定義各種功能,然后把功能分解為子功能對較大的子功能進(jìn)一步分解,直到可給出明確的定義。根據(jù)功能子功能的需要設(shè)計數(shù)據(jù)結(jié)構(gòu)。定義功能/子功能之間的接口。沒有明確地區(qū)分分析與設(shè)計沒有明確地區(qū)分分析與設(shè)計 功能 功能 功能 系統(tǒng) 子功能子功能子功能子功能分解分解分解分解分解分解建模過程:建模過程:層層進(jìn)行功能分解層層進(jìn)行功能分解2022-2-1535北京大學(xué)信息學(xué)院研究生
39、課程面向?qū)ο蟮姆治雠c設(shè)計功能功能模塊模塊功能功能模塊模塊功能功能模塊模塊功能功能模塊模塊功能功能模塊模塊功能功能模塊模塊功能功能模塊模塊功能功能模塊模塊功能功能模塊模塊功能功能模塊模塊得到的系統(tǒng)模型:得到的系統(tǒng)模型:由模塊及其接口構(gòu)成由模塊及其接口構(gòu)成優(yōu)點與缺點優(yōu)點與缺點: :直接地反映用戶的需求,所以工作很容易開始。不能直接地映射問題域,很難檢驗結(jié)果的正確性。對需求變化的適應(yīng)能力很差。局部的錯誤和修改很容易產(chǎn)生全局性的影響。2022-2-1536北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計2.2 結(jié)構(gòu)化方法結(jié)構(gòu)化方法結(jié)構(gòu)化分析(結(jié)構(gòu)化分析(structured analysis,SA)結(jié)構(gòu)
40、化設(shè)計(結(jié)構(gòu)化設(shè)計(structured design,SD) 結(jié)構(gòu)化分析結(jié)構(gòu)化分析又稱數(shù)據(jù)流法又稱數(shù)據(jù)流法,其基本策略是跟蹤數(shù)據(jù)流,即其基本策略是跟蹤數(shù)據(jù)流,即研究問題域中數(shù)據(jù)如何流動,以及在各個環(huán)節(jié)上進(jìn)行何種研究問題域中數(shù)據(jù)如何流動,以及在各個環(huán)節(jié)上進(jìn)行何種處理,從而發(fā)現(xiàn)數(shù)據(jù)流和加工。得到的分析模型是數(shù)據(jù)流處理,從而發(fā)現(xiàn)數(shù)據(jù)流和加工。得到的分析模型是數(shù)據(jù)流圖(圖(DFD),主要模型元素是),主要模型元素是數(shù)據(jù)流數(shù)據(jù)流、加工加工、文件文件及及端點端點,外加,外加處理說明處理說明和和數(shù)據(jù)字典數(shù)據(jù)字典。結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化設(shè)計與功能分解法基本相同,基于模塊的概念建立與功能分解法基本相同,基于模塊的概
41、念建立設(shè)計模型,分為概要設(shè)計和詳細(xì)設(shè)計。設(shè)計模型,分為概要設(shè)計和詳細(xì)設(shè)計。概要設(shè)計:概要設(shè)計:確定系統(tǒng)中包含哪些模塊以及模塊之間的調(diào)確定系統(tǒng)中包含哪些模塊以及模塊之間的調(diào)用關(guān)系,得到模塊結(jié)構(gòu)圖(用關(guān)系,得到模塊結(jié)構(gòu)圖(MSD)。)。詳細(xì)設(shè)計:詳細(xì)設(shè)計:描述每個模塊內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和操作流程。描述每個模塊內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和操作流程。2022-2-1537北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計數(shù)據(jù)流數(shù)據(jù)流加工加工文件文件起點起點處理說明處理說明數(shù)據(jù)詞典數(shù)據(jù)詞典優(yōu)點:優(yōu)點:有嚴(yán)格的法則,強調(diào)研究問題域。有嚴(yán)格的法則,強調(diào)研究問題域。缺點:缺點:仍然是間接映射問題域;仍然是間接映射問題域;與結(jié)構(gòu)化
42、設(shè)計的概念不一致,從分析與結(jié)構(gòu)化設(shè)計的概念不一致,從分析到設(shè)計的過渡比較困難;到設(shè)計的過渡比較困難;數(shù)據(jù)流和加工的數(shù)量太多,引起分析數(shù)據(jù)流和加工的數(shù)量太多,引起分析文檔的膨脹。文檔的膨脹。終點終點2022-2-1538北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計2.3 信息建模法(信息建模法(information modeling)由實體由實體-關(guān)系法(關(guān)系法(E-R方法)發(fā)展而來。方法)發(fā)展而來。核心概念是核心概念是實體實體和和關(guān)系關(guān)系。實體描述問題域中的事物,關(guān)系描。實體描述問題域中的事物,關(guān)系描述事物之間在數(shù)據(jù)方面的聯(lián)系,都可以帶有述事物之間在數(shù)據(jù)方面的聯(lián)系,都可以帶有屬性屬性。發(fā)展
43、之后的方法也把實體稱作發(fā)展之后的方法也把實體稱作對象對象,并使用了,并使用了類型類型和和子類型子類型的概念,作為實體(對象)的抽象描述。的概念,作為實體(對象)的抽象描述。有人也稱之為面向?qū)ο蠓椒ǎ幸韵虏顒e:有人也稱之為面向?qū)ο蠓椒?,但有以下差別:1.強調(diào)的重點是信息建模和狀態(tài)建模,而不是對象建模。2.沒有把對實體屬性所進(jìn)行的操作封裝到實體對象中。3.只有屬性的繼承,不支持操作的繼承。4.沒有采用消息通訊。實體實體屬性屬性屬性屬性屬性屬性屬性屬性關(guān)系關(guān)系實體實體mnE-R 圖圖信息模型信息模型 mn對象對象屬性屬性關(guān)系關(guān)系屬性屬性對象對象屬性屬性2022-2-1539北京大學(xué)信息學(xué)院研究生
44、課程面向?qū)ο蟮姆治雠c設(shè)計2.4 面向?qū)ο蠓椒嫦驅(qū)ο蠓椒嫦驅(qū)ο蟮姆治觯嫦驅(qū)ο蟮姆治觯∣OA)面向?qū)ο蟮脑O(shè)計(面向?qū)ο蟮脑O(shè)計(OOD)運用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性運用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來構(gòu)造系統(tǒng)。等概念來構(gòu)造系統(tǒng)。把問題域中的事物抽象為對象,作為系統(tǒng)的基本構(gòu)成單位把問題域中的事物抽象為對象,作為系統(tǒng)的基本構(gòu)成單位其屬性和操作刻畫了事物的靜態(tài)特征和動態(tài)特征其屬性和操作刻畫了事物的靜態(tài)特征和動態(tài)特征完整完整地刻畫了問題域中事物。地刻畫了問題域中事物。用類作為對象的抽象描述,建立它們之間的繼承、聚合、用類作為對象的抽象描述,建立它們之間的繼承
45、、聚合、關(guān)聯(lián)、消息等關(guān)系關(guān)聯(lián)、消息等關(guān)系如實地表達(dá)了問題域中事物之間的如實地表達(dá)了問題域中事物之間的各種關(guān)系。各種關(guān)系。封裝、繼承、聚合、關(guān)聯(lián)、消息通訊等原則符合人類的日封裝、繼承、聚合、關(guān)聯(lián)、消息通訊等原則符合人類的日常思維常思維使系統(tǒng)的復(fù)雜性得到控制。使系統(tǒng)的復(fù)雜性得到控制。因此,得到的系統(tǒng)模型可以直接映射問題域。因此,得到的系統(tǒng)模型可以直接映射問題域。2022-2-1540北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計不同的建模方法不同的建模方法 體現(xiàn)于體現(xiàn)于從不同的概念出發(fā)來認(rèn)識問題域用不同的概念進(jìn)行系統(tǒng)構(gòu)造系統(tǒng)對現(xiàn)實世界的不同映射 信息建模法 面向?qū)ο蠓椒üδ芄δ? /子功能子功能功
46、能接口功能接口功能分解法數(shù)據(jù)流數(shù)據(jù)流加工加工 結(jié)構(gòu)化方法間接映射間接映射間接映射間接映射半直接映射半直接映射直接映射直接映射2022-2-1541北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計審批審批不同的方法對同一應(yīng)用實例(電話安裝業(yè)務(wù)系統(tǒng))的不同效果不同的方法對同一應(yīng)用實例(電話安裝業(yè)務(wù)系統(tǒng))的不同效果結(jié)構(gòu)化分析結(jié)構(gòu)化分析數(shù)據(jù)流和加工數(shù)據(jù)流和加工登記登記安裝安裝開通開通問題:問題:不是直接映射問題域,與問題域事物相關(guān)的數(shù)據(jù)和操作不是圍繞這些事物不是直接映射問題域,與問題域事物相關(guān)的數(shù)據(jù)和操作不是圍繞這些事物來組織的,而是分散在數(shù)據(jù)流和加工中;來組織的,而是分散在數(shù)據(jù)流和加工中;經(jīng)常發(fā)生信息
47、膨脹經(jīng)常發(fā)生信息膨脹模型中的多個數(shù)據(jù)流,實現(xiàn)中其實只是一項數(shù)據(jù);模型中的多個數(shù)據(jù)流,實現(xiàn)中其實只是一項數(shù)據(jù);分析模型難以與設(shè)計模型及源程序?qū)?yīng)。分析模型難以與設(shè)計模型及源程序?qū)?yīng)。用戶登記用戶登記表表用戶登記用戶登記表表用戶登記用戶登記表表用戶登記用戶登記表表文件文件用戶信用戶信息息2022-2-1542北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計面向?qū)ο蠓椒嫦驅(qū)ο蠓椒▽ο蠹捌潢P(guān)系對象及其關(guān)系用戶登記表用戶名登記人審批人施工隊號碼登記審批安裝開通用戶營業(yè)員主管人施工隊機房1*1* *1*callcallcallcall個人用戶團體用戶帳單帳單項1* *1*call直接映射了問題域直接映射了
48、問題域中的實際事物;中的實際事物;能夠與程序形成良能夠與程序形成良好的對應(yīng)。好的對應(yīng)。2022-2-1543北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計顧名思義,面向?qū)ο蟮姆治觯櫭剂x,面向?qū)ο蟮姆治觯∣OA),就是運用面向?qū)ο螅?,就是運用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)分析。方法進(jìn)行系統(tǒng)分析。首先,首先,OOA是分析,是軟件生存周期的一個階段,具有一是分析,是軟件生存周期的一個階段,具有一般分析方法共同具有的內(nèi)容、目標(biāo)及策略;般分析方法共同具有的內(nèi)容、目標(biāo)及策略;但是,但是,它強調(diào)運用面向?qū)ο蠓椒ㄟM(jìn)行分析,用面向?qū)ο蟮乃鼜娬{(diào)運用面向?qū)ο蠓椒ㄟM(jìn)行分析,用面向?qū)ο蟮母拍詈捅硎痉ū磉_(dá)分析結(jié)果。概念和表示法
49、表達(dá)分析結(jié)果?;救蝿?wù):基本任務(wù):運用面向?qū)ο蟮母拍顚栴}域進(jìn)行分析和理解運用面向?qū)ο蟮母拍顚栴}域進(jìn)行分析和理解,將問題域中與系統(tǒng)責(zé)任有關(guān)的事物抽象為系統(tǒng)中的類和,將問題域中與系統(tǒng)責(zé)任有關(guān)的事物抽象為系統(tǒng)中的類和對象,定義這些類和對象的屬性與操作,以及它們之間所對象,定義這些類和對象的屬性與操作,以及它們之間所形成的各種關(guān)系。形成的各種關(guān)系。最終目標(biāo):最終目標(biāo):建立一個滿足用戶需求、直接映射問題域的建立一個滿足用戶需求、直接映射問題域的OOA模型模型及其及其規(guī)約規(guī)約。2.4.1 什么是什么是OOA問題:問題: OOA是需求分析還是系統(tǒng)分析?是需求分析還是系統(tǒng)分析? 2022-2-1544北京
50、大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計2.4.2 什么是什么是OOD不同時期有不同內(nèi)容及特點不同時期有不同內(nèi)容及特點早期(早期(80年代末期之前)年代末期之前)OOD的特點:的特點:1、不是基于、不是基于OOA的的大多基于結(jié)構(gòu)化分析結(jié)果(數(shù)據(jù)流圖)大多基于結(jié)構(gòu)化分析結(jié)果(數(shù)據(jù)流圖)2、是、是OO編程方法的延伸編程方法的延伸多數(shù)方法與編程語言有關(guān),特別受多數(shù)方法與編程語言有關(guān),特別受Ada影響很大影響很大3、不是純、不是純OO的的對某些對某些OO概念(如繼承)缺少支持,概念(如繼承)缺少支持,攙雜一些非攙雜一些非OO 概念(如數(shù)據(jù)流、包、模塊等)概念(如數(shù)據(jù)流、包、模塊等)4、不是只針對軟件
51、生存周期的設(shè)計階段、不是只針對軟件生存周期的設(shè)計階段OOD中的中的“D”指的是指的是Design 或或 Development多少涉及分析問題(如識別問題域的對象),但很不徹底多少涉及分析問題(如識別問題域的對象),但很不徹底早期的早期的OOD可看作現(xiàn)今可看作現(xiàn)今OOA&D方法的雛形方法的雛形2022-2-1545北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計定義:定義:面向?qū)ο蟮脑O(shè)計(面向?qū)ο蟮脑O(shè)計(OOD)就在是)就在是OOA模型基礎(chǔ)上運用面模型基礎(chǔ)上運用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)設(shè)計,目標(biāo)是產(chǎn)生一個符合具體實向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)設(shè)計,目標(biāo)是產(chǎn)生一個符合具體實現(xiàn)條件的現(xiàn)條件的OOD模型。模
52、型?,F(xiàn)今(現(xiàn)今(90年代以后)年代以后)OOD的特點:的特點:1. 以面向?qū)ο蟮姆治鰹榛A(chǔ),一般不依賴結(jié)構(gòu)化分析。以面向?qū)ο蟮姆治鰹榛A(chǔ),一般不依賴結(jié)構(gòu)化分析。2. 與相應(yīng)的與相應(yīng)的OOA方法共同構(gòu)成一種方法共同構(gòu)成一種OOA&D方法體系。方法體系。OOA和和OOD采用一致的概念與原則,但屬于軟件生存周采用一致的概念與原則,但屬于軟件生存周期的不同階段,有不同的目標(biāo)及策略。期的不同階段,有不同的目標(biāo)及策略。3. 較全面地體現(xiàn)面向?qū)ο蠓椒ǖ母拍钆c原則。較全面地體現(xiàn)面向?qū)ο蠓椒ǖ母拍钆c原則。4. 大多數(shù)方法獨立于編程語言,通過面向?qū)ο蟮姆治雠c大多數(shù)方法獨立于編程語言,通過面向?qū)ο蟮姆治雠c設(shè)
53、計所得到的系統(tǒng)模型可以由不同的編程語言實現(xiàn)。設(shè)計所得到的系統(tǒng)模型可以由不同的編程語言實現(xiàn)。2022-2-1546北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計軟件建模面臨的挑戰(zhàn)軟件建模面臨的挑戰(zhàn)1、問題域和系統(tǒng)責(zé)任復(fù)雜性日益增長、問題域和系統(tǒng)責(zé)任復(fù)雜性日益增長問題域問題域(problem domain):被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域,即在現(xiàn)實世界中由這個系統(tǒng)進(jìn)行處理的業(yè)務(wù)范圍。系統(tǒng)責(zé)任系統(tǒng)責(zé)任(system responsibilities):所開發(fā)的系統(tǒng)應(yīng)該具備的職能。隨著硬件性能的提高和價格的下降,軟件系統(tǒng)所面臨的問題域和系統(tǒng)責(zé)任越來越復(fù)雜,因此系統(tǒng)也越來越龐大。 2、交流問題、交流問題軟件系統(tǒng)的
54、開發(fā)需要各類人員之間頻繁交流。領(lǐng)域的多樣性使軟件工程中的交流問題比與其他工程更為突出。 有效的交流需要一種彼此都能理解的共同語言,否則將使彼此的思想難以溝通,很容易隱藏下許多錯誤。 2.4.3 OO方法的主要優(yōu)點方法的主要優(yōu)點2022-2-1547北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計3 3、需求的不斷變化、需求的不斷變化用戶因素,競爭因素,經(jīng)費因素用戶因素,競爭因素,經(jīng)費因素開發(fā)者必須接受和適應(yīng)需求變化開發(fā)者必須接受和適應(yīng)需求變化易變部分和穩(wěn)定部分:易變部分和穩(wěn)定部分:功能:最易變功能:最易變外部接口:很易變外部接口:很易變屬性:較易變屬性:較易變對象:較穩(wěn)定對象:較穩(wěn)定4 4、軟件
55、復(fù)用的要求、軟件復(fù)用的要求復(fù)用級別提高復(fù)用級別提高分析結(jié)果復(fù)用分析結(jié)果復(fù)用要求分析模型的基本成分可以在多個系統(tǒng)中復(fù)用要求一個分析模型可以在多種條件下設(shè)計和實現(xiàn)需求需求變化變化系統(tǒng)局部系統(tǒng)局部修改修改受影響受影響部分修改部分修改產(chǎn)生產(chǎn)生新錯誤新錯誤延長開發(fā)延長開發(fā)時間時間2022-2-1548北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計面向?qū)ο蠓椒ǖ膬?yōu)勢面向?qū)ο蠓椒ǖ膬?yōu)勢對問題域和系統(tǒng)責(zé)任的復(fù)雜性具有較強的處理能力對問題域和系統(tǒng)責(zé)任的復(fù)雜性具有較強的處理能力從問題域中的實際事物出發(fā)來構(gòu)造系統(tǒng)模型,使系統(tǒng)模型能直接地映從問題域中的實際事物出發(fā)來構(gòu)造系統(tǒng)模型,使系統(tǒng)模型能直接地映射問題域;繼承、封
56、裝、聚合等概念使系統(tǒng)的復(fù)雜性得到有效的控制。射問題域;繼承、封裝、聚合等概念使系統(tǒng)的復(fù)雜性得到有效的控制。提供了便于各類相關(guān)人員交流共同語言提供了便于各類相關(guān)人員交流共同語言使用與問題域一致的概念及術(shù)語,體現(xiàn)人類的日常思維方式,為改進(jìn)使用與問題域一致的概念及術(shù)語,體現(xiàn)人類的日常思維方式,為改進(jìn)各類人員之間的交流提供了最基本的條件。各類人員之間的交流提供了最基本的條件。 對需求的變化具有較強的適應(yīng)性對需求的變化具有較強的適應(yīng)性按封裝原則把系統(tǒng)中最容易變化的因素隔離起來,系統(tǒng)的各個單元成按封裝原則把系統(tǒng)中最容易變化的因素隔離起來,系統(tǒng)的各個單元成分之間接口很少,把需求變化所引起的影響局部化。分之間
57、接口很少,把需求變化所引起的影響局部化。為實現(xiàn)分析與設(shè)計級別的軟件復(fù)用提供了有力支持為實現(xiàn)分析與設(shè)計級別的軟件復(fù)用提供了有力支持OO方法的封裝、繼承、聚合等原則,對象的完整性、獨立性以及與問方法的封裝、繼承、聚合等原則,對象的完整性、獨立性以及與問題域的良好對應(yīng),使之非常有利于軟件復(fù)用。題域的良好對應(yīng),使之非常有利于軟件復(fù)用。貫穿軟件生存周期全過程的一致性貫穿軟件生存周期全過程的一致性從從OOA開始使用與問題域一致的概念、詞匯、原則及表示法,這種一開始使用與問題域一致的概念、詞匯、原則及表示法,這種一致性保持到設(shè)計、編程、測試、維護(hù)等各個階段,對于整個軟件生存致性保持到設(shè)計、編程、測試、維護(hù)等
58、各個階段,對于整個軟件生存周期的開發(fā)、維護(hù)及管理活動都具有重要的意義。周期的開發(fā)、維護(hù)及管理活動都具有重要的意義。2022-2-1549北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計Booch方法方法Coad-Yourdon方法方法Firesmith方法方法Jacobson方法方法(OOSE) Martin-Odell方法方法Rumbaugh方法方法(OMT)Seidewitz-Stark方法方法Shlaer-Mellor方法方法Wirfs-Brock方法方法2.4.4 幾種典型的幾種典型的OO方法方法方法的異同方法的異同體現(xiàn)于:體現(xiàn)于:概念概念表示法表示法系統(tǒng)模型系統(tǒng)模型開發(fā)過程開發(fā)過程可用
59、性可用性技術(shù)支持技術(shù)支持2022-2-1550北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計Booch方法方法必要時使用必要時使用用于分析和設(shè)計用于分析和設(shè)計6種模型圖種模型圖基本圖基本圖通常不可缺少通常不可缺少類圖類圖對象圖對象圖模塊圖模塊圖進(jìn)程圖進(jìn)程圖只用于設(shè)計只用于設(shè)計補充圖補充圖狀態(tài)轉(zhuǎn)移圖狀態(tài)轉(zhuǎn)移圖交互圖交互圖模型圖模型圖2022-2-1551北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計開發(fā)期望行為模型(分析)建立體系結(jié)構(gòu)(設(shè)計)逐漸形成實現(xiàn)(演化)建立核心需求(概念化)(a) 宏過程識別類和對象識別類和對象的語義識別類和對象的關(guān)系說明類和對象的接口和實現(xiàn)(b) 微過程管理交付后的演
60、化(維護(hù))特點:特點:思想活躍,開拓與創(chuàng)新思想活躍,開拓與創(chuàng)新可操作性不夠強可操作性不夠強類圖與對象圖并存類圖與對象圖并存過程過程Booch方法(續(xù))方法(續(xù))2022-2-1552北京大學(xué)信息學(xué)院研究生課程面向?qū)ο蟮姆治雠c設(shè)計主題層主題層類及對象層類及對象層結(jié)構(gòu)層結(jié)構(gòu)層屬性層屬性層服務(wù)層服務(wù)層OOA模型的模型的5個層次個層次主題層主題層類及對象層類及對象層結(jié)構(gòu)層結(jié)構(gòu)層屬性層屬性層服務(wù)層服務(wù)層人機交互部分(HIC)問題域部分(PDC)任務(wù)管理部分(TMC)數(shù)據(jù)管理部分(DMC)OOD模型的模型的5個層次和個層次和4個部分個部分Coad/Yourdon方法方法特點:特點:概念簡練,過程清晰概念簡練,過程清晰強調(diào)
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房東房屋出租合同模板
- 重慶市農(nóng)村住房租賃合同
- 二零二四年度養(yǎng)殖行業(yè)勞動聘用合同范本6篇
- 植物園藝術(shù)涂料施工協(xié)議
- 金融服務(wù)居間協(xié)議意向書
- 2025年度鋼釘鐵釘行業(yè)技術(shù)標(biāo)準(zhǔn)制定合同4篇
- 環(huán)境監(jiān)測及治理服務(wù)協(xié)議
- 物聯(lián)網(wǎng)智能家居設(shè)備采購合同
- 自然資源開發(fā)合同
- 精密機械加工合作風(fēng)險免責(zé)協(xié)議
- 《openEuler操作系統(tǒng)》考試復(fù)習(xí)題庫(含答案)
- 《天潤乳業(yè)營運能力及風(fēng)險管理問題及完善對策(7900字論文)》
- 醫(yī)院醫(yī)學(xué)倫理委員會章程
- xx單位政務(wù)云商用密碼應(yīng)用方案V2.0
- 北師大版五年級上冊數(shù)學(xué)期末測試卷及答案共5套
- 2024-2025學(xué)年人教版生物八年級上冊期末綜合測試卷
- 2025年九省聯(lián)考新高考 語文試卷(含答案解析)
- 全過程工程咨詢投標(biāo)方案(技術(shù)方案)
- 心理健康教育學(xué)情分析報告
- 農(nóng)民專業(yè)合作社財務(wù)報表(三張報表)
- 安宮牛黃丸的培訓(xùn)
評論
0/150
提交評論