




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件工程導(dǎo)論第13課,第 9 章 面向?qū)ο蠓椒▽W(xué)引論,發(fā)展概述,面向?qū)ο蟛⒎鞘且粋€新的概念,實際上它已有30多年的歷史。尋其根源可追溯到60年代的挪威,當(dāng)時挪威計算中心的Kristen Nygaard和Ole-Johan Dahl開發(fā)了一種稱作Simula67的語言。Simula67首次引入了類、協(xié)同程序和子類的概念,這很象今天的面向?qū)ο笳Z言。 70年代中期,Xerox Palo Alto研究中心的研究人員設(shè)計了Smalltalk語言,該語言的每個元素都被當(dāng)作一個對象來實現(xiàn),其程序設(shè)計環(huán)境及相關(guān)的各個方面都是面向?qū)ο蟮摹?但是,面向?qū)ο蟮耐茝V很慢。例如:Samlltalk的成果直到1981年8
2、月因Byte雜志的介紹才為外界所知,許多軟件開發(fā)人員了解Samlltalk時,都把它看作是一個窗口系統(tǒng),而不是程序設(shè)計技術(shù)的一次革命。 80年代,C成為很受歡迎的程序設(shè)計語言,它不僅可用在微機(jī)上,還可用在多種結(jié)構(gòu)的系統(tǒng)和環(huán)境中。80年代早期,AT&T貝爾實驗室的Bjarne Stroustrup把C語言擴(kuò)展為支持面向?qū)ο蟪绦蛟O(shè)計的C+。在C+中,程序員可以在其熟悉的語言環(huán)境下學(xué)習(xí)掌握面向?qū)ο蟮某绦蛟O(shè)計技術(shù),而不必去探究一種新的語言和環(huán)境。,自90年代以來,軟件與硬件之間的差距至少有兩代處理器之多,并且這種差距還在增大。當(dāng)軟件系統(tǒng)變得更加復(fù)雜時,常規(guī)軟件工具、技術(shù)和概念已不足以應(yīng)付,從而使軟件開
3、發(fā)者陷入了困境。但面向?qū)ο蟮姆椒軌蚩刂栖浖膹?fù)雜性,從而促進(jìn)了面向?qū)ο蟮陌l(fā)展,掀起了一股“面向?qū)ο蟆睙帷?9.1.1 面向?qū)ο蠓椒▽W(xué)的要點(diǎn),OOM的出發(fā)點(diǎn)和基本原則: 盡可能模擬人類習(xí)慣的思維方式,使描述問題的問題空間與實現(xiàn)解法的解空間在結(jié)構(gòu)上盡可能一致。 面向?qū)ο蠓椒ㄊ且环N以數(shù)據(jù)和信息為主線,把數(shù)據(jù)和處理相結(jié)合的方法: 面向?qū)ο蠓椒ò褜ο笞鳛橛蓴?shù)據(jù)及可以施加在這些數(shù)據(jù)上的操作所構(gòu)成的統(tǒng)一體,9.1.1 面向?qū)ο蠓椒▽W(xué)的要點(diǎn),解空間與問題空間的“語義斷層” 對象 解空間對象和問題空間對象 解空間對象的呆板 問題空間對象具有靜態(tài)屬性又具有動態(tài)行為,OOM的4個要素,(1)對象(object):
4、世界由對象組成。 (2)類(class) :具有相同屬性和操作的對象可劃分為類; 單個對象可視為某一類的實例(instance) (3)繼承(inheritance):類可分層下層子類與上層父類有相同特征,稱為繼承 (4)消息(message):對象間只能通過發(fā)送消息進(jìn)行聯(lián)系, 外界不能處理對象的內(nèi)部數(shù)據(jù),只能通過消息,基于對象(objectsbased)方法 使用對象-消息 基于類(class-based)方法 使用類-對象-消息 面向?qū)ο螅╫bjects-based)方法 使用類-對象-消息-繼承,9.1.2 面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn),與人類習(xí)慣的思維方式一致 穩(wěn)定性好 可重用性好 可維護(hù)性好
5、 注意:OOM并不是減少了開發(fā)時間,而是通過提高可重用性、可維護(hù)性,進(jìn)行擴(kuò)充和修改的容易程度等,從長遠(yuǎn)角度改進(jìn)了軟件的質(zhì)量。,1 與人類習(xí)慣的思維方式一致,傳統(tǒng)方法:面向過程設(shè)計,以計算為核心,數(shù)據(jù)與操作分離,不易理解。 OOM:以object 為核心, 基本原理:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題,強(qiáng)調(diào)對現(xiàn)實概念的模擬而不強(qiáng)調(diào)算法。 面向?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方式建立問題域的模型,開發(fā)出盡可 能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)。 Class:由特殊到一般的歸納(induction) Inheritance:由一般到特殊的演繹(deduction),2 穩(wěn)
6、定性好,傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。 OOM:以object模擬實體,以對象間的聯(lián)系刻畫實體間的聯(lián)系。需求變化不會引起結(jié)構(gòu)的整體變化,只需做一些局部修改。因為實體相對穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。,3 可重用性好,傳統(tǒng)方法:通過建立標(biāo)準(zhǔn)函數(shù)庫來重用軟構(gòu)件。但標(biāo) 準(zhǔn)函數(shù)缺少必要的“柔性”,難以適應(yīng)不同場合的不同需要。 OOM:封裝性,信息隱蔽,獨(dú)立性 靈活性:一個class所有的instances 都可重用它的代碼;由派生出的新的class 可重用其父類的代碼,并且可以修改、擴(kuò)充而不影響其父類的使用。,4 較易開發(fā)大型軟件產(chǎn)品,構(gòu)成軟件系統(tǒng)的每個對象就象一個微型程序,有自己的數(shù)據(jù)、操作、功能、用
7、途。把一個大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品處理,降低了技術(shù)難度。 便于管理,5 可維護(hù)性好,傳統(tǒng)方法:可維護(hù)性是最令人頭痛的問題。 OOM:從以下幾方面改善了可維護(hù)性 (1)穩(wěn)定性好:需求的變化不牽動全局,只需局部修改; (2)容易修改:Class 獨(dú)立性強(qiáng):只要修改不涉及class的對外接口,則內(nèi)部修改完全不影響外部調(diào)用; 繼承(Inheritance)和多態(tài)性(polymorphism)使其易被修改和擴(kuò)充; (3)容易理解、容易測試、調(diào)試,5 可維護(hù)性好,(3)容易理解 符合人的思維習(xí)慣,軟件系統(tǒng)結(jié)構(gòu)與問題空間的結(jié)構(gòu)基本一致,便于理解 派生類只要理解新生部分,理解量少 (4)
8、容易測試、調(diào)試 調(diào)試只對新派生類進(jìn)行,類獨(dú)立性強(qiáng),只對類內(nèi)部進(jìn)行調(diào)試,比較容易。,9.2 面向?qū)ο蟮母拍?9.2.1 對象 在應(yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何事物都可以作為對象,對象既可以是具體的物理實體的抽象,也可以是人為的 概念,或者是任何有明確邊界和意義的東西。 例如,一名職工、一家公司、一個窗口、一座圖書館、一本圖書、貸款、借款等等,都可以作為一個對象。,9.2.1 對象,由于客觀世界中的實體通常都具有靜態(tài)的屬性,又具有動態(tài)的行為 面向?qū)ο蠓椒▽W(xué)中的對象是由描述該對象屬性數(shù)據(jù)以及可以對這些數(shù)據(jù)施加的所有操作封裝在一起的統(tǒng)一體。 從形式化角度看: 對象:= 其中:ID是對
9、象的標(biāo)識或名字,MS是對象中的數(shù)據(jù)集合,DS是對象中的數(shù)據(jù)結(jié)構(gòu),MI是對象受理的消息名集合。,1 對象的形象表示 對象很像錄音機(jī),2 對象的定義,從不同的角度給對象不同的定義 定義1:對象是具有相同狀態(tài)的一組操作的集合。 定義2:對象是對問題域中某個東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個東西的信息或與它交互的 能力 定義3:對象:=,依次表示名字操作集合數(shù)據(jù)結(jié)構(gòu) 對外接口,3對象特點(diǎn),以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作; Object主動處理而不被動地等待被處理,外部只能通過message請求操作; 具有封裝性:外部操作時,無須知道該object 內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法; 具有并行性:不同o
10、bject各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信; 模塊獨(dú)立性好:內(nèi)聚強(qiáng)、耦合松,9.2.2其他概念,1 類:是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。 例 人、圓 是對象的抽象,是一種對象模型 2 實例:是由某個特定的類所描述的一個具體對象。 類是建立對象時使用的模板,用這個模板建立的一個具體對象,就是類的實例。 對象既可以是一個具體的對象,也可以泛指一般的對象;而實例只能是一個具體的對象。,3消息:是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。由3部分組成:接受消息的對象、消息選擇符(名)、零個和多個變元。 4方法:是對象所能執(zhí)行的操作;即類
11、中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法,響應(yīng)消息的方法。 5 屬性:是類中所定義的數(shù)據(jù),是對客觀實體所具有的性質(zhì)的抽象,6封裝:是把某個事務(wù)包起來,使外界不知道該事物的具體內(nèi)容。 封裝的條件: (1)有一個清晰的邊界 (2)有確定的接口。接口就是對象可以接受的消息。 (3)受保護(hù)的內(nèi)部實現(xiàn),繼承繼繼承繼7 繼承,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制,其特性是:一個類的上層可以有父類,下層可以有子類。 繼承具有傳遞性,如果類C繼承類B,類B繼承類A,則類C繼承類A。 當(dāng)類等級為樹形結(jié)構(gòu)時,類的繼承是單繼承;當(dāng)允許一個類有多個父親時,類的繼承是多重繼承。,繼承性的優(yōu)點(diǎn),共享程序代
12、碼和數(shù)據(jù)結(jié)構(gòu),大大減少程序中的冗余信息,提高軟件的可重用性。 便于軟件修改維護(hù)。當(dāng)需要擴(kuò)充原有的功能時,派生類的方法可以調(diào)用其基類的方法,并在此基礎(chǔ)上增加必要的程序代碼;當(dāng)需要完全改變原有的算法時,可以在派生類中實現(xiàn)一個與基類方法同名而算法不同的方法;當(dāng)需要增加新的功能時,可以在派生類中實現(xiàn)一個新的方法。 “站在巨人的肩頭上”。用戶在開發(fā)新系統(tǒng)時不必從零開始,可以繼承原有相似功能或者從類庫中選取需要的類,再派生新類。,8 多態(tài)性,多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。 在C+語言中,多態(tài)性是通過虛函數(shù)來實現(xiàn)的。虛函數(shù)機(jī)制使得程序員能在一個
13、類等級中使用相同函數(shù)的 多個不同版本,稱為動態(tài)聯(lián)遍,也叫滯后聯(lián)編。 多態(tài)性機(jī)制不僅增加了面向?qū)ο筌浖撵`活性,進(jìn)一 步減少了信息冗余,而且顯著提高了軟件可重用性和 可擴(kuò)充性。,9 重載,函數(shù)重載是指在同一作用域內(nèi)的若干個參數(shù)特征不同 的函數(shù)可以使用相同的函數(shù)名字 運(yùn)算符重載是指同一個運(yùn)算符可以施加與不同類型的 操作數(shù)上面,當(dāng)參數(shù)類型不同或被操作數(shù)的類型不同 時,實現(xiàn)函數(shù)的算法或運(yùn)算符的語義是不相同的 在C+語言中函數(shù)重載是通過靜態(tài)聯(lián)編(也叫先前聯(lián)編)實現(xiàn)的,也就是在編譯時根據(jù)函數(shù)變元的個數(shù)和 類型,決定到底使用函數(shù)的哪個實現(xiàn)代碼;對于重載 的運(yùn)算符,同樣是在編譯時根據(jù)被操作數(shù)的類型,決 定使用
14、該運(yùn)算符的哪種語義,9.3 面向?qū)ο蠼?為了更好地理解問題,采用建立模型的方法 模型是為了理解事物而對事物作的一種抽象,是對事物的一種無歧義的書面描述。 模型是一種把知識規(guī)范地表示出來的工具, 用面向?qū)ο蟮姆椒ń⒛P?9.3 面向?qū)ο蠼?用面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常要建立3種形式的模型: 描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型 描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型 描述系統(tǒng)功能的功能模型 一個典型的軟件系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動態(tài)模型),并完成數(shù)據(jù)值的變化(功能模型),9.4 對象模型,關(guān)于建模語言 模型通常由一組圖示符號和組成這些符號的規(guī)則組成, 定義和描述問題域的術(shù)語和概念 為建立模型,需
15、要用適當(dāng)?shù)恼Z言來表達(dá)模型 建模語言由記號(即模型中使用的符號)和使用這些記號的規(guī)則(語法、語義)組成,9.4.1 類圖的基本符號,類圖描述類、類與類之間的靜態(tài)關(guān)系,是一種靜態(tài)模型,是創(chuàng)建其他UML圖的基礎(chǔ) 一個系統(tǒng)由多張類圖來描述,一個類也可以出現(xiàn)在幾張類圖中,1 定義類,UML中類的圖形符號為長方形,用兩條橫線把長方形分成上、中、下3個區(qū)域(下面兩個區(qū)域可以省略) 為類命名時應(yīng)該遵守以下幾條準(zhǔn)則: (1)使用標(biāo)準(zhǔn)術(shù)語 (2)使用具有確切含義的名詞 (3)必要時用名詞短語作為名字,2 定義屬性,UML描述屬性的語法如下: 可見性 屬性名:類型名=初值性質(zhì)串 屬性的可見性(即可訪問性)通常有下述
16、3種: 公有的(public) (+) 私有的(private) (-) 保護(hù)的(protected)(#) 類型名表示該屬性的數(shù)據(jù)類型,它可以是基本數(shù)據(jù)類型,也可以是用戶自定義的類型 用花括號括起來的性質(zhì)串明列出該屬性所有可能的取值 例:-管理員:String“未定”,3 定義服務(wù),UML描述操作的語法格式如下: 可見性 操作名(參數(shù)表):返回值類型性質(zhì)串 操作可見性的定義方法與屬性相同。 參數(shù)表是用逗號分隔的形式參數(shù)的序列。描述一個參數(shù)的語法如下: 參數(shù)名:類型名默認(rèn)值 當(dāng)操作的調(diào)用者未提供實在參數(shù)時,該參數(shù)就使用默認(rèn)值。,9.4.2 表示關(guān)系的符號,類與類之間通常有關(guān)聯(lián)、泛化(繼承)、依賴和細(xì)化等4種關(guān)系 1 關(guān)聯(lián) 關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國民航大學(xué)《房屋建筑學(xué)雙語》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川應(yīng)用技術(shù)職業(yè)學(xué)院《臨床免疫學(xué)及檢驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西省高安市第四中學(xué)2024-2025學(xué)年初三2月化學(xué)試題模擬試題含解析
- 漯河職業(yè)技術(shù)學(xué)院《綜合商務(wù)英語(1)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州澍青醫(yī)學(xué)高等??茖W(xué)?!夺t(yī)療與生育保障》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西農(nóng)業(yè)大學(xué)附屬學(xué)校2025屆初三3月線上考試化學(xué)試題含解析
- 浙江傳媒學(xué)院《控制論基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南省勐??h第三中學(xué)2025年高中畢業(yè)生班階段性測試(三)英語試題含解析
- 銅仁幼兒師范高等??茖W(xué)校《經(jīng)典創(chuàng)業(yè)案例分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江東方職業(yè)技術(shù)學(xué)院《預(yù)防醫(yī)學(xué)創(chuàng)新實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 化學(xué)合成反應(yīng)中的選擇性控制
- 第三單元+人民當(dāng)家作主 整體教學(xué)設(shè)計 統(tǒng)編版道德與法治八年級下冊
- 教科版小學(xué)科學(xué)六年級下冊單元練習(xí)試題及答案(全冊)
- 嘉峪關(guān)的壯麗長城之旅
- 李大釗簡介完
- 中考英語閱讀理解:圖表類(附參考答案)
- 農(nóng)作物病蟲害防治服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 掃地機(jī)器人創(chuàng)業(yè)項目計劃書
- 【班級管理表格】學(xué)生檢討反思承諾書
- GSV2.0反恐安全管理手冊
- 應(yīng)用文寫作說課稿 終稿
評論
0/150
提交評論