




已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
面向對象程序設計語言C+,電子科技大學計算機學院 陳文宇,1,B1-513,第一章 引論,1.1 面向對象的目標 傳統(tǒng)的程序設計方法是模塊化(或結構化)的,具體步驟為: 1.整個軟件系統(tǒng)功能逐步細化為多個小的功能功能劃分。 2.每個小的功能對應由一個模塊(如函數(shù)、過程、分程序、子程序等)來實現(xiàn)。 3.多個模塊合作完成較大的功能,所有模塊的合作完成整個軟件系統(tǒng)的功能。,3,第一章 引論,1.1 面向對象的目標 對于傳統(tǒng)的程序設計,在設計和實現(xiàn)(編程)階段考慮的是模塊,程序本身也是由模塊構成的。 面向對象的概念與(抽象)數(shù)據(jù)類型有關。 數(shù)據(jù)類型是一個抽象的概念,包含有一組數(shù)據(jù)的定義和一組對該組數(shù)據(jù)操作的定義。 對于數(shù)據(jù)類型的使用,必須通過類型的實際例子(實例/實體,即變量或常量)來體現(xiàn)。,4,第一章 引論,1.1 面向對象的目標 數(shù)據(jù)類型分為三種: 簡單數(shù)據(jù)類型:內建(built-in)類型,語言本身提供的類型。 用戶定義數(shù)據(jù)類型:以簡單數(shù)據(jù)類型為基礎,它包含多個簡單數(shù)據(jù)類型成分,這些數(shù)據(jù)成分是可以直接操作的。 抽象數(shù)據(jù)類型:在定義數(shù)據(jù)的同時,必須定義對數(shù)據(jù)的操作;它的數(shù)據(jù)成分是不可見的,也不可以直接操作。,5,第一章 引論,1.1 面向對象的目標 抽象數(shù)據(jù)類型隱藏了表示的細節(jié),通過過程(或方法)來訪問抽象數(shù)據(jù)對象。 對象和抽象類型的關系,類似于 整型變量和整型數(shù)據(jù)類型的關系。,6,第一章 引論,1.1 面向對象的目標 面向對象語言中的對象,就是抽象類型的實體,具體的說,是“將某組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作封裝在一起而形成的一個實體”。,7,第一章 引論,1.1 面向對象的目標 面向對象的基本思想就是把要構造的軟件系統(tǒng)表示為對象的集合,它的目的是想在某種程度上解決軟件開發(fā)面臨的兩大課題: 怎樣克服軟件的復雜性 怎樣將現(xiàn)實世界模型(包括它們之間的關系)在計算機領域中自然地表示出來,8,第一章 引論,1.1 面向對象的目標 從軟件的角度來看,計算是一種仿真。 如果每一個被仿真的實體都由一個數(shù)據(jù)結構來表示,并且將相關的操作信息封裝進去,仿真將被簡化,可以更方便地刻畫對象的內部狀態(tài)和運動規(guī)律。 面向對象就是這樣一種適用于直觀模型化的設計方法。這意味著設計模型與客觀對象之間有近乎一對一的對應關系。這一思想非常利于實現(xiàn)大型的軟件系統(tǒng)。,9,第一章 引論,1.1 面向對象的目標 作為克服軟件復雜性的手段,在面向對象的方法中,利用了如下對象的性質: 將密切相關的數(shù)據(jù)和過程封裝成為一個實體; 定義了一個實體后,即使不知道此實體的功能是怎樣實現(xiàn)的,也能使用它。,10,第一章 引論,1.1 面向對象的目標 面向對象設計非常注重設計方法。實際上,用面向對象方法編程的關鍵是模型化。,11,第一章 引論,1.1 面向對象的目標 面向對象的目標可以歸納為: 對試圖利用計算機進行問題求解和信息處理的領域,盡量使用對象的概念,將問題空間中的現(xiàn)實模型映射到程序空間。 由此得到的自然性可望克服軟件的復雜性,從而得到問題得求解和信息處理的高性能。,12,第一章 引論,1.2 面向對象語言的核心概念 1.2.1 數(shù)據(jù)封裝 Data Encapsulation 面向過程語言的做法,13,第一章 引論,1.2 面向對象語言的核心概念 1.2.1 數(shù)據(jù)封裝 Data Encapsulation 面向過程語言的做法:實例,14,第一章 引論,1.2 面向對象語言的核心概念 1.2.1 數(shù)據(jù)封裝 Data Encapsulation 面向對象語言的做法,15,第一章 引論,1.2 面向對象語言的核心概念 1.2.1 數(shù)據(jù)封裝 Data Encapsulation 面向對象語言的做法:實例,16,第一章 引論,1.2 面向對象語言的核心概念 1.2.1 數(shù)據(jù)封裝 Data Encapsulation 面向對象語言采用了抽象的方法。而抽象的原則之一就是信息隱藏。 數(shù)據(jù)封裝將一組數(shù)據(jù)和這組數(shù)據(jù)相關的操作集合封裝在一起,形成了一個能動的實體,成為對象。用戶不必知道對象行為的實現(xiàn)細節(jié),只需根據(jù)對象提供的外部特性接口訪問對象。 在C+中,實現(xiàn)數(shù)據(jù)封裝的機制是“類(class)”。 在Java和C#中,實現(xiàn)數(shù)據(jù)封裝的機制也是“類(class)”。,17,第一章 引論,1.2 面向對象語言的核心概念 1.2.2 繼承 Inheritance 繼承是面向對象語言的另一個重要的概念。 在客觀世界中,存在著兩類關系 整體和部分的關系(is part of) 一般和特殊的關系(is kind of) 。,18,第一章 引論,1.2 面向對象語言的核心概念 1.2.2 繼承 Inheritance 現(xiàn)實世界中繼承的例子:,Insect,19,第一章 引論,1.2 面向對象語言的核心概念 1.2.2 繼承 Inheritance 在一個的繼承樹中,每下一層都比上一層更加具體地定義了特性。 反過來,一旦某層的某個特性被確定了下來,那么其下所有的種類都應該包含該特性。 這就是“繼承”的一般性概念。,20,第一章 引論,1.2 面向對象語言的核心概念 1.2.2 繼承 Inheritance 在面向對象的語言中,類功能支持繼承機制。 除了根類,每個類都可以有父類或基類,也可以有它的子類或派生類。 一個子類從它的父類那里繼承了所有的數(shù)據(jù)和操作,并擴充自己的特殊數(shù)據(jù)和操作。父類抽象出共同特征,子類表達差別。,21,第一章 引論,1.2 面向對象語言的核心概念 1.2.2 繼承 Inheritance 要注意區(qū)分:is part of 和 is kind of (is kind of 才是繼承的概念) Kind of Butterfly is a kind of insect. Part of Wheels are part of a car. Wheel is not a kind of car.,22,第一章 引論,1.2 面向對象語言的核心概念 1.2.3 多態(tài)性 Poly-morphism 多態(tài),是指一個名字(或符號)具有多種含義。 用戶在使用函數(shù)編程時,關心的是該函數(shù)的功能及其使用接口,并不需要了解該函數(shù)的使用接口與函數(shù)的哪一種實現(xiàn)方法相匹配(binding)。 在設計這一級上,只關心“施加在對象上的動作是什么”,而不必牽涉“如何實現(xiàn)這個動作”以及“實現(xiàn)這個動作有多少種方法”的細節(jié)。,23,第一章 引論,1.2 面向對象語言的核心概念 1.2.3 多態(tài)性 Poly-morphism 函數(shù)重載 在面向對象的語言中,函數(shù)重載(overload)表達了最簡單的多態(tài)性(同名函數(shù))。 void value(int); Int value( );,24,第一章 引論,1.2 面向對象語言的核心概念 1.2.3 多態(tài)性 Poly-morphism 運算符重載 運算符重載指的是相同的運算符在不同的上下文有不同的解釋。例如:兩個整數(shù)使用+運算符表示它們要做加法,而兩個字符串可以使用+運算符則表示串連接。 C+為運算符重載提供了完整的語法支持。,25,第一章 引論,1.2 面向對象語言的核心概念 1.2.3 多態(tài)性 Poly-morphism 如果函數(shù)調用(接口)與哪個函數(shù)實現(xiàn)相匹配是在編譯時完成的,稱為早期匹配或靜態(tài)聯(lián)編。 如果匹配是在運行時確定的,則稱為后期匹配或動態(tài)聯(lián)編。 C+的虛函數(shù)提供了后期匹配帶來的良好特性。,26,第一章 引論,1.3 按對象方式思維 面向對象是一種仿真技術,面向對象設計產生一種與現(xiàn)實具有自然關系的軟件系統(tǒng)。 面向過程的程序設計方法鼓勵全局地看問題,強調系統(tǒng)功能的逐步細化。而在面向對象程序設計中,每個對象嚴格地是局部的。每個對象管理自己的實現(xiàn)。 學習面向對象設計,需要將思維方式從全局轉到局部,在局部中發(fā)現(xiàn)對象。,27,第一章 引論,1.3 按對象方式思維 設計對象需要做許多小決策,怎樣將計算部分合理地分配給不同的對象。這叫做分散責任。 這是設計決策的基礎,其余都是次要的。CRC方法幫助設計者分散責任,直到設計的最后階段才考慮問題的總體。,28,第一章 引論,1.3 按對象方式思維 面向對象的CRC方法從三個方面來表述對象: Class Name。給對象命名,實際上就是對需要處理的問題空間中包含的不同性質的數(shù)據(jù)進行分類。 一個好的具有一致性的名字會為以后設計的正確性奠定基礎。,29,第一章 引論,1.3 按對象方式思維 面向對象的CRC方法從三個方面來表述對象: Responsibilities。每個對象完成設計中的一個小目標的功能,它實現(xiàn)了這個系統(tǒng)狀態(tài)的某一部分。 責任要簡明扼要,不要太多,同時不要讓對象負責自己不需要承擔的責任。,30,第一章 引論,1.3 按對象方式思維 面向對象的CRC方法從三個方面來表述對象: Collaborators。每個對象都可能依賴于其它對象來完成任務。 合作者應該不要多,并且應該實用。盡量避免設計同所有對象打交道的也就是全局的對象。,31,第一章 引論,1.4 面向對象的思想和方法 1.4.1 面向對象是一種認知方法學 人們的認識過程,主要有以下兩種方法。 從一般到特殊的演繹方法。 從特殊到一般的歸納方法。 面向對象提供了從一般到特殊的演繹手段,又提供了從特殊到一般的歸納形式,從而說明它是一種很好的認知方法。 這種分類、歸納的方法在面向對象設計技術中是很重要的。,32,1.4.2 面向對象與軟件IC 類概念支持 “軟件 IC” 技術 在面向對象語言中,類充當了系統(tǒng)構造的單元 類是一類對象的統(tǒng)一模板,它具有很強的模塊性、獨立性和可靠性 類是對象一級的抽象,它將一類對象的數(shù)據(jù)結構和功能實現(xiàn)封裝起來,使得不必清楚其內部實現(xiàn),只要了解功能接口就可以使用它。 類支持代碼共享,這也支持了可重用性。 因此類作為 “軟件 IC” 來組織軟件系統(tǒng)從概念上是非常合適的。,1.4.3 面向對象方法與結構化程序設計方法 結構程序設計強調了功能抽象和模塊性,解決問題的過程看作是處理過程。 面向對象程序設計則綜合了功能抽象和數(shù)據(jù)抽象,它將解決問題的過程看作是一個分類演繹的過程。,1.4.4 對象是抽象數(shù)據(jù)類型的實現(xiàn) 抽象是一個系統(tǒng)的簡化描述,它強調了系統(tǒng)的某些特性而忽略了其他特性。對于用戶來說,所關心的是程序能做什么,而不是它的實現(xiàn)細節(jié)。 抽象可以用來對用戶所關心的重要信息予以強調,而忽略不重要的信息。 整個程序設計語言(甚至軟件開發(fā))的發(fā)展過程就是抽象層次不斷提高的過程。,1.4.4 對象是抽象數(shù)據(jù)類型的實現(xiàn) 為了不涉及對象的物理表示和操作實現(xiàn)的細節(jié),采用抽象數(shù)據(jù)類型的描述技術。 抽象數(shù)據(jù)類型包含的信息有: 外部不可見的數(shù)據(jù) 外部不可見的操作的實現(xiàn)細節(jié) 外部可見的施于數(shù)據(jù)上的各操作界面(接口),將數(shù)據(jù)類型抽象為提供給外部世界的數(shù)據(jù)和操作集。使用了抽象數(shù)據(jù)類型描述,不再關心數(shù)據(jù)結構是什么,而僅僅關心它具有些什么功能可用。符合信息隱藏原則。 抽象數(shù)據(jù)類型描述的信息與對象包含的信息是一致的,對象是抽象數(shù)據(jù)類型的實現(xiàn),第一章 引論,1.5 類屬 類屬并不是面向對象語言特有的成分,它指的是類型參數(shù)化,即參數(shù)化一個軟件分量的能力。 C語言沒有類屬的能力,但可以通過C的宏定義來模擬類屬。 C+采用模板來實現(xiàn)類屬。 在現(xiàn)代的編程思想中,用“泛型”的概念來代替類屬,同時具有更廣泛的含義。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國石油測井車市場競爭格局及投資戰(zhàn)略規(guī)劃報告
- 中國異丁胺行業(yè)市場調查報告
- 年中國切除鏡行業(yè)市場分析及投資可行性研究報告
- 2024-2030年中國乳酸飲料行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略研究報告
- 藥品膠囊制劑項目可行性研究報告-范文
- 2023-2029年中國大蒜精行業(yè)市場調查研究及發(fā)展戰(zhàn)略規(guī)劃報告
- 2025-2030年中國建材鐵礦石項目投資可行性研究分析報告
- 中國雙層托手架行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告(2024-2030)
- 工業(yè)園區(qū)污水治理項目可研報告
- 中國調制粘合劑行業(yè)發(fā)展調查報告
- 劍橋商務英語BEC(初級)全套課件
- 醫(yī)療器械臨床評價課件
- 滬科版九年級物理全一冊教案(完整版)教學設計含教學反思
- DB32∕T 2880-2016 光纖傳感式橋隧結構健康監(jiān)測系統(tǒng)設計、施工及維護規(guī)范
- 開發(fā)報建流程及細則
- 潔凈室塵埃粒子檢測規(guī)范
- 測量成果驗收單
- 系統(tǒng)開發(fā)需求確認單
- 高中成績證明模板(共2頁)
- 冰毯機的使用與護理
- (完整版)BrownBear繪本附配音
評論
0/150
提交評論