第2章類和對(duì)象100_第1頁(yè)
第2章類和對(duì)象100_第2頁(yè)
第2章類和對(duì)象100_第3頁(yè)
第2章類和對(duì)象100_第4頁(yè)
第2章類和對(duì)象100_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第2章 類和對(duì)象 2.1.1什么是面向?qū)ο蟮某绦蛟O(shè)計(jì) 面向?qū)ο蟮某绦蛟O(shè)計(jì)的思路與人們?nèi)粘I钪刑幚韱栴}的思路是相似的。一個(gè)復(fù)雜的事物總是由許多部分組成的。例如,一輛汽車是由發(fā)動(dòng)機(jī)、底盤、車身和車輪等部件組成。 當(dāng)人們生產(chǎn)汽車時(shí),不是先設(shè)計(jì)和制造發(fā)動(dòng)機(jī),再設(shè)計(jì)和制造底盤,然后設(shè)計(jì)和制造車身和車輪,而是分別設(shè)計(jì)和制造發(fā)動(dòng)機(jī)、底盤、車身和車輪,最后把它們組裝起來(lái)。這就是面向?qū)ο蟮幕舅悸贰?. 對(duì)象 客觀世界中任何一個(gè)事物都可以看成一個(gè)對(duì)象。對(duì)象可以是自然物體,也可以是社會(huì)中的一種組織結(jié)構(gòu)(班級(jí)、系、學(xué)校)甚至一個(gè)圖形、一項(xiàng)計(jì)劃等都可以看成對(duì)象。復(fù)雜的對(duì)象由簡(jiǎn)單的對(duì)象組成,例如火車站對(duì)象包含售票處、

2、行李房、候車室和站臺(tái)、信號(hào)燈、鐵軌和通信設(shè)施等對(duì)象。對(duì)象是構(gòu)成系統(tǒng)的基本單位。任何一個(gè)對(duì)象都具有靜任何一個(gè)對(duì)象都具有靜態(tài)和動(dòng)態(tài)的特征態(tài)和動(dòng)態(tài)的特征。班級(jí)這個(gè)對(duì)象具有從屬一個(gè)系和專業(yè)、學(xué)生人數(shù)、組建時(shí)間等靜態(tài)特征,它還具有出操、學(xué)習(xí)、參加運(yùn)動(dòng)會(huì)等動(dòng)態(tài)特征。靜態(tài)特征稱為屬性屬性,動(dòng)態(tài)特征稱為行為行為,外界給對(duì)象發(fā)出的信息一般稱作消息消息。一個(gè)對(duì)象往往包含一組屬性和一組行為。如電視機(jī)包括生產(chǎn)廠家、品牌、屏幕尺寸等是靜態(tài)特征,開機(jī)、關(guān)機(jī)、選擇頻道、調(diào)節(jié)音量、調(diào)節(jié)彩色等是動(dòng)態(tài)特征。2. 封裝與信息隱蔽 對(duì)一個(gè)對(duì)象進(jìn)行封裝處理,把它的一部分屬性和功能向外界屏蔽,從外面看不到這些屬性和功能。例如錄像機(jī)里有電

3、路板和機(jī)械控制部件,由于有機(jī)殼的保護(hù),在外面只看到一個(gè)黑箱子,在它的表面有若干個(gè)按鍵。人們只需知道這些按鍵的功能即可操作錄像機(jī)。而不必知道錄象機(jī)的工作原理和系統(tǒng)結(jié)構(gòu)。在設(shè)計(jì)一個(gè)對(duì)象時(shí),要周密地考慮如何進(jìn)行封裝,把不必讓外界知道的部分隱蔽起來(lái)。也就是說,把對(duì)象的內(nèi)部實(shí)現(xiàn)和外部行為分隔開來(lái)。封裝性是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要特點(diǎn),封裝在此有兩個(gè)含義:把有關(guān)的數(shù)據(jù)和操作代碼封裝在一個(gè)對(duì)象中,形成程序中的一個(gè)基本單位,各個(gè)對(duì)象之間相互獨(dú)立,互不干擾。把對(duì)象中的某些部分對(duì)外隱蔽,只留下與外界聯(lián)系的接口接收外界的消息,這種對(duì)外界隱蔽的做法稱為信息屏蔽。封裝把對(duì)象內(nèi)部實(shí)現(xiàn)與外部分隔開,外界不了解對(duì)象內(nèi)部的具

4、體細(xì)節(jié),其實(shí)外界也不需要了解。外界需要真正了解的是對(duì)象的對(duì)外接口。C+ 對(duì)象中的公有函數(shù)就是對(duì)象的對(duì)外接口。外界通過調(diào)用公有函數(shù),訪問對(duì)象中的數(shù)據(jù)成員,完成指定的操作。3. 抽象抽象是表示同一類事物本質(zhì)的方法,它關(guān)注事物本質(zhì)特征,對(duì)象是具體的,例如某學(xué)院2006級(jí)計(jì)算機(jī)軟件專業(yè)的一個(gè)學(xué)生是一個(gè)對(duì)象,可以將一組同類對(duì)象的共同特征抽象出來(lái),從而形成類類的概念??梢詫⑶懊嫠岬哪硨W(xué)院2006級(jí)計(jì)算機(jī)軟件專業(yè)的所有學(xué)生可抽象出2006級(jí)計(jì)算機(jī)軟件專業(yè)學(xué)生類。類是類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。4. 繼承與重用 如果已經(jīng)建立名為A 的類,現(xiàn)要建立一個(gè)名為 B 的類,

5、而B 類與A 類的內(nèi)容基本相同,只是在 A 類基礎(chǔ)上增加了一些屬性和行為,這樣只需在 A 類的基礎(chǔ)上添加新內(nèi)容即可,這就是面向?qū)ο蟪绦蛟O(shè)計(jì)中的繼承機(jī)制。 C+也具有繼承機(jī)制,利用這個(gè)機(jī)制可以在一個(gè)已有的類的基礎(chǔ)上建立一個(gè)新類,這也是軟件重用思想,不僅可以利用自己過去建立的類,而且還可以利用其他人放在類庫(kù)中的類建立類,這就大大縮短了軟件開發(fā)周期。5. 多態(tài)性 多個(gè)相似而不完全相同的對(duì)象,收到外界給的同一個(gè)消息時(shí),它們各自執(zhí)行不同的操作,這種現(xiàn)象叫多態(tài)現(xiàn)象。例如在windows中,用鼠標(biāo)雙擊一個(gè)文件對(duì)象時(shí),如果它是可執(zhí)行文件則會(huì)執(zhí)行文件中的程序,如果它是一個(gè)文本文件則會(huì)啟動(dòng)一個(gè)編輯器來(lái)打開這個(gè)文件

6、,這就是面向?qū)ο蟪绦蛟O(shè)計(jì)中的多態(tài)性一個(gè)實(shí)際例子。在C+中所謂多態(tài)性是指:由繼承而產(chǎn)生的新類,它的對(duì)象對(duì)同一個(gè)消息會(huì)作出不同的響應(yīng)。2.1.2面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn) 傳統(tǒng)的面向過程程序設(shè)計(jì)是圍繞功能進(jìn)行的,用一個(gè)函數(shù)實(shí)現(xiàn)一個(gè)功能,一個(gè)函數(shù)可以使用任何一組數(shù)據(jù),一組數(shù)據(jù)可以被多個(gè)函數(shù)使用。當(dāng)程序規(guī)模越來(lái)越大,數(shù)據(jù)越來(lái)越多,操作越來(lái)越復(fù)雜,這種方法容易出現(xiàn)錯(cuò)誤,程序員往往感到難以應(yīng)付。面向?qū)ο蟪绦蛟O(shè)計(jì)采用的是另外一種思路。它面對(duì)的是一個(gè)個(gè)對(duì)象。實(shí)際上每組數(shù)據(jù)都有特定的用途,它是某種操作的對(duì)象。也就是說,一組操作調(diào)用一組數(shù)據(jù)。例如三角形的三條邊長(zhǎng) a、b、c 它們只與計(jì)算該三角形的面積、三角形的周長(zhǎng)等

7、操作有關(guān),與其他操作無(wú)關(guān)。我們把這三個(gè)數(shù)據(jù)和計(jì)算三角形面積、周長(zhǎng)等操作的代碼放在一起,封裝成一個(gè)對(duì)象,與外界相對(duì)分隔。這也符合客觀世界的本來(lái)面目。面向?qū)ο蟪绦蛟O(shè)計(jì)包括兩個(gè)方面:設(shè)計(jì)所需的各種類,即決定把哪些數(shù)據(jù)和操作封裝在一起。考慮怎樣向?qū)ο蟀l(fā)送消息(調(diào)用對(duì)象的成員函數(shù)),實(shí)現(xiàn)所需的操作。這時(shí)設(shè)計(jì)程序象一個(gè)總調(diào)度,不斷地向各個(gè)對(duì)象發(fā)送消息(命令),讓這些對(duì)象活動(dòng)起來(lái)(激活這些對(duì)象),完成各自的職責(zé)范圍工作,各個(gè)對(duì)象的操作完成,整體任務(wù)也就完成了。2.1.3 類和對(duì)象的作用 類是C+中十分重要的概念,它是實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。C+ 對(duì)C改進(jìn),其中最重要的就是增加了類這樣一種類型。類是所有面

8、向?qū)ο蟮恼Z(yǔ)言的共同特征,所有面向?qū)ο蟮恼Z(yǔ)言都提供了這種類型。一個(gè)有一定規(guī)模的C+程序是由許多類構(gòu)成的。可以說類是C+的靈魂。C+支持面向過程的程序設(shè)計(jì),也支持基于對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì)。從本章到第四章介紹基于對(duì)象的程序設(shè)計(jì)。包括類和對(duì)象的概念、類的機(jī)制和聲明、對(duì)象的定義與使用等。這是面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)?;趯?duì)象就是基于類,基于對(duì)象的程序是以類和對(duì)象為基礎(chǔ)的,程序的操作是圍繞對(duì)象進(jìn)行的。在此基礎(chǔ)上利用繼承機(jī)制和多態(tài)性,就成為面向?qū)ο蟮某绦蛟O(shè)計(jì)。基于對(duì)象程序設(shè)計(jì)所面臨的是一個(gè)個(gè)對(duì)象。所有的數(shù)據(jù)分別屬于不同的對(duì)象。面向過程的程序設(shè)計(jì)中數(shù)據(jù)可以是公用的或者說是共享的,是缺乏保護(hù)的。缺乏保護(hù)的數(shù)據(jù)

9、容易導(dǎo)致程序失敗。其實(shí)程序中一組數(shù)據(jù)是為一種操作準(zhǔn)備的,也就是說一組數(shù)據(jù)與一種操作對(duì)應(yīng)。因此把一組數(shù)據(jù)和相關(guān)的操作放在一起,這就是面向?qū)ο蟪绦蛟O(shè)計(jì)中的對(duì)象。在面向過程的結(jié)構(gòu)化程序設(shè)計(jì)中,人們用下面的公式描述程序:程序=數(shù)據(jù)結(jié)構(gòu)+算法算法和數(shù)據(jù)結(jié)構(gòu)兩者是相互獨(dú)立的,是分開設(shè)計(jì)的。面向過程的程序設(shè)計(jì)是以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)的算法面向過程的程序設(shè)計(jì)是以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)的算法設(shè)計(jì)設(shè)計(jì)。在實(shí)踐中人們逐漸認(rèn)識(shí)到算法和數(shù)據(jù)結(jié)構(gòu)是互相緊密聯(lián)系不可分的。應(yīng)當(dāng)以一個(gè)算法對(duì)應(yīng)一組數(shù)據(jù)結(jié)構(gòu),而不宜提倡一個(gè)算法對(duì)應(yīng)多組數(shù)據(jù)結(jié)構(gòu),以及以一組數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)多個(gè)算法?;趯?duì)象和面向?qū)ο蟪绦蛟O(shè)計(jì)就是把一個(gè)算法和一組數(shù)據(jù)結(jié)構(gòu)封裝在一個(gè)對(duì)象

10、中,形成了新的觀念:對(duì)象=數(shù)據(jù)結(jié)構(gòu)+算法程序=(對(duì)象+對(duì)象+對(duì)象)+消息消息的作用就是對(duì)對(duì)象進(jìn)行控制。程序設(shè)計(jì)的關(guān)鍵是設(shè)計(jì)好每個(gè)對(duì)象,以及確定向這些對(duì)象發(fā)出的命令,讓各個(gè)對(duì)象完成相應(yīng)的任務(wù)。2.1.4 面向?qū)ο蟮能浖_發(fā)1. 面向?qū)ο蠓治?. 面向?qū)ο笤O(shè)計(jì)3. 面向?qū)ο缶幊?. 面向?qū)ο鬁y(cè)試5. 面向?qū)ο缶S護(hù)1.面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?,要按照面向?qū)ο蟮母拍詈头椒ǎ趯?duì)任務(wù)的分析中,從客觀事物和事物之間的關(guān)系歸納出有關(guān)對(duì)象(對(duì)象的屬性和行為)以及對(duì)象之間的聯(lián)系。并將具有相同屬性和行為的對(duì)象用一個(gè)類來(lái)表示。2.面向?qū)ο蟮脑O(shè)計(jì)根據(jù)面向?qū)ο蠓治鲭A段形成的需求模型,對(duì)每一部分分別進(jìn)行具體的設(shè)計(jì),首先是

11、進(jìn)行類的設(shè)計(jì),類的設(shè)計(jì)可能包含多個(gè)層次(利用繼承和派生機(jī)制)。然后以這些類為基礎(chǔ)提出程序設(shè)計(jì)的思路和方法,包括了算法的設(shè)計(jì)。在此設(shè)計(jì)階段,并不牽涉某一具體的計(jì)算機(jī)語(yǔ)言。3.面向?qū)ο缶幊谈鶕?jù)面向?qū)ο笤O(shè)計(jì)的結(jié)果,用一種計(jì)算機(jī)語(yǔ)言把它寫成程序。C+DephiVBJava4.面向?qū)ο鬁y(cè)試寫完程序交付用戶使用前,必須對(duì)程序進(jìn)行嚴(yán)格的調(diào)試,如果發(fā)現(xiàn)錯(cuò)誤,要及時(shí)改正。面向?qū)ο鬁y(cè)試,是以類作為測(cè)試的基本單元用面向?qū)ο蟮姆椒▽?shí)施測(cè)試。5. 面向?qū)ο缶S護(hù)任何軟件產(chǎn)品在使用過程中,可能用戶需要改進(jìn)軟件的性能,這就需要修改程序。由于采用了面向?qū)ο蟮姆椒?,方便了維護(hù)程序。因?yàn)轭惖姆庋b性,修改一個(gè)類對(duì)其他類(非子類)影響

12、很小,極大提高了程序維護(hù)的效率。2.2 類的聲明和對(duì)象的定義 在面向?qū)ο蟪绦蛟O(shè)計(jì)中,要使用大量的對(duì)象,要程序員對(duì)問題進(jìn)行分析抽象出類的概念,在設(shè)計(jì)程序時(shí)首先要聲明類類型,然后再定義類類型變量即對(duì)象。2.2.1 類和對(duì)象的關(guān)系2.2.2 聲明類類型2.2.3 定義對(duì)象的方法2.2.4 類和結(jié)構(gòu)體類型的異同2.2.1類和對(duì)象的關(guān)系 2.1節(jié)已經(jīng)說明了什么是對(duì)象。C+中對(duì)象的類型稱為類(class)。類代表了某一批對(duì)象的共性和特征。類是對(duì)象的抽象,而類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例對(duì)象是類的具體實(shí)例。正如結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的關(guān)系一樣,(先聲明一個(gè)結(jié)構(gòu)體類型,然后用它定義結(jié)構(gòu)體變量)在C+ 中

13、也是先聲明一個(gè)類類型,然后用它定義同類型的對(duì)象。對(duì)象是類類型的一個(gè)變量。類是抽象的,不占用內(nèi)存空間。對(duì)象是具體的,要占用內(nèi)存空間。2.2.2 聲明類類型 類是要用戶自己定義的類型,如果程序里要用類類型,程序員必須自己根據(jù)需要聲明,也可以使用別人已設(shè)計(jì)好的類。聲明一個(gè)類類型與聲明一個(gè)結(jié)構(gòu)體類型相似。struct student int num; char name20; char sex; ;student st1,st2;Class Student int num; string name; char sex; void setdata() cin num; cin name; cin sex

14、; void display() cout numendl; cout nameendl; cout sex num; cin name; cin sex; void display() cout numendl; cout nameendl; cout sex num; cin name; cin sex; void student : display() cout numendl; cout nameendl; cout sex num; cin name; cin sex; void student : display() cout numendl; cout nameendl; cou

15、t sex hour minute sec ; ; 可以用下面的語(yǔ)句計(jì)算該類對(duì)象占用的字節(jié)數(shù) cout sizeof( Time) endl; 結(jié)果輸出值是12,這是數(shù)據(jù)成員所占的空間尺寸,這就證明一個(gè)對(duì)象占用的空間其實(shí)是它的數(shù)據(jù)成員占據(jù)的內(nèi)存空間。2.4 對(duì)象成員的引用 定義了對(duì)象后,在程序中可以直接訪問對(duì)象中的公有成員,它們可以是數(shù)據(jù)成員,也可以是成員函數(shù)。在程序中訪問對(duì)象成員有三種方法。2.4.1 用對(duì)象名和成員運(yùn)算符訪問成員2.4.2 用指向?qū)ο蟮闹羔樤L問成員2.4.3 用對(duì)象的引用訪問成員2.4.1通過對(duì)象名和成員運(yùn)算符訪問對(duì)象中的成員 格式:對(duì)象名.成員名例:st1.display(); / 調(diào)用成員函數(shù)調(diào)用成員函數(shù) display(); / 調(diào)用普通函數(shù)調(diào)用普通函數(shù)注意:只有成員函數(shù)可以訪問類中的所有成注意:只有成員函數(shù)可以訪問類中的所有成員,而在類外只能訪問公有成員。員,而在類外只能訪問公有成員。如果在類外面用下面的語(yǔ)句是錯(cuò)誤的:st1.num = 101012.4.2通過指向?qū)ο蟮闹羔樤L問對(duì)象中的成員 可以通過指針訪問對(duì)象中的成員。class Time public: int hour; int minute; ;Time t, *p; p= &

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論