




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言C+電子科技大學(xué)計(jì)算機(jī)學(xué)院陳文宇1一章 引論 1.1 面向?qū)ο蟮哪繕?biāo)傳統(tǒng)的程序設(shè)計(jì)方法是模塊化(或結(jié)構(gòu)化)的,具體步驟為:1.整個(gè)軟件系統(tǒng)功能逐步細(xì)化為多個(gè)小的功能功能劃分。2.多個(gè)小的功能對(duì)應(yīng)由一個(gè)模塊(如函數(shù)、過(guò)程、分程序、子程序等)來(lái)實(shí)現(xiàn)。3.多個(gè)模塊合作完成較大的功能,所有模塊的合作完成整個(gè)軟件系統(tǒng)的功能。3第一章 引論1.1 面向?qū)ο蟮哪繕?biāo) 對(duì)于傳統(tǒng)的程序設(shè)計(jì),在設(shè)計(jì)和實(shí)現(xiàn)(編程)階段考慮的是模塊,程序本身也是由模塊構(gòu)成的。 由數(shù)據(jù)類型來(lái)引出面向?qū)ο蟮母拍?。?shù)據(jù)類型是一個(gè)抽象的概念,包含有一組數(shù)據(jù)的定義和一組對(duì)該組數(shù)據(jù)操作的定義。 對(duì)于數(shù)
2、據(jù)類型的使用,必須通過(guò)類型的實(shí)際例子(實(shí)例/實(shí)體,即變量或常量)來(lái)體現(xiàn)。4第一章 引論 1.1 面向?qū)ο蟮哪繕?biāo)數(shù)據(jù)類型分為三種: 簡(jiǎn)單數(shù)據(jù)類型:內(nèi)建(built-in)類型,語(yǔ)言本身提供的類型。 用戶定義數(shù)據(jù)類型:以簡(jiǎn)單數(shù)據(jù)類型為基礎(chǔ),它包含多個(gè)簡(jiǎn)單數(shù)據(jù)類型成分,這些數(shù)據(jù)成分是可以直接操作的。 抽象數(shù)據(jù)類型:在定義數(shù)據(jù)的同時(shí),必須定義對(duì)數(shù)據(jù)的操作;它的數(shù)據(jù)成分是不可見的,也不可以直接操作。5第一章 引論 1.1 面向?qū)ο蟮哪繕?biāo)抽象數(shù)據(jù)類型隱藏了表示的細(xì)節(jié),通過(guò)過(guò)程(或方法)來(lái)訪問(wèn)抽象數(shù)據(jù)對(duì)象。對(duì)象和抽象類型的關(guān)系,就像整型變量和整型的關(guān)系。6第一章 引論 1.1 面向?qū)ο蟮哪繕?biāo) 面向?qū)ο笳Z(yǔ)言中
3、的對(duì)象,就是抽象類型的實(shí)體,具體的說(shuō),是“將某組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作封裝在一起而形成的一個(gè)實(shí)體”。7第一章 引論 1.1 面向?qū)ο蟮哪繕?biāo)面向?qū)ο蟮幕舅枷刖褪前岩獦?gòu)造的系統(tǒng)表示為對(duì)象的集合,它的目的是想在某種程度上解決軟件開發(fā)面臨的兩大課題: 怎樣克服軟件的復(fù)雜性 怎樣將現(xiàn)實(shí)世界模型(包括它們之間的關(guān)系)在計(jì)算機(jī)中自然地表示出來(lái)8第一章 引論 1.1 面向?qū)ο蟮哪繕?biāo) 從軟件的角度來(lái)看,計(jì)算是一種仿真。 如果每一個(gè)被仿真的實(shí)體都由一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)表示,并且將相關(guān)的操作信息封裝進(jìn)去,仿真將被簡(jiǎn)化,可以更方便地刻畫對(duì)象的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律。 面向?qū)ο缶褪沁@樣一種適用于直觀模型化的設(shè)計(jì)方法。這
4、意味著設(shè)計(jì)模型與客觀對(duì)象之間有近乎一對(duì)一的對(duì)應(yīng)關(guān)系。這一思想非常利于實(shí)現(xiàn)大型的軟件系統(tǒng)。9第一章 引論 1.1 面向?qū)ο蟮哪繕?biāo)作為克服軟件復(fù)雜性的手段,在面向?qū)ο蟮姆椒ㄖ?,利用了如下?duì)象的性質(zhì):1.將密切相關(guān)的數(shù)據(jù)和過(guò)程封裝成為一個(gè)實(shí)體;2.定義了一個(gè)實(shí)體后,即使不知道此實(shí)體的功能是怎樣實(shí)現(xiàn)的,也能使用它。10第一章 引論 1.1 面向?qū)ο蟮哪繕?biāo) 面向?qū)ο笤O(shè)計(jì)非常注重設(shè)計(jì)方法。實(shí)際上,用面向?qū)ο蠓椒ň幊痰年P(guān)鍵是模型化。 程序員的責(zé)任是構(gòu)造現(xiàn)實(shí)的軟件模型。此時(shí),計(jì)算機(jī)的觀點(diǎn)是不重要的,而現(xiàn)實(shí)的觀點(diǎn)才是關(guān)鍵。11第一章 引論 1.1 面向?qū)ο蟮哪繕?biāo) 面向?qū)ο蟮哪繕?biāo)可以歸納為: 對(duì)試圖利用計(jì)算機(jī)進(jìn)行
5、問(wèn)題求解和信息處理的領(lǐng)域,盡量使用對(duì)象的概念,將問(wèn)題空間中的現(xiàn)實(shí)模型映射到程序空間。 由此得到的自然性可望克服軟件的復(fù)雜性,從而得到問(wèn)題得求解和信息處理的高性能。12第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.1 數(shù)據(jù)封裝數(shù)據(jù)封裝 Data Encapsulation 面向過(guò)程語(yǔ)言的做法13第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.1 數(shù)據(jù)封裝數(shù)據(jù)封裝 Data Encapsulation 面向過(guò)程語(yǔ)言的做法:實(shí)例14第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.1 數(shù)據(jù)封裝數(shù)據(jù)封裝 Data Encapsulation 面向?qū)ο笳Z(yǔ)言的做法15第一章 引論 1.2 面向
6、對(duì)象語(yǔ)言的核心概念1.2.1 數(shù)據(jù)封裝數(shù)據(jù)封裝 Data Encapsulation 面向?qū)ο笳Z(yǔ)言的做法:實(shí)例16第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.1 數(shù)據(jù)封裝數(shù)據(jù)封裝 Data Encapsulation面向?qū)ο笳Z(yǔ)言采用了抽象的方法。而抽象的原則之一就是信息隱藏。數(shù)據(jù)封裝將一組數(shù)據(jù)和這組數(shù)據(jù)相關(guān)的操作集合封裝在一起,形成了一個(gè)能動(dòng)的實(shí)體,成為對(duì)象。用戶不必知道對(duì)象行為的實(shí)現(xiàn)細(xì)節(jié),只需根據(jù)對(duì)象提供的外部特性接口訪問(wèn)對(duì)象。在C+中,實(shí)現(xiàn)數(shù)據(jù)封裝的機(jī)制是“類(class)”。在Java和C#中,實(shí)現(xiàn)數(shù)據(jù)封裝的機(jī)制也是“類(class)”。17第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核
7、心概念1.2.2 繼承繼承 Inheritance繼承是面向?qū)ο笳Z(yǔ)言的另一個(gè)重要的概念。在客觀世界中,存在著兩類關(guān)系 整體和部分的關(guān)系(is part of) 一般和特殊的關(guān)系(is kind of) 。18第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.2 繼承繼承 Inheritance讓我們來(lái)看看現(xiàn)實(shí)世界中的例子:19第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.2 繼承繼承 Inheritance 在一個(gè)的繼承樹中,每下一層都比上一層更加具體地定義了每種類的特性。 反過(guò)來(lái),一旦某層的某個(gè)特征被確定了下來(lái),那么其下所有的種類都應(yīng)該包含該特性。 這就是“繼承”的一般性概念。20第
8、一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.2 繼承繼承 Inheritance在面向?qū)ο蟮恼Z(yǔ)言中,類功能支持繼承機(jī)制。除了根類,每個(gè)類都可以有父類或基類,也可以有它的子類或派生類。 一個(gè)子類從它的父類那里繼承了所有的數(shù)據(jù)和操作,并擴(kuò)充自己的特殊數(shù)據(jù)和操作。父類抽象出共同特征,子類表達(dá)差別。21第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.2 繼承繼承 Inheritance要注意區(qū)分:is part of 和 is kind of后者才是繼承的概念。 Kind of is a kind of . Part ofWheels are part of a car.Wheel is n
9、ot a kind of car.22第一章 引論1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.3 多態(tài)性多態(tài)性 Poly-morphism多態(tài),是指一個(gè)名字(或符號(hào))具有多種含義。 用戶在使用函數(shù)編程時(shí),關(guān)心的是該函數(shù)的功能及其使用接口,并不需要了解該函數(shù)的使用接口與函數(shù)的哪一種實(shí)現(xiàn)方法相匹配(binding)。 在設(shè)計(jì)這一級(jí)上,只關(guān)心“施加在對(duì)象上的動(dòng)作是什么”,而不必牽涉“如何實(shí)現(xiàn)這個(gè)動(dòng)作”以及“實(shí)現(xiàn)這個(gè)動(dòng)作有多少種方法”的細(xì)節(jié)。23第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.3 多態(tài)性多態(tài)性 Poly-morphism1.函數(shù)重載在面向?qū)ο蟮恼Z(yǔ)言中,函數(shù)重載(overload)表達(dá)了最
10、簡(jiǎn)單的多態(tài)性(同名函數(shù))。void value(int);Int value( );24第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.3 多態(tài)性多態(tài)性 Poly-morphism2.運(yùn)算符重載運(yùn)算符重載指的是相同的運(yùn)算符在不同的上下文有不同的解釋。例如:兩個(gè)整數(shù)使用+運(yùn)算符表示它們要做加法,而兩個(gè)字符串可以使用+運(yùn)算符則表示串連接。C+為運(yùn)算符重載提供了完整的語(yǔ)法支持。25第一章 引論 1.2 面向?qū)ο笳Z(yǔ)言的核心概念1.2.3 多態(tài)性多態(tài)性 Poly-morphism如果函數(shù)調(diào)用(接口)與哪個(gè)函數(shù)實(shí)現(xiàn)相匹配是在編譯時(shí)完成的,稱為早期匹配或靜態(tài)聯(lián)編。如果匹配是在運(yùn)行時(shí)確定的,則稱為后期匹配
11、或動(dòng)態(tài)聯(lián)編。C+的虛函數(shù)提供了后期匹配帶來(lái)的良好特性。26第一章 引論 1.3 按對(duì)象方式思維面向?qū)ο笫且环N仿真技術(shù),面向?qū)ο笤O(shè)計(jì)產(chǎn)生一種與現(xiàn)實(shí)具有自然關(guān)系的軟件系統(tǒng)。面向過(guò)程的程序設(shè)計(jì)方法鼓勵(lì)全局地看問(wèn)題,強(qiáng)調(diào)系統(tǒng)功能的逐步細(xì)化。而在面向?qū)ο蟪绦蛟O(shè)計(jì)中,每個(gè)對(duì)象嚴(yán)格地是局部的。每個(gè)對(duì)象管理自己的實(shí)現(xiàn)。學(xué)習(xí)面向?qū)ο笤O(shè)計(jì),需要將思維方式從全局轉(zhuǎn)到局部,在局部中發(fā)現(xiàn)對(duì)象。27第一章 引論 1.3 按對(duì)象方式思維設(shè)計(jì)對(duì)象需要做許多小決策,怎樣將計(jì)算部分合理地分配給不同的對(duì)象。這叫做分散責(zé)任。這是設(shè)計(jì)決策的基礎(chǔ),其余都是次要的。CRC方法幫助設(shè)計(jì)者分散責(zé)任,直到設(shè)計(jì)的最后階段才考慮問(wèn)題的總體。28第一
12、章 引論 1.3 按對(duì)象方式思維面向?qū)ο蟮腃RC方法從三個(gè)方面來(lái)表述對(duì)象:1.Class Name。給對(duì)象命名,實(shí)際上就是對(duì)需要處理的問(wèn)題空間中包含的不同性質(zhì)的數(shù)據(jù)進(jìn)行分類。 一個(gè)好的具有一致性的名字會(huì)為以后設(shè)計(jì)的正確性奠定基礎(chǔ)。29第一章 引論 1.3 按對(duì)象方式思維面向?qū)ο蟮腃RC方法從三個(gè)方面來(lái)表述對(duì)象:2.Responsibilities。每個(gè)對(duì)象完成設(shè)計(jì)中的一個(gè)小目標(biāo)的功能,它實(shí)現(xiàn)了這個(gè)系統(tǒng)狀態(tài)的某一部分。 責(zé)任要簡(jiǎn)明扼要,不要太多,同時(shí)不要讓對(duì)象負(fù)責(zé)自己不需要承擔(dān)的責(zé)任。30第一章 引論 1.3 按對(duì)象方式思維面向?qū)ο蟮腃RC方法從三個(gè)方面來(lái)表述對(duì)象:3.Collaborators
13、。每個(gè)對(duì)象都可能依賴于其它對(duì)象來(lái)完成任務(wù)。 合作者應(yīng)該不要多,并且應(yīng)該實(shí)用。盡量避免設(shè)計(jì)同所有對(duì)象打交道的也就是全局的對(duì)象。31第一章 引論 1.4 面向?qū)ο蟮乃枷牒头椒?.4.1 面向?qū)ο笫且环N認(rèn)知方法學(xué) 人們的認(rèn)識(shí)過(guò)程,主要有以下兩種方法。 從一般到特殊的演繹方法。 從特殊到一般的歸納方法。 面向?qū)ο筇峁┝藦囊话愕教厥獾难堇[手段,又提供了從特殊到一般的歸納形式,從而說(shuō)明它是一種很好的認(rèn)知方法。 這種分類、歸納的方法在面向?qū)ο笤O(shè)計(jì)技術(shù)中是很重要的。321.4.2 面向?qū)ο笈c軟件IC類概念支持類概念支持 “軟件軟件 IC” 技術(shù)技術(shù)在面向?qū)ο笳Z(yǔ)言中,類充當(dāng)了系統(tǒng)構(gòu)造的單元類是一類對(duì)象的統(tǒng)一模板
14、,它具有很強(qiáng)的模塊性、獨(dú)立性何可靠性類是對(duì)象一級(jí)的抽象,它將一類對(duì)象的數(shù)據(jù)結(jié)構(gòu)和功能實(shí)現(xiàn)封裝起來(lái),使得外界不必清楚其內(nèi)部實(shí)現(xiàn),只要從它的說(shuō)明中了解其基本功能就可以使用它。另外,類支持代碼共享,類中的代碼均是可再入的,這也支持了可重用性。因此類作為 “軟件 IC” 來(lái)組織軟件系統(tǒng)從概念上是非常合適的。1.4.3 面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化程序設(shè)計(jì)方法 結(jié)構(gòu)程序設(shè)計(jì)強(qiáng)調(diào)了功能抽象和模塊性,解決問(wèn)題的過(guò)程看作是一個(gè)處理過(guò)程。 面向?qū)ο蟪绦蛟O(shè)計(jì)則綜合了功能抽象和數(shù)據(jù)抽象,它將解決問(wèn)題的過(guò)程看作是一個(gè)分類演繹的過(guò)程。 1.4.4 對(duì)象是抽象數(shù)據(jù)類型的實(shí)現(xiàn) 抽象是一個(gè)系統(tǒng)的簡(jiǎn)化描述,它強(qiáng)調(diào)了系統(tǒng)的某些特性而忽略
15、了其他特性。對(duì)于用戶來(lái)說(shuō),所關(guān)心的是程序能做什么,而不是它的實(shí)現(xiàn)細(xì)節(jié)。 而抽象恰好可以用來(lái)對(duì)用戶所關(guān)心的重要信息予以強(qiáng)調(diào),而忽略不重要的信息。 整個(gè)程序設(shè)計(jì)語(yǔ)言(甚至軟件開發(fā))的發(fā)展過(guò)程就是抽象層次不斷提高的過(guò)程。 1.4.4 對(duì)象是抽象數(shù)據(jù)類型的實(shí)現(xiàn) 為了完全、準(zhǔn)確、無(wú)二義地描述數(shù)據(jù)類型,而不愿涉及其物理表示和實(shí)現(xiàn)的細(xì)節(jié),采用抽象數(shù)據(jù)類型的描述技術(shù)。 抽象數(shù)據(jù)類型包含的信息有: 外部不可見的數(shù)據(jù) 外部不可見的操作的實(shí)現(xiàn)細(xì)節(jié) 外部可見的施于數(shù)據(jù)上的各操作界面(接口) 于是,將數(shù)據(jù)類型抽象為提供給外部世界的數(shù)據(jù)和操作集。使用了抽象數(shù)據(jù)類型描述,不再關(guān)心數(shù)據(jù)結(jié)構(gòu)是什么,而僅僅關(guān)心它具有些什么功能可用。這與信息隱藏原則很符合。 總之,抽象數(shù)據(jù)類型從外部觀點(diǎn)來(lái)描述數(shù)據(jù)類型: 僅關(guān)心各種有用的操作和這些操作的性質(zhì)??梢姡橄髷?shù)據(jù)類型描述的信息與對(duì)象包含的信息是一致的,對(duì)象是抽象數(shù)據(jù)類型的實(shí)現(xiàn)。第一章 引論 1.5 類屬類屬并不是面向?qū)ο笳Z(yǔ)言特有的成分,它指的是類型參數(shù)化,即參數(shù)化一個(gè)軟件分量的能力。C語(yǔ)言沒有類屬的能力,但可以通過(guò)C的宏定義來(lái)模擬類屬。C+采用模板來(lái)實(shí)現(xiàn)類屬。在現(xiàn)代的編程思想中,用“泛型”的概念來(lái)代替類屬,同時(shí)具有更廣泛
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四平職業(yè)大學(xué)《計(jì)算方法概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 茂名職業(yè)技術(shù)學(xué)院《建筑工程經(jīng)濟(jì)管理與法規(guī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 三亞中瑞酒店管理職業(yè)學(xué)院《食品科技》2023-2024學(xué)年第二學(xué)期期末試卷
- 荊楚理工學(xué)院《能源低碳技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河套學(xué)院《合唱與指揮Ⅳ》2023-2024學(xué)年第二學(xué)期期末試卷
- 早期教育嬰幼兒衛(wèi)生與保健
- 公共衛(wèi)生服務(wù)規(guī)范解讀
- 中秋晚會(huì)流程策劃書
- 心理健康課件教學(xué)
- 大學(xué)生命安全教育主題班會(huì)
- 裝飾、裝修施工方案
- 礦井瓦斯抽采
- 施工現(xiàn)場(chǎng)安全檢查記錄表(周)以及詳細(xì)記錄
- 立法學(xué)完整版教學(xué)課件全套ppt教程
- 五年級(jí)下冊(cè)科學(xué)說(shuō)課課件 -1.2 沉浮與什么因素有關(guān) |教科版 (共28張PPT)
- 流動(dòng)注射分析儀常見問(wèn)題解決方案.
- 《出口報(bào)關(guān)單模板》word版
- 邊坡護(hù)坡檢驗(yàn)批表格模板
- 工會(huì)會(huì)計(jì)制度——會(huì)計(jì)科目和會(huì)計(jì)報(bào)表(全)
- 馬清河灌區(qū)灌溉系統(tǒng)的規(guī)劃設(shè)計(jì)課程設(shè)計(jì)
- 《Monsters 怪獸》中英對(duì)照歌詞
評(píng)論
0/150
提交評(píng)論