面向?qū)ο蟮某绦蛟O(shè)計原理與技術(shù)_第1頁
面向?qū)ο蟮某绦蛟O(shè)計原理與技術(shù)_第2頁
面向?qū)ο蟮某绦蛟O(shè)計原理與技術(shù)_第3頁
面向?qū)ο蟮某绦蛟O(shè)計原理與技術(shù)_第4頁
面向?qū)ο蟮某绦蛟O(shè)計原理與技術(shù)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1首都師范大學(xué)教育技術(shù)系首都師范大學(xué)教育技術(shù)系方海光方海光2007年年9月月面向?qū)ο蟮某绦蛟O(shè)計原理與技術(shù)面向?qū)ο蟮某绦蛟O(shè)計原理與技術(shù)2http:/ 課件存放位置課件存放位置3第一章第一章 面向過程與面向?qū)ο蟮某绦蛟O(shè)計面向過程與面向?qū)ο蟮某绦蛟O(shè)計本章的主要目的是本章的主要目的是理解理解面向過程的程序設(shè)計面向過程的程序設(shè)計和面向?qū)ο蟮某绦蛟O(shè)計在本質(zhì)上有什么和面向?qū)ο蟮某绦蛟O(shè)計在本質(zhì)上有什么不同不同。主要從以下幾個方面來講解:主要從以下幾個方面來講解:計算機的工作過程計算機的工作過程面向過程的程序設(shè)計面向過程的程序設(shè)計面向?qū)ο蟮某绦蛟O(shè)計面向?qū)ο蟮某绦蛟O(shè)計4計算機的工作過程計算機的工作過程例:計算圓面

2、積。例:計算圓面積。 s=3.14*r*r5輸入設(shè)備輸入設(shè)備程序程序原始數(shù)據(jù)原始數(shù)據(jù)內(nèi)內(nèi)存存儲儲器器原始數(shù)據(jù)原始數(shù)據(jù)運算器運算器結(jié)果結(jié)果結(jié)果結(jié)果輸出設(shè)備輸出設(shè)備外存儲器外存儲器控制器控制器計算機的工作過程計算機的工作過程基本結(jié)構(gòu)圖基本結(jié)構(gòu)圖程程序序6計算機的工作過程計算機的工作過程 計算機在程序的控制下解題計算機在程序的控制下解題 程序設(shè)計語言的發(fā)展經(jīng)歷了五代(前三代程序設(shè)計語言的發(fā)展經(jīng)歷了五代(前三代語言編寫的程序本質(zhì)上是相同的,都是按語言編寫的程序本質(zhì)上是相同的,都是按照機器的工作過程來編寫,只不過程序的照機器的工作過程來編寫,只不過程序的描述語句越來越接近人的思維,通用性越描述語句越來越

3、接近人的思維,通用性越來越強)來越強)第一代為機器語言第一代為機器語言第二代為匯編語言第二代為匯編語言第三代語言為高級語言第三代語言為高級語言第四代語言為面向?qū)ο蟮挠嬎銠C語言第四代語言為面向?qū)ο蟮挠嬎銠C語言第五代語言是按人工智能原理設(shè)計的語第五代語言是按人工智能原理設(shè)計的語言言7面向過程的程序設(shè)計面向過程的程序設(shè)計 下面用面向過程的語言解題下面用面向過程的語言解題標(biāo)準(zhǔn)標(biāo)準(zhǔn)C語言源程序語言源程序#include void main() float r,s; printf(Input r:); scanf(%f,&r); s=3.14*r*r; printf(The area is:%fn,s);

4、8例例11 Page2例例12 Page39面向過程的程序設(shè)計面向過程的程序設(shè)計人模擬計算機思維來解題(輸入人模擬計算機思維來解題(輸入-運算運算-輸出)輸出)程序設(shè)計工作主要圍繞解題過程的設(shè)計程序設(shè)計工作主要圍繞解題過程的設(shè)計程序功能隱含在程序代碼中程序功能隱含在程序代碼中理解困難理解困難維護(修改)困難維護(修改)困難10面向過程的程序設(shè)計面向過程的程序設(shè)計 在長期的軟件開發(fā)實踐中,人們總結(jié)出了在長期的軟件開發(fā)實踐中,人們總結(jié)出了一些設(shè)計原理和系統(tǒng)化的方法,包括:一些設(shè)計原理和系統(tǒng)化的方法,包括:模塊化模塊化:如函數(shù):如函數(shù)抽象抽象 :忽略事物間的差異,集中和概括共性的方忽略事物間的差異,

5、集中和概括共性的方面,例如復(fù)雜問題抽象為用較自然的語面,例如復(fù)雜問題抽象為用較自然的語句來表示;句來表示;自頂向下的程序設(shè)計方法就是一個從抽象自頂向下的程序設(shè)計方法就是一個從抽象到具體的過程。到具體的過程。11面向過程的程序設(shè)計面向過程的程序設(shè)計信息隱藏信息隱藏:如局部變量:如局部變量模塊獨立模塊獨立:高內(nèi)聚和松耦合高內(nèi)聚和松耦合 內(nèi)聚:內(nèi)部元素間結(jié)合的緊密程度;內(nèi)聚:內(nèi)部元素間結(jié)合的緊密程度; 耦合:模塊間互相依賴的緊密程度。耦合:模塊間互相依賴的緊密程度。結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)程序設(shè)計:自頂向下逐步求精的設(shè)自頂向下逐步求精的設(shè)計方法、單入口單出口的控制結(jié)構(gòu)計方法、單入口單出口的控制結(jié)構(gòu) 一句話:

6、一句話:功能分解功能分解或算法分解或算法分解12面向?qū)ο蟮某绦蛟O(shè)計面向?qū)ο蟮某绦蛟O(shè)計 人類習(xí)慣的解決問題的方法:人類習(xí)慣的解決問題的方法:“顧客顧客-服服務(wù)員務(wù)員”的工作模式的工作模式。例:去理發(fā)館理發(fā)例:去理發(fā)館理發(fā) 面向?qū)ο蟮姆椒M人類習(xí)慣的解題方法面向?qū)ο蟮姆椒M人類習(xí)慣的解題方法,用用對象分解對象分解取代功能分解,程序中的所有取代功能分解,程序中的所有對象對象分工協(xié)作分工協(xié)作,共同完成整個程序的功能,共同完成整個程序的功能。13面向?qū)ο蟮某绦蛟O(shè)計面向?qū)ο蟮某绦蛟O(shè)計 面向?qū)ο蠓椒ǖ乃膫€要點:面向?qū)ο蠓椒ǖ乃膫€要點: (1)面向?qū)ο蟮能浖到y(tǒng)由對象組成;)面向?qū)ο蟮能浖到y(tǒng)由對象組成;

7、 (2)所有的對象劃分為對象類,每個類由數(shù)據(jù))所有的對象劃分為對象類,每個類由數(shù)據(jù)和方法組成;和方法組成; (3)若干個類按照子類(派生類)與父類(基)若干個類按照子類(派生類)與父類(基類)的關(guān)系組成了層次結(jié)構(gòu);類)的關(guān)系組成了層次結(jié)構(gòu);-繼承,如汽車?yán)^承,如汽車與交通工具;與交通工具; (4)對象之間通過傳遞消息互相聯(lián)系。)對象之間通過傳遞消息互相聯(lián)系。OO=對象對象+類類+繼承繼承+消息消息 14面向?qū)ο蟮某绦蛟O(shè)計面向?qū)ο蟮某绦蛟O(shè)計 面向?qū)ο蠓椒ǖ膬?yōu)點面向?qū)ο蠓椒ǖ膬?yōu)點 (1)與人的思維習(xí)慣一致)與人的思維習(xí)慣一致 (2)穩(wěn)定性好)穩(wěn)定性好 (3)可重用性好)可重用性好 (4)可維護性好

8、)可維護性好 15 例例13 Page6 161 1 對對 象象 對象相當(dāng)于現(xiàn)實世界中的實體對象相當(dāng)于現(xiàn)實世界中的實體 對象對象=屬性屬性 + 方法方法數(shù)據(jù)數(shù)據(jù)操作操作內(nèi)部操作內(nèi)部操作1內(nèi)部操作內(nèi)部操作2數(shù)據(jù)數(shù)據(jù)公有公有操作操作1公有公有操作操作217對象的定義對象的定義 對象是一個封裝體,封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這對象是一個封裝體,封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作。些數(shù)據(jù)結(jié)構(gòu)上的操作。 對象有對象名;對象有對象名; 對象中的數(shù)據(jù)表示對象的狀態(tài),對象中的數(shù)據(jù)表示對象的狀態(tài),一個對象的狀態(tài)只能一個對象的狀態(tài)只能由該對象本身的操作來改變由該對象本身的操作來改變。 對象向外界提供一組

9、服務(wù)(即公有的操作),稱為與對象向外界提供一組服務(wù)(即公有的操作),稱為與外界的接口。外界的接口。對對 象象18對象的特點:對象的特點: 以數(shù)據(jù)為中心以數(shù)據(jù)為中心 對象是主動的對象是主動的 實現(xiàn)了數(shù)據(jù)封裝實現(xiàn)了數(shù)據(jù)封裝 本質(zhì)上具有并行性本質(zhì)上具有并行性 模塊獨立性好模塊獨立性好對對 象象192 2 其他面向?qū)ο蟮母拍钇渌嫦驅(qū)ο蟮母拍?類(類(Class)是對具有相同數(shù)據(jù)屬性和相同操作的一個或一組是對具有相同數(shù)據(jù)屬性和相同操作的一個或一組(集合)相似對象的描述,是一個(集合)相似對象的描述,是一個抽象的概念抽象的概念。 類與函數(shù)的不同:類與函數(shù)的不同: 類類 封裝了函數(shù)與數(shù)據(jù)封裝了函數(shù)與數(shù)據(jù)

10、是對問題的抽象描述是對問題的抽象描述 函數(shù)函數(shù) 封裝了語句與數(shù)據(jù)封裝了語句與數(shù)據(jù) 完成特定的功能完成特定的功能例:大小不同、位置不一和顏色不同的圓,可以定義為例:大小不同、位置不一和顏色不同的圓,可以定義為一個一個Circle類。類。例:中國人例:中國人20 實例(實例(Instance) 是由某個特定的類所描述的是由某個特定的類所描述的一個具體的對一個具體的對象象。“對象對象”這個術(shù)語,既可以指一個具體的這個術(shù)語,既可以指一個具體的對象,也可以泛指一般的對象,對象,也可以泛指一般的對象,“實例實例”這個術(shù)語,必然是指一個具體的對象。這個術(shù)語,必然是指一個具體的對象。 C+中,要定義一個對象或

11、實例,必須中,要定義一個對象或?qū)嵗?,必須先建立一個這類對象的類。先建立一個這類對象的類。基本概念基本概念21 屬性(屬性(Attribute) 類中所定義的數(shù)據(jù),它是對客觀世界實體所類中所定義的數(shù)據(jù),它是對客觀世界實體所具有的性質(zhì)的抽象。類的每個實例都有自己特具有的性質(zhì)的抽象。類的每個實例都有自己特有的屬性值。有的屬性值。 例:圓類(半徑、位置、顏色)例:圓類(半徑、位置、顏色) 在在C+ C+ 語言中把屬性稱為數(shù)據(jù)成員。語言中把屬性稱為數(shù)據(jù)成員。基本概念基本概念22 方法(方法(MethodMethod)對象所能執(zhí)行的操作,它應(yīng)用于類或被類中對象使用。對象所能執(zhí)行的操作,它應(yīng)用于類或被類中對

12、象使用。 在在C+中稱為成員函數(shù)。中稱為成員函數(shù)。通常,一個函數(shù)對應(yīng)一個通常,一個函數(shù)對應(yīng)一個操作,實現(xiàn)一個功能。操作,實現(xiàn)一個功能。例:圓對象響應(yīng)顯示圓的消息例:圓對象響應(yīng)顯示圓的消息 在在CircleCircle類中必須定義能夠顯示這個圓的方法,類中必須定義能夠顯示這個圓的方法,即編寫成員函數(shù)即編寫成員函數(shù)Show(intShow(int color) color)?;靖拍罨靖拍?3消息(消息(MessageMessage)對象之間相互請求相互協(xié)作的途徑對象之間相互請求相互協(xié)作的途徑 一個消息由下述三部分組成:一個消息由下述三部分組成:(1 1)接收消息的對象;)接收消息的對象;(2

13、2)消息選擇符(也稱為消息名);)消息選擇符(也稱為消息名);(3 3)零個或多個變元。)零個或多個變元。 例如例如 : MyCircle.Show(GREENMyCircle.Show(GREEN) ) ; 其中:其中: MyCircleMyCircle是接收消息的對象的名字是接收消息的對象的名字 ShowShow是消息選擇符(即消息名)是消息選擇符(即消息名) GREENGREEN是消息的變元。是消息的變元。 基本概念基本概念24 封裝性(封裝性(Encapsulation) 封裝即把數(shù)據(jù)和實現(xiàn)操作的代碼集中起來封裝即把數(shù)據(jù)和實現(xiàn)操作的代碼集中起來放在對象內(nèi)部,外界通過對象提供的接口來使放

14、在對象內(nèi)部,外界通過對象提供的接口來使用它,不需知道內(nèi)部數(shù)據(jù)結(jié)構(gòu)細節(jié)和實現(xiàn)操作用它,不需知道內(nèi)部數(shù)據(jù)結(jié)構(gòu)細節(jié)和實現(xiàn)操作的算法的算法 。 實現(xiàn)封裝的條件實現(xiàn)封裝的條件 :(1)有一個清楚的邊界)有一個清楚的邊界(2)有確定的接口(用于接受用戶發(fā)送的消息)有確定的接口(用于接受用戶發(fā)送的消息)(3)受保護的內(nèi)部實現(xiàn))受保護的內(nèi)部實現(xiàn) 封裝的好處就是實現(xiàn)了信息隱藏,把對象封裝的好處就是實現(xiàn)了信息隱藏,把對象的實現(xiàn)細節(jié)對外界隱藏起來了,提高安全性。的實現(xiàn)細節(jié)對外界隱藏起來了,提高安全性。在在C+中,通過定義類來實現(xiàn)封裝。中,通過定義類來實現(xiàn)封裝?;靖拍罨靖拍?5 繼承(繼承(Inheritance

15、) 指能夠直接獲得已有的性質(zhì)和特征,而不必重指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。是復(fù)定義它們。是子類子類自動地共享自動地共享基類基類中定義的中定義的數(shù)據(jù)和方法數(shù)據(jù)和方法的機制。的機制。 例:家族關(guān)系例:家族關(guān)系 繼承具有傳遞性,如果類繼承具有傳遞性,如果類C C繼承類繼承類B B,類,類B B繼繼承類承類A A,則類,則類C C繼承類繼承類A A。一個類除了具有該類。一個類除了具有該類所描述的性質(zhì)外,還具有該類上層全部基類描所描述的性質(zhì)外,還具有該類上層全部基類描述的一切性質(zhì)。述的一切性質(zhì)。基本概念基本概念26 多態(tài)性多態(tài)性(Polymorphism )(Polymorphis

16、m ) 在類等級的不同層次中,在類等級的不同層次中,相同的消息相同的消息,被,被不同類不同類的對象接收,產(chǎn)生了的對象接收,產(chǎn)生了不同的行為不同的行為。 例:例:“打打” 好處:增加軟件系統(tǒng)的靈活性,減少了信好處:增加軟件系統(tǒng)的靈活性,減少了信息冗余,提高了軟件的可重用性和可擴充性。息冗余,提高了軟件的可重用性和可擴充性。 在在C+ 語言中,多態(tài)性是通過虛函數(shù)來實現(xiàn)語言中,多態(tài)性是通過虛函數(shù)來實現(xiàn)的。(動態(tài)聯(lián)編)的。(動態(tài)聯(lián)編)基本概念基本概念27重載(重載(OverloadingOverloading) 有兩種重載:有兩種重載: 函數(shù)重載函數(shù)重載是指在同一作用域內(nèi)的若干個是指在同一作用域內(nèi)的若

17、干個參參數(shù)特征不同的函數(shù)數(shù)特征不同的函數(shù)可以使用可以使用相同的函數(shù)名字相同的函數(shù)名字;例:例: 運算符重載運算符重載是指是指同一個運算符同一個運算符可以施加于可以施加于不同類型的操作數(shù)不同類型的操作數(shù)上面。上面。 例:例: coutcout“2”;“2”;表示向屏幕輸出字符串表示向屏幕輸出字符串2 2 x x2;2;表示將表示將x x中的二進制左移中的二進制左移2 2位位基本概念基本概念28 在在C+C+語言中函數(shù)重載是通過語言中函數(shù)重載是通過靜態(tài)聯(lián)編靜態(tài)聯(lián)編實實現(xiàn)的,也就是在編譯時根據(jù)函數(shù)變元的現(xiàn)的,也就是在編譯時根據(jù)函數(shù)變元的個個數(shù)和類型數(shù)和類型 ,決定到底使用函數(shù)的哪個實,決定到底使用函

18、數(shù)的哪個實現(xiàn)代碼;對于重載的運算符,在編譯時根現(xiàn)代碼;對于重載的運算符,在編譯時根據(jù)被操作數(shù)的類型,決定使用該算符的哪據(jù)被操作數(shù)的類型,決定使用該算符的哪種語義。種語義。 基本概念基本概念293 面向?qū)ο蠼C嫦驅(qū)ο蠼?什么是模型什么是模型 使用模型的好處使用模型的好處 三種模型三種模型 模型的表示模型的表示30面向?qū)ο蠼C嫦驅(qū)ο蠼?為什么要建模?為什么要建模? 完全、徹底地完全、徹底地理解問題理解問題 什么是模型?什么是模型? 對事物的一種對事物的一種抽象抽象,由一組圖示符號和組,由一組圖示符號和組織這些符號的規(guī)則組成。目的:理解事物。織這些符號的規(guī)則組成。目的:理解事物。如下圖:如下

19、圖:31面向?qū)ο蠼C嫦驅(qū)ο蠼2块T部門工人工人經(jīng)理經(jīng)理項目項目 項目名 項目名 預(yù)算 預(yù)算 優(yōu)先級 優(yōu)先級產(chǎn)品產(chǎn)品 產(chǎn)品名 產(chǎn)品名 成本 成本 重量 重量員工員工 姓名 姓名 地址 地址 身份證號碼 身份證號碼 工資 工資公司公司 名字 名字 電話號碼 電話號碼 主要產(chǎn)品 主要產(chǎn)品 地址 地址 雇用 雇用 解雇 解雇部門名部門名職務(wù)職務(wù)參加參加1+1+主持主持管理 0,1管理 0,1生產(chǎn)生產(chǎn)為之工作為之工作1+1+1+1+1+1+1+1+一家公司的對象模型一家公司的對象模型32面向?qū)ο蠼嫦驅(qū)ο蠼D?用面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常要建立三用面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常要建立三種形式的模型:種形

20、式的模型: 對象模型對象模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu):描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu) 動態(tài)模型動態(tài)模型:描述系統(tǒng)控制結(jié)構(gòu):描述系統(tǒng)控制結(jié)構(gòu) 功能模型功能模型:描述系統(tǒng)功能:描述系統(tǒng)功能334 對象模型對象模型 對象模型表示系統(tǒng)的靜態(tài)結(jié)構(gòu),描述了對對象模型表示系統(tǒng)的靜態(tài)結(jié)構(gòu),描述了對象、對象間的關(guān)系。象、對象間的關(guān)系。 建立對象模型用到的圖形符號:建立對象模型用到的圖形符號: (1)表示類的符號(包括屬性和服務(wù))表示類的符號(包括屬性和服務(wù)) (2)表示類實例的符號)表示類實例的符號 (3)表示類間關(guān)系的符號)表示類間關(guān)系的符號344.1 4.1 表示表示類類& &對象對象的圖形符號的圖形符號(p12)(p12)

21、類類&對象:含義是對象:含義是“一個類及屬于該類的一個類及屬于該類的對象對象 ” 35例:計算圓的面積。例:計算圓的面積。表示表示類類& &對象對象的圖形符號的圖形符號圓圓圓的半徑圓的半徑計算圓面積計算圓面積顯示圓面積顯示圓面積圓圓圓的半徑圓的半徑計算圓面積計算圓面積顯示圓面積顯示圓面積36 類的命名規(guī)則類的命名規(guī)則 類名應(yīng)富有描述性、簡潔且無二義性,命名時類名應(yīng)富有描述性、簡潔且無二義性,命名時應(yīng)該遵守以下幾條準(zhǔn)則:應(yīng)該遵守以下幾條準(zhǔn)則: (1)使用標(biāo)準(zhǔn)術(shù)語使用標(biāo)準(zhǔn)術(shù)語 (2)使用具有確切含義的名詞使用具有確切含義的名詞 (3)必要時用名詞短語作名字:如公司員工必要時用名詞短語作名字:如公司

22、員工表示表示類類& &對象對象的圖形符號的圖形符號374.2 表示類間關(guān)系的符號表示類間關(guān)系的符號 類間、對象間的關(guān)系可以概括為類間、對象間的關(guān)系可以概括為泛化關(guān)泛化關(guān)系、組合關(guān)系系、組合關(guān)系及及關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系三種關(guān)系三種關(guān)系 1. 泛化關(guān)系:泛化關(guān)系:“是一種是一種”(ISA) “一般一般特殊特殊”關(guān)系,關(guān)系,反映了一個反映了一個類與若干個互不相容的子類之間的分類類與若干個互不相容的子類之間的分類關(guān)系關(guān)系。高層類(即基類或超類)說明一。高層類(即基類或超類)說明一般(公共)的屬性,低層類(即派生類般(公共)的屬性,低層類(即派生類或子類)說明特殊屬性。或子類)說明特殊屬性。 38一般化類一

23、般化類具體類1具體類1具體類2具體類2表示歸納關(guān)系的圖形符號表示歸納關(guān)系的圖形符號半圓形半圓形表明泛表明泛化關(guān)系化關(guān)系的方向:的方向:從半圓從半圓弧中點弧中點引出的引出的直線指直線指到一般到一般化的類。化的類。表示歸納關(guān)系的圖形符號表示歸納關(guān)系的圖形符號39 例:例:表示泛化關(guān)系的圖形符號表示泛化關(guān)系的圖形符號圖形圖形顏色顏色中心位置中心位置筆粗細筆粗細筆類型筆類型移動(移動(move)選擇(選擇(select)旋轉(zhuǎn)(旋轉(zhuǎn)(rotate)顯示(顯示(display)0維維1維維定位定位放大放大2維維定位定位填充類型填充類型放大填充放大填充點點顯示顯示線線終點終點顯示顯示弧弧半徑半徑開始角開始角

24、弧角弧角顯示顯示多邊形多邊形邊數(shù)邊數(shù)頂點頂點顯示顯示圓圓直徑直徑顯示顯示旋轉(zhuǎn)旋轉(zhuǎn)402.組合關(guān)系組合關(guān)系 組合關(guān)系就是組合關(guān)系就是“整體整體部分部分”關(guān)系,關(guān)系,它它反映了反映了對象之間對象之間的構(gòu)成關(guān)系的構(gòu)成關(guān)系。組合關(guān)。組合關(guān)系也稱為聚集關(guān)系。系也稱為聚集關(guān)系。 在在C+語言中,通常是在一個類中包語言中,通常是在一個類中包含另一個類的對象成員來實現(xiàn)這種關(guān)系。含另一個類的對象成員來實現(xiàn)這種關(guān)系。類間關(guān)系類間關(guān)系41整體整體部分1部分1部分2部分21,m1,m0,n0,n上部:整體對象上部:整體對象 下部:部分對象下部:部分對象 標(biāo)值:該端對象的數(shù)量(省略為標(biāo)值:該端對象的數(shù)量(省略為1 1)

25、三角形:組合關(guān)系的方向(從三角形頂角引出的線指向三角形:組合關(guān)系的方向(從三角形頂角引出的線指向整體對象,從三角形底邊中點畫出的線連到部分對象)整體對象,從三角形底邊中點畫出的線連到部分對象)表示組合關(guān)系的圖形符號表示組合關(guān)系的圖形符號42 例:例:表示組合關(guān)系的圖形符號表示組合關(guān)系的圖形符號教材教材封面封面前言前言目錄目錄章章習(xí)題習(xí)題節(jié)節(jié)1,n433.關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系 關(guān)聯(lián)關(guān)系反映對象之間相互依賴、相關(guān)聯(lián)關(guān)系反映對象之間相互依賴、相互作用的關(guān)系。通常把兩類對象之間的互作用的關(guān)系。通常把兩類對象之間的二元關(guān)系再細分為一對一(二元關(guān)系再細分為一對一(1:1)、一)、一對多(對多(1:M)和多對多

26、()和多對多(M :N)等三)等三種基本類型種基本類型 。類間關(guān)系類間關(guān)系44二元關(guān)聯(lián)的二元關(guān)聯(lián)的5 5個要素:個要素:連線:連線:連線端點所在的位置表明,這是連線端點所在的位置表明,這是對象(而不是類)之間的映射關(guān)系。對象(而不是類)之間的映射關(guān)系。 類間關(guān)系類間關(guān)系- -關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系教師教師書書1+45 階階 參與關(guān)聯(lián)的對象的個數(shù)。階用標(biāo)在連參與關(guān)聯(lián)的對象的個數(shù)。階用標(biāo)在連線端點的單個數(shù)字或數(shù)值區(qū)間表示。例線端點的單個數(shù)字或數(shù)值區(qū)間表示。例如,如,“1+”1+”(一個或多個),(一個或多個),“3 3,5”5”(3 3至至5 5)等)等 。表示類間關(guān)系的圖形符號表示類間關(guān)系的圖形符號4

27、6 鏈屬性鏈屬性 鏈屬性就是關(guān)聯(lián)鏈的性質(zhì)鏈屬性就是關(guān)聯(lián)鏈的性質(zhì)。例如,計算機中。例如,計算機中每個用戶對不同文件擁有不同的訪問權(quán)限,訪每個用戶對不同文件擁有不同的訪問權(quán)限,訪問權(quán)限就是文件與用戶之間的關(guān)聯(lián)鏈的屬性。問權(quán)限就是文件與用戶之間的關(guān)聯(lián)鏈的屬性。文件文件用戶用戶 鏈屬性之例 鏈屬性之例訪問權(quán)限訪問權(quán)限1+1+1+1+表示類間關(guān)系的圖形符號表示類間關(guān)系的圖形符號47 限定限定 一個受限的關(guān)聯(lián)由兩個對象及一個限一個受限的關(guān)聯(lián)由兩個對象及一個限定詞組成。定詞組成??梢园严薅ㄔ~看作是一種特可以把限定詞看作是一種特殊的鏈屬性殊的鏈屬性。目 錄目 錄文 件文 件文件名文件名受限關(guān)聯(lián)受限關(guān)聯(lián)表示類間

28、關(guān)系的圖形符號表示類間關(guān)系的圖形符號48 消息連接消息連接 反映了一個對象對另一個對象的處理反映了一個對象對另一個對象的處理依賴性依賴性。發(fā)送者接收者表示消息連接的圖形符號表示類間關(guān)系的圖形符號表示類間關(guān)系的圖形符號49例例1:一家公司的對象模型。該公司有許多:一家公司的對象模型。該公司有許多部門,每個部門由一名經(jīng)理管理,也有的經(jīng)部門,每個部門由一名經(jīng)理管理,也有的經(jīng)理不管理任何部門,每個部門生產(chǎn)多種產(chǎn)品,理不管理任何部門,每個部門生產(chǎn)多種產(chǎn)品,每種產(chǎn)品僅由一個部門生產(chǎn)。公司有許多員每種產(chǎn)品僅由一個部門生產(chǎn)。公司有許多員工為之工作,員工分為工人和經(jīng)理,每名工工為之工作,員工分為工人和經(jīng)理,每名

29、工人可參加多個項目,每個項目需要多個工人人可參加多個項目,每個項目需要多個工人參與,每位經(jīng)理可主持多個項目,每個項目參與,每位經(jīng)理可主持多個項目,每個項目由一位經(jīng)理主持。由一位經(jīng)理主持。4.3 對象模型例子對象模型例子50部門部門工人工人經(jīng)理經(jīng)理項目項目 項目名 項目名 預(yù)算 預(yù)算 優(yōu)先級 優(yōu)先級產(chǎn)品產(chǎn)品 產(chǎn)品名 產(chǎn)品名 成本 成本 重量 重量員工員工 姓名 姓名 地址 地址 身份證號碼 身份證號碼 工資 工資公司公司 名字 名字 電話號碼 電話號碼 主要產(chǎn)品 主要產(chǎn)品 地址 地址 雇用 雇用 解雇 解雇部門名部門名職務(wù)職務(wù)參加參加1+1+主持主持管理 0,1管理 0,1生產(chǎn)生產(chǎn)為之工作為之工

30、作1+1+1+1+1+1+1+1+一家公司的對象模型一家公司的對象模型對象模型例子對象模型例子515 面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?OOA) 什么是面向?qū)ο蠓治觯渴裁词敲嫦驅(qū)ο蠓治觯?抽取和整理用戶需求并抽取和整理用戶需求并建立問題域精確模建立問題域精確模型型的過程的過程。 面向?qū)ο蠓治龉ぷ鞔篌w上按照下列順序進面向?qū)ο蠓治龉ぷ鞔篌w上按照下列順序進行:行: (1)尋找尋找類類&對象對象 (2)識別結(jié)構(gòu)識別結(jié)構(gòu) (3)定義屬性定義屬性 (4)定義服務(wù)定義服務(wù) 52OOAOOA第一步:確定第一步:確定類類& &對象對象1、找出候選找出候選的類的類&對象對象有兩種方法:有兩種方法:(1)找出問題域中的五類

31、事物作為候選類)找出問題域中的五類事物作為候選類&對象對象 可感知的物理實體,如書、汽車可感知的物理實體,如書、汽車 人或組織的角色,如教師、雇員人或組織的角色,如教師、雇員 應(yīng)該記憶的事件,如演出、訪問應(yīng)該記憶的事件,如演出、訪問 兩個或多個對象的相互作用,通常具有交易或接觸兩個或多個對象的相互作用,通常具有交易或接觸的性質(zhì),如購買,結(jié)婚的性質(zhì),如購買,結(jié)婚 需要說明的概念,如政策需要說明的概念,如政策(2)將需求分析中的)將需求分析中的名詞或名詞短語名詞或名詞短語作為候選者作為候選者53例例1:各劇院的演出售票預(yù)訂系統(tǒng):各劇院的演出售票預(yù)訂系統(tǒng)按第一種方法,得到候選的類按第一種方法,得到候

32、選的類-&-對象為:對象為: 劇院、演出、票、預(yù)訂、系統(tǒng)劇院、演出、票、預(yù)訂、系統(tǒng)例例2: 按第二種方法,得到候選的類按第二種方法,得到候選的類-&-對象為:對象為:公司、部門、經(jīng)理、產(chǎn)品、員工、工人、公司、部門、經(jīng)理、產(chǎn)品、員工、工人、項目項目面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?42 2、篩選篩選出正確的類出正確的類& &對象對象從候選的類從候選的類& &對象中去掉不正確或不必要對象中去掉不正確或不必要的類的類& &對象,主要遵循下列原則:對象,主要遵循下列原則: 冗余冗余的:兩個類名表示了相同的信息的:兩個類名表示了相同的信息 無關(guān)無關(guān)的:的: 籠統(tǒng)籠統(tǒng)的(模糊的):用精確的代替的(模糊的):用精確

33、的代替 屬性屬性:去掉無關(guān)的屬性:去掉無關(guān)的屬性 操作操作:動詞定義的操作是否作為類?如撥號:動詞定義的操作是否作為類?如撥號 實現(xiàn)實現(xiàn):分析階段少或不考慮怎樣實現(xiàn)目標(biāo)系:分析階段少或不考慮怎樣實現(xiàn)目標(biāo)系統(tǒng)統(tǒng)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治鯫OA55OOA第二步:確定關(guān)聯(lián)第二步:確定關(guān)聯(lián) 兩個或多個對象之間的相互依賴、相互作兩個或多個對象之間的相互依賴、相互作用的關(guān)系就是關(guān)聯(lián)。用的關(guān)系就是關(guān)聯(lián)。 關(guān)聯(lián)關(guān)系的確定關(guān)聯(lián)關(guān)系的確定(1)抽取需求陳述中使用的描述性動詞或)抽取需求陳述中使用的描述性動詞或動詞詞組動詞詞組(2)找到隱含的關(guān)聯(lián)關(guān)系)找到隱含的關(guān)聯(lián)關(guān)系(3)補充一些必要的關(guān)聯(lián)關(guān)系)補充一些必要的關(guān)聯(lián)

34、關(guān)系(4)去掉不正確或不必要的關(guān)聯(lián))去掉不正確或不必要的關(guān)聯(lián)56例:例例:例2得到類間的關(guān)系為:得到類間的關(guān)系為: 動詞動詞 相關(guān)類相關(guān)類 關(guān)系關(guān)系 有有 公司和部門間公司和部門間 組合組合/受限關(guān)聯(lián)受限關(guān)聯(lián) 管理管理 部門和經(jīng)理部門和經(jīng)理 0/1:1 生產(chǎn)生產(chǎn) 部門和產(chǎn)品部門和產(chǎn)品 1:N 為之工作為之工作 公司和員工公司和員工 1:N 分為分為 員工和工人員工和工人 ISA(泛化)(泛化) 員工和經(jīng)理員工和經(jīng)理 ISA(泛化)(泛化) 參加參加 工人和項目工人和項目 N:N 主持主持 經(jīng)理和項目經(jīng)理和項目 1:N面向?qū)ο蠓治雒嫦驅(qū)ο蠓治鯫OA57OOA第三步:確定屬性第三步:確定屬性 屬性

35、是對象的特性屬性是對象的特性 屬性的確定屬性的確定 分析:需求陳述中的名詞詞組表示屬性,分析:需求陳述中的名詞詞組表示屬性,形容詞作為確定屬性的線索,如畫一個紅形容詞作為確定屬性的線索,如畫一個紅色的圓;色的圓; 選擇:刪去不正確和不必要的屬性選擇:刪去不正確和不必要的屬性58OOA第四步:識別繼承關(guān)系第四步:識別繼承關(guān)系一般說來,可以使用兩種方式建立繼承關(guān)系:一般說來,可以使用兩種方式建立繼承關(guān)系: (1)自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛)自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個過程實質(zhì)上模擬了人類化出父類,這個過程實質(zhì)上模擬了人類歸歸納納思維過程。思維過程。(2)自頂向下:把現(xiàn)有

36、類細化成更具體的子)自頂向下:把現(xiàn)有類細化成更具體的子類,這模似了人類的類,這模似了人類的演繹演繹思維過程。思維過程。如:頭與眼、鼻、耳、嘴之間是組合關(guān)系如:頭與眼、鼻、耳、嘴之間是組合關(guān)系 人、男人、男孩是繼承關(guān)系人、男人、男孩是繼承關(guān)系59OOA第五步:確定操作第五步:確定操作 對象對象=數(shù)據(jù)數(shù)據(jù)+操作操作 在確定類中應(yīng)該有的服務(wù)時,既要考慮在確定類中應(yīng)該有的服務(wù)時,既要考慮該類實體的常規(guī)行為,又要考慮為完成本該類實體的常規(guī)行為,又要考慮為完成本系統(tǒng)功能所需要提供的操作。系統(tǒng)功能所需要提供的操作。606 面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計(OOD) 把分析階段得到的需求轉(zhuǎn)變成符合成本把分析階段得到的

37、需求轉(zhuǎn)變成符合成本和質(zhì)量要求的、抽象的程序?qū)崿F(xiàn)方案的過和質(zhì)量要求的、抽象的程序?qū)崿F(xiàn)方案的過程。程。 是一個逐漸擴充模型的過程。是一個逐漸擴充模型的過程。 在實際的軟件開發(fā)過程中分析和設(shè)計的界在實際的軟件開發(fā)過程中分析和設(shè)計的界限是模糊的限是模糊的, ,許多分析結(jié)果可以直接映射許多分析結(jié)果可以直接映射成設(shè)計結(jié)果,而在設(shè)計過程中又往往會加成設(shè)計結(jié)果,而在設(shè)計過程中又往往會加深和補充對系統(tǒng)需求的理解,從而進一步深和補充對系統(tǒng)需求的理解,從而進一步完善分析結(jié)果。完善分析結(jié)果。 。61面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計(OOD)OODOOD主要完成下述工作:主要完成下述工作:1.1.建立類等級建立類等級 面向?qū)ο?/p>

38、程序的一個突出優(yōu)點來面向?qū)ο蟪绦虻囊粋€突出優(yōu)點來源于繼承性。應(yīng)該盡量抽取出相似類源于繼承性。應(yīng)該盡量抽取出相似類的的公共屬性和公共服務(wù),以建立這些公共屬性和公共服務(wù),以建立這些相似類的父類相似類的父類,并,并在類等級的適當(dāng)層在類等級的適當(dāng)層次中正確地定義各個屬性和服務(wù)次中正確地定義各個屬性和服務(wù)。62面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計(OOD)定義屬性定義屬性 所謂定義屬性就是要確定每個屬性的數(shù)所謂定義屬性就是要確定每個屬性的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),同時還要確定每個屬性據(jù)類型和數(shù)據(jù)結(jié)構(gòu),同時還要確定每個屬性的的訪問權(quán)限訪問權(quán)限(通常被定義在保護部分或私有通常被定義在保護部分或私有部分部分)。)。3 3定義操

39、作定義操作 63面向?qū)ο蟮脑O(shè)計原則面向?qū)ο蟮脑O(shè)計原則 模塊化:對象就是模塊。模塊化:對象就是模塊。 抽象:類是一種抽象數(shù)據(jù)類型抽象:類是一種抽象數(shù)據(jù)類型 信息隱藏:信息隱藏通過對象的封裝性實現(xiàn)信息隱藏:信息隱藏通過對象的封裝性實現(xiàn) 弱耦合弱耦合 強內(nèi)聚強內(nèi)聚 可重用可重用64 耦合:一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連耦合:一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連的緊密程度。的緊密程度。 弱耦合是優(yōu)秀設(shè)計的一個重要標(biāo)準(zhǔn)。弱耦合是優(yōu)秀設(shè)計的一個重要標(biāo)準(zhǔn)。 在面向?qū)ο蠓椒ㄖ?,對象是最基本的模塊,在面向?qū)ο蠓椒ㄖ?,對象是最基本的模塊,因此,耦合主要指不同對象之間相互關(guān)聯(lián)因此,耦合主要指不同對象之間相互關(guān)聯(lián)的緊密程度。的緊密程度。 對象之間的耦合可分為兩大類對象之間的耦合可分為兩大類 :交互耦合、:交互耦合、繼承耦合。繼承耦合。面向?qū)ο蟮脑O(shè)計原則面向?qū)ο蟮脑O(shè)計原則-弱耦

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論