版權(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ì)面向?qū)ο蟪绦蛟O(shè)計(jì)授課班級(jí):授課班級(jí):主講教師:主講教師:王燕王燕 清華大學(xué)出版清華大學(xué)出版譚浩強(qiáng)主編譚浩強(qiáng)主編 中國(guó)鐵道出版社中國(guó)鐵道出版社zTHE C+ PROGRAMMING THE C+ PROGRAMMING LANGUAGE(SpecialLANGUAGE(Special Edition) Edition) BjarneBjarne StroustrupStroustrup 高等教育出版社高等教育出版社 第第1 1章章 緒緒 論論 1.1 1.1 面向?qū)ο蠓椒ǖ钠鹪疵嫦驅(qū)ο蠓椒ǖ钠鹪?1.2 1.2 面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真 1.3
2、 1.3 結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì) 1.4 1.4 面向?qū)ο蟮幕靖拍詈兔嫦驅(qū)ο笙到y(tǒng)的特性面向?qū)ο蟮幕靖拍詈兔嫦驅(qū)ο笙到y(tǒng)的特性1.5 1.5 面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的四大家族面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的四大家族1.6 1.6 面向?qū)ο蟮南到y(tǒng)開(kāi)發(fā)方法面向?qū)ο蟮南到y(tǒng)開(kāi)發(fā)方法 1.7 1.7 面向?qū)ο蟪绦蛟O(shè)計(jì)舉例面向?qū)ο蟪绦蛟O(shè)計(jì)舉例 CPU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:10000000 加 10010000 減用助記符號(hào)描述的指令系統(tǒng)如 ADD A, B面向機(jī)器的語(yǔ)言程序設(shè)計(jì)是數(shù)據(jù)被加工的過(guò)程客觀世界可以分類,對(duì)象是類的實(shí)例對(duì)象是數(shù)據(jù)和方法的封裝對(duì)象間通
3、過(guò)發(fā)送和接受消息發(fā)生聯(lián)系程序設(shè)計(jì)關(guān)鍵是定義類,并由類派生對(duì)象1.1 1.1 面向?qū)ο蠓椒ǖ钠鹪疵嫦驅(qū)ο蠓椒ǖ钠鹪?軟件設(shè)計(jì)人員的負(fù)擔(dān)越來(lái)越重,軟件的實(shí)現(xiàn)越來(lái)越軟件設(shè)計(jì)人員的負(fù)擔(dān)越來(lái)越重,軟件的實(shí)現(xiàn)越來(lái)越龐大,為計(jì)算機(jī)領(lǐng)域自身的發(fā)展提出了新的要求。利龐大,為計(jì)算機(jī)領(lǐng)域自身的發(fā)展提出了新的要求。利用傳統(tǒng)的程序設(shè)計(jì)思想無(wú)法滿足這一要求,人們就開(kāi)用傳統(tǒng)的程序設(shè)計(jì)思想無(wú)法滿足這一要求,人們就開(kāi)始尋求一種更能反映人類解決問(wèn)題的自然方法,這就始尋求一種更能反映人類解決問(wèn)題的自然方法,這就是是“面向?qū)ο竺嫦驅(qū)ο蟆奔夹g(shù)。技術(shù)。 5050年代的程序都是用指令代碼或匯編語(yǔ)言編寫的年代的程序都是用指令代碼或匯編語(yǔ)言編
4、寫的 6060年代高級(jí)語(yǔ)言的出現(xiàn)大大簡(jiǎn)化了程序設(shè)計(jì),縮短了軟年代高級(jí)語(yǔ)言的出現(xiàn)大大簡(jiǎn)化了程序設(shè)計(jì),縮短了軟件開(kāi)發(fā)周期自件開(kāi)發(fā)周期自6060年代末到年代末到7070年代初,出現(xiàn)了大型軟件年代初,出現(xiàn)了大型軟件系統(tǒng),如操作系統(tǒng)、數(shù)據(jù)庫(kù),這給程序設(shè)計(jì)帶來(lái)了新系統(tǒng),如操作系統(tǒng)、數(shù)據(jù)庫(kù),這給程序設(shè)計(jì)帶來(lái)了新的問(wèn)題??煽啃圆?,錯(cuò)誤多,且不易維護(hù)和修改的問(wèn)題??煽啃圆?,錯(cuò)誤多,且不易維護(hù)和修改-“-“”。1.1 1.1 面向?qū)ο蠓椒ǖ钠鹪疵嫦驅(qū)ο蠓椒ǖ钠鹪?為了克服為了克服60年代出現(xiàn)的軟件危機(jī),年代出現(xiàn)的軟件危機(jī),1968年北約組織提年北約組織提出出“軟件工程軟件工程”的概念。對(duì)程序設(shè)計(jì)語(yǔ)言的認(rèn)識(shí)從強(qiáng)調(diào)的
5、概念。對(duì)程序設(shè)計(jì)語(yǔ)言的認(rèn)識(shí)從強(qiáng)調(diào)表達(dá)能力為重點(diǎn)轉(zhuǎn)向以結(jié)構(gòu)化和簡(jiǎn)明性為重點(diǎn),將程序表達(dá)能力為重點(diǎn)轉(zhuǎn)向以結(jié)構(gòu)化和簡(jiǎn)明性為重點(diǎn),將程序從語(yǔ)句序列轉(zhuǎn)向相互作用的模塊集合。從語(yǔ)句序列轉(zhuǎn)向相互作用的模塊集合。1969年,年,E.W.Dijkstra首先提出了結(jié)構(gòu)化程序設(shè)計(jì)的概念,他強(qiáng)首先提出了結(jié)構(gòu)化程序設(shè)計(jì)的概念,他強(qiáng)調(diào)從程序結(jié)構(gòu)和風(fēng)格上來(lái)研究程序設(shè)計(jì)。在軟件工程的調(diào)從程序結(jié)構(gòu)和風(fēng)格上來(lái)研究程序設(shè)計(jì)。在軟件工程的迫切要求下,迫切要求下,70年代結(jié)構(gòu)化語(yǔ)言獲得蓬勃發(fā)展并得到廣年代結(jié)構(gòu)化語(yǔ)言獲得蓬勃發(fā)展并得到廣泛應(yīng)用。使用結(jié)構(gòu)化程序設(shè)計(jì)方法可顯著地減少軟件的泛應(yīng)用。使用結(jié)構(gòu)化程序設(shè)計(jì)方法可顯著地減少軟件的復(fù)雜
6、性,提高軟件的可靠性、可測(cè)試性和可維護(hù)性。經(jīng)復(fù)雜性,提高軟件的可靠性、可測(cè)試性和可維護(hù)性。經(jīng)過(guò)幾年的探索和實(shí)踐,結(jié)構(gòu)化程序設(shè)計(jì)的應(yīng)用確實(shí)取得過(guò)幾年的探索和實(shí)踐,結(jié)構(gòu)化程序設(shè)計(jì)的應(yīng)用確實(shí)取得了成效,用結(jié)構(gòu)化程序設(shè)計(jì)的方法編寫出來(lái)的程序不僅了成效,用結(jié)構(gòu)化程序設(shè)計(jì)的方法編寫出來(lái)的程序不僅結(jié)構(gòu)良好,易寫易讀,而且易于證明其正確性。結(jié)構(gòu)良好,易寫易讀,而且易于證明其正確性。 進(jìn)入進(jìn)入8080年代,由于一系列高技術(shù)的研究,如第五代年代,由于一系列高技術(shù)的研究,如第五代計(jì)算機(jī)、計(jì)算機(jī)輔助制造計(jì)算機(jī)、計(jì)算機(jī)輔助制造CAMCAM和知識(shí)工程等領(lǐng)域的研究和知識(shí)工程等領(lǐng)域的研究都迫切要求大型的軟件系統(tǒng)作為支撐。他們
7、所用的數(shù)據(jù)都迫切要求大型的軟件系統(tǒng)作為支撐。他們所用的數(shù)據(jù)類型也超出了常規(guī)的結(jié)構(gòu)化數(shù)據(jù)類型的范疇,提出對(duì)圖類型也超出了常規(guī)的結(jié)構(gòu)化數(shù)據(jù)類型的范疇,提出對(duì)圖像、聲音、規(guī)則等非結(jié)構(gòu)化信息的管理。為了適應(yīng)這些像、聲音、規(guī)則等非結(jié)構(gòu)化信息的管理。為了適應(yīng)這些應(yīng)用領(lǐng)域的需要,迫切要求軟件模塊具有更強(qiáng)的獨(dú)立自應(yīng)用領(lǐng)域的需要,迫切要求軟件模塊具有更強(qiáng)的獨(dú)立自治性,以便于大型軟件的管理、維護(hù)和重用。由于結(jié)構(gòu)治性,以便于大型軟件的管理、維護(hù)和重用。由于結(jié)構(gòu)化語(yǔ)言的數(shù)據(jù)類型較為簡(jiǎn)單,所以不能勝任對(duì)非結(jié)構(gòu)化化語(yǔ)言的數(shù)據(jù)類型較為簡(jiǎn)單,所以不能勝任對(duì)非結(jié)構(gòu)化數(shù)據(jù)的定義與管理,采用過(guò)程調(diào)用機(jī)制也不夠靈活,獨(dú)數(shù)據(jù)的定義與管
8、理,采用過(guò)程調(diào)用機(jī)制也不夠靈活,獨(dú)立性較差。立性較差。為了適應(yīng)高技術(shù)發(fā)展的需要,消除結(jié)構(gòu)化編程語(yǔ)為了適應(yīng)高技術(shù)發(fā)展的需要,消除結(jié)構(gòu)化編程語(yǔ)言的局限,自言的局限,自8080年代以來(lái),出現(xiàn)了面向?qū)ο蟪绦蚰甏詠?lái),出現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)流派,研制出了多種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言設(shè)計(jì)流派,研制出了多種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言(簡(jiǎn)稱為(簡(jiǎn)稱為OOPLOOPL:Object Oriented Programming Object Oriented Programming LanguageLanguage),如),如AdaAda,SmalltalkSmalltalk,C+C+和當(dāng)前使和當(dāng)前使用在用在Internet
9、Internet上的平臺(tái)無(wú)關(guān)語(yǔ)言上的平臺(tái)無(wú)關(guān)語(yǔ)言JavaJava等。等。 由于由于OOPLOOPL的對(duì)象、類具有高度的抽象性,所以它能很的對(duì)象、類具有高度的抽象性,所以它能很好地表達(dá)任何復(fù)雜的數(shù)據(jù)類型,也允許程序員靈活地定好地表達(dá)任何復(fù)雜的數(shù)據(jù)類型,也允許程序員靈活地定義自己所需要的數(shù)據(jù)類型。類本身具有很完整的封裝性,義自己所需要的數(shù)據(jù)類型。類本身具有很完整的封裝性,可以使用它作為編程中的模塊單元,滿足模塊獨(dú)立自治可以使用它作為編程中的模塊單元,滿足模塊獨(dú)立自治的需求。再加上繼承性和多態(tài)性,更有助于簡(jiǎn)化大型軟的需求。再加上繼承性和多態(tài)性,更有助于簡(jiǎn)化大型軟件和大量重復(fù)定義的模塊,增強(qiáng)了模塊的可
10、重用性,提件和大量重復(fù)定義的模塊,增強(qiáng)了模塊的可重用性,提高了軟件的可靠性,縮短了軟件的開(kāi)發(fā)周期。高了軟件的可靠性,縮短了軟件的開(kāi)發(fā)周期。1.2 1.2 面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真 客觀世界是由許多具體的事物、抽象的概念、客觀世界是由許多具體的事物、抽象的概念、規(guī)則等組成的,我們將任何感興趣或要加以研規(guī)則等組成的,我們將任何感興趣或要加以研究的事、物、概念統(tǒng)稱為對(duì)象究的事、物、概念統(tǒng)稱為對(duì)象ObjectObject。每個(gè)對(duì)象都有各自的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,每個(gè)對(duì)象都有各自的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,不同對(duì)象之間通過(guò)消息傳遞進(jìn)行相互作用和聯(lián)不同對(duì)象之間通過(guò)消息傳遞進(jìn)行相
11、互作用和聯(lián)系就構(gòu)成了各種不同的系統(tǒng)。面向?qū)ο蟮姆椒ㄏ稻蜆?gòu)成了各種不同的系統(tǒng)。面向?qū)ο蟮姆椒ㄕ且詫?duì)象作為最基本元素的一種分析問(wèn)題和正是以對(duì)象作為最基本元素的一種分析問(wèn)題和解決問(wèn)題的方法。解決問(wèn)題的方法。傳統(tǒng)的結(jié)構(gòu)化方法強(qiáng)調(diào)的是功能抽象和模塊化,每傳統(tǒng)的結(jié)構(gòu)化方法強(qiáng)調(diào)的是功能抽象和模塊化,每個(gè)模塊都是一個(gè)過(guò)程。結(jié)構(gòu)化方法處理問(wèn)題是以過(guò)程為個(gè)模塊都是一個(gè)過(guò)程。結(jié)構(gòu)化方法處理問(wèn)題是以過(guò)程為中心的。面向?qū)ο髲?qiáng)調(diào)的是功能抽象和數(shù)據(jù)抽象,用對(duì)中心的。面向?qū)ο髲?qiáng)調(diào)的是功能抽象和數(shù)據(jù)抽象,用對(duì)象來(lái)描述事物和過(guò)程。而對(duì)象包含數(shù)據(jù)和對(duì)數(shù)據(jù)的操作,象來(lái)描述事物和過(guò)程。而對(duì)象包含數(shù)據(jù)和對(duì)數(shù)據(jù)的操作,是對(duì)數(shù)據(jù)和功能的抽
12、象和統(tǒng)一。面向?qū)ο蠓椒ㄌ幚韱?wèn)題是對(duì)數(shù)據(jù)和功能的抽象和統(tǒng)一。面向?qū)ο蠓椒ㄌ幚韱?wèn)題的過(guò)程是對(duì)一系列相關(guān)對(duì)象的操縱,即發(fā)送消息到目標(biāo)的過(guò)程是對(duì)一系列相關(guān)對(duì)象的操縱,即發(fā)送消息到目標(biāo)對(duì)象中,由對(duì)象執(zhí)行相應(yīng)的操作。因此面向?qū)ο蠓椒ㄊ菍?duì)象中,由對(duì)象執(zhí)行相應(yīng)的操作。因此面向?qū)ο蠓椒ㄊ且詫?duì)象為中心的,這種以對(duì)象為中心的方法更自然、更以對(duì)象為中心的,這種以對(duì)象為中心的方法更自然、更直接地反映現(xiàn)實(shí)世界的問(wèn)題空間,具有獨(dú)特的抽象性、直接地反映現(xiàn)實(shí)世界的問(wèn)題空間,具有獨(dú)特的抽象性、封裝性、繼承性和多態(tài)性,能更好地適應(yīng)復(fù)雜大系統(tǒng)不封裝性、繼承性和多態(tài)性,能更好地適應(yīng)復(fù)雜大系統(tǒng)不斷發(fā)展與變化的要求。斷發(fā)展與變化的要求。1
13、.31.3結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì) 1. 1.結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì) 程序程序= =數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+ +算法算法+ +程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言+ +語(yǔ)言環(huán)境語(yǔ)言環(huán)境 1. 結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法 2.2.面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)程序設(shè)計(jì)的新思維程序設(shè)計(jì)的新思維是計(jì)算機(jī)內(nèi)存中的一塊區(qū)域,通過(guò)將內(nèi)存分塊,是計(jì)算機(jī)內(nèi)存中的一塊區(qū)域,通過(guò)將內(nèi)存分塊,每個(gè)模塊(即對(duì)象)在功能上相互之間保持相對(duì)獨(dú)立。每個(gè)模塊(即對(duì)象)在功能上相互之間保持相對(duì)獨(dú)立。當(dāng)對(duì)象的一個(gè)成員函數(shù)被調(diào)用時(shí),對(duì)象執(zhí)行其內(nèi)部的代當(dāng)對(duì)象的一個(gè)成員函數(shù)被調(diào)用時(shí),對(duì)象執(zhí)行其內(nèi)
14、部的代碼來(lái)響應(yīng)這個(gè)調(diào)用,這使對(duì)象呈現(xiàn)出一定的行為。行為碼來(lái)響應(yīng)這個(gè)調(diào)用,這使對(duì)象呈現(xiàn)出一定的行為。行為及其結(jié)果就是該對(duì)象的功能。及其結(jié)果就是該對(duì)象的功能。是一種認(rèn)識(shí)世界的方法也是一種程序設(shè)計(jì)方是一種認(rèn)識(shí)世界的方法也是一種程序設(shè)計(jì)方法。面向?qū)ο蟮挠^點(diǎn)認(rèn)為,客觀世界是由各種各樣的實(shí)法。面向?qū)ο蟮挠^點(diǎn)認(rèn)為,客觀世界是由各種各樣的實(shí)體,也就是對(duì)象組成的。每種對(duì)象都有自己的內(nèi)部狀態(tài)體,也就是對(duì)象組成的。每種對(duì)象都有自己的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,不同對(duì)象間的相互聯(lián)系和相互作用就構(gòu)成和運(yùn)動(dòng)規(guī)律,不同對(duì)象間的相互聯(lián)系和相互作用就構(gòu)成了各種不同的系統(tǒng),并進(jìn)而構(gòu)成整個(gè)客觀世界。按照這了各種不同的系統(tǒng),并進(jìn)而構(gòu)成整個(gè)客
15、觀世界。按照這樣的思想設(shè)計(jì)程序,就是面向?qū)ο蟮某绦蛟O(shè)計(jì)。樣的思想設(shè)計(jì)程序,就是面向?qū)ο蟮某绦蛟O(shè)計(jì)。“面向面向?qū)ο髮?duì)象”不僅僅作為一種技術(shù)、更作為一種方法貫穿于軟不僅僅作為一種技術(shù)、更作為一種方法貫穿于軟件設(shè)計(jì)的各個(gè)階段。件設(shè)計(jì)的各個(gè)階段。 是在面向過(guò)程的程序設(shè)計(jì)基礎(chǔ)上的是在面向過(guò)程的程序設(shè)計(jì)基礎(chǔ)上的質(zhì)的飛躍。面向?qū)ο蠓椒ǖ漠a(chǎn)生,是計(jì)算機(jī)科學(xué)發(fā)展的質(zhì)的飛躍。面向?qū)ο蠓椒ǖ漠a(chǎn)生,是計(jì)算機(jī)科學(xué)發(fā)展的要求。面向?qū)ο蟮募夹g(shù)在系統(tǒng)程序設(shè)計(jì)、數(shù)據(jù)庫(kù)及多媒要求。面向?qū)ο蟮募夹g(shù)在系統(tǒng)程序設(shè)計(jì)、數(shù)據(jù)庫(kù)及多媒體應(yīng)用等領(lǐng)域都得到廣泛應(yīng)用。體應(yīng)用等領(lǐng)域都得到廣泛應(yīng)用。 2. 面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)OOP1.4
16、 1.4 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?和面向?qū)ο笙到y(tǒng)的特性和面向?qū)ο笙到y(tǒng)的特性1.4.1 1.4.1 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?.1.對(duì)象對(duì)象(object)(object)(1)(1)具有唯一標(biāo)識(shí)名,可以區(qū)別于其他對(duì)象。具有唯一標(biāo)識(shí)名,可以區(qū)別于其他對(duì)象。(2)(2)具有一個(gè)狀態(tài),由與其相關(guān)聯(lián)的屬性值集合所表征。具有一個(gè)狀態(tài),由與其相關(guān)聯(lián)的屬性值集合所表征。(3)(3)有一組操作方法即服務(wù),每個(gè)操作決定對(duì)象的一種行為。有一組操作方法即服務(wù),每個(gè)操作決定對(duì)象的一種行為。(4)(4)一個(gè)對(duì)象的成員仍可以是一個(gè)對(duì)象。一個(gè)對(duì)象的成員仍可以是一個(gè)對(duì)象。(5)(5)模塊獨(dú)立性模塊獨(dú)
17、立性。(6)(6)動(dòng)態(tài)連接性動(dòng)態(tài)連接性(7)(7)易維護(hù)性易維護(hù)性 從邏輯上看,一個(gè)對(duì)象是獨(dú)立存在的模從邏輯上看,一個(gè)對(duì)象是獨(dú)立存在的模塊。模塊內(nèi)部狀態(tài)不因外界的干擾而改塊。模塊內(nèi)部狀態(tài)不因外界的干擾而改變,也不會(huì)涉及到其他模塊;模塊間的變,也不會(huì)涉及到其他模塊;模塊間的依賴性極小或幾乎沒(méi)有;各模塊可獨(dú)立依賴性極小或幾乎沒(méi)有;各模塊可獨(dú)立地被系統(tǒng)所組合選用,也可被程序員重地被系統(tǒng)所組合選用,也可被程序員重用,不必?fù)?dān)心破壞其他模塊。用,不必?fù)?dān)心破壞其他模塊??陀^世界中的對(duì)象之間是有聯(lián)系的,在客觀世界中的對(duì)象之間是有聯(lián)系的,在面向?qū)ο蟪绦蛟O(shè)計(jì)中,通過(guò)消息機(jī)制,面向?qū)ο蟪绦蛟O(shè)計(jì)中,通過(guò)消息機(jī)制,把對(duì)
18、象之間動(dòng)態(tài)連接在一起,使整個(gè)機(jī)把對(duì)象之間動(dòng)態(tài)連接在一起,使整個(gè)機(jī)體運(yùn)轉(zhuǎn)起來(lái),便稱為對(duì)象的連接性。有體運(yùn)轉(zhuǎn)起來(lái),便稱為對(duì)象的連接性。有一組操作(服務(wù)),每一個(gè)操作決定對(duì)一組操作(服務(wù)),每一個(gè)操作決定對(duì)象的一種功能或行為。象的一種功能或行為。 在面向?qū)ο笙到y(tǒng)中,并不是將各個(gè)具體的對(duì)象都在面向?qū)ο笙到y(tǒng)中,并不是將各個(gè)具體的對(duì)象都進(jìn)行描述,而是忽略其非本質(zhì)的特性,找出其共性,進(jìn)行描述,而是忽略其非本質(zhì)的特性,找出其共性,將對(duì)象劃分成不同的類,這一過(guò)程為抽象過(guò)程。類是將對(duì)象劃分成不同的類,這一過(guò)程為抽象過(guò)程。類是對(duì)象的抽象及描述,是具有共同屬性和操作的多個(gè)對(duì)對(duì)象的抽象及描述,是具有共同屬性和操作的多個(gè)
19、對(duì)象的相似特性的統(tǒng)一描述體。在類的描述中,每個(gè)類象的相似特性的統(tǒng)一描述體。在類的描述中,每個(gè)類要有一個(gè)名字標(biāo)識(shí),用以表示一組對(duì)象的共同特征。要有一個(gè)名字標(biāo)識(shí),用以表示一組對(duì)象的共同特征。類中的每個(gè)對(duì)象都是該類的實(shí)例。類提供了完整的解類中的每個(gè)對(duì)象都是該類的實(shí)例。類提供了完整的解決特定問(wèn)題的能力,因?yàn)轭惷枋隽藬?shù)據(jù)結(jié)構(gòu)(對(duì)象屬?zèng)Q特定問(wèn)題的能力,因?yàn)轭惷枋隽藬?shù)據(jù)結(jié)構(gòu)(對(duì)象屬性)、算法(服務(wù)、方法)和外部接口(消息協(xié)議),性)、算法(服務(wù)、方法)和外部接口(消息協(xié)議),是一種是一種用戶自定義的數(shù)據(jù)類型用戶自定義的數(shù)據(jù)類型。 3. 消息消息(message) 消息是面向?qū)ο笙到y(tǒng)中實(shí)現(xiàn)對(duì)象間的通信和請(qǐng)求消
20、息是面向?qū)ο笙到y(tǒng)中實(shí)現(xiàn)對(duì)象間的通信和請(qǐng)求任務(wù)的操作,是要求某個(gè)對(duì)象執(zhí)行其中某個(gè)功能操作任務(wù)的操作,是要求某個(gè)對(duì)象執(zhí)行其中某個(gè)功能操作的規(guī)格說(shuō)明。發(fā)送消息的對(duì)象稱為發(fā)送者,接受消息的規(guī)格說(shuō)明。發(fā)送消息的對(duì)象稱為發(fā)送者,接受消息的對(duì)象稱為接收者。對(duì)象間的聯(lián)系,只能通過(guò)消息來(lái)的對(duì)象稱為接收者。對(duì)象間的聯(lián)系,只能通過(guò)消息來(lái)進(jìn)行。對(duì)象在接收到消息時(shí)才被激活。進(jìn)行。對(duì)象在接收到消息時(shí)才被激活。消息具有消息具有三個(gè)性質(zhì)三個(gè)性質(zhì):(1) (1) 同一對(duì)象可接收不同形式的多個(gè)消息,產(chǎn)生不同一對(duì)象可接收不同形式的多個(gè)消息,產(chǎn)生不同的響應(yīng);同的響應(yīng);(2) (2) 相同形式的消息可以送給不同對(duì)象,所做出的相同形式的
21、消息可以送給不同對(duì)象,所做出的響應(yīng)可以是截然不同的;響應(yīng)可以是截然不同的;(3) (3) 消息的發(fā)送可以不考慮具體的接收者,對(duì)象可消息的發(fā)送可以不考慮具體的接收者,對(duì)象可以響應(yīng)消息,也可以對(duì)消息不予理會(huì),對(duì)消息的響應(yīng)以響應(yīng)消息,也可以對(duì)消息不予理會(huì),對(duì)消息的響應(yīng)并不是必須的。并不是必須的。 對(duì)象之間傳送的消息一般由三部分組成:對(duì)象之間傳送的消息一般由三部分組成:接受對(duì)象名、調(diào)用操作名和必要的參數(shù)。接受對(duì)象名、調(diào)用操作名和必要的參數(shù)。 在面向?qū)ο蟪绦蛟O(shè)計(jì)中,消息分為兩類:在面向?qū)ο蟪绦蛟O(shè)計(jì)中,消息分為兩類:公有消息和私有消息。假設(shè)有一批消息發(fā)向同公有消息和私有消息。假設(shè)有一批消息發(fā)向同一個(gè)對(duì)象,
22、其中一部分消息是由其他對(duì)象直接一個(gè)對(duì)象,其中一部分消息是由其他對(duì)象直接向它發(fā)送的,稱為公有(向它發(fā)送的,稱為公有(publicpublic)消息;另一)消息;另一部分消息是它向自己發(fā)送的,稱為私有部分消息是它向自己發(fā)送的,稱為私有(privateprivate)消息。)消息。 在面向?qū)ο蟪绦蛟O(shè)計(jì)中,要求某一對(duì)象做某一操在面向?qū)ο蟪绦蛟O(shè)計(jì)中,要求某一對(duì)象做某一操作時(shí),就向?qū)ο蟀l(fā)送一個(gè)相應(yīng)的消息,當(dāng)對(duì)象接收到作時(shí),就向?qū)ο蟀l(fā)送一個(gè)相應(yīng)的消息,當(dāng)對(duì)象接收到發(fā)向它的消息時(shí),就調(diào)用有關(guān)的方法,執(zhí)行相應(yīng)的操發(fā)向它的消息時(shí),就調(diào)用有關(guān)的方法,執(zhí)行相應(yīng)的操作。方法就是對(duì)象所能執(zhí)行的操作。作。方法就是對(duì)象所能執(zhí)
23、行的操作。方法的界面就是消息的模式,它給出方法的界面就是消息的模式,它給出了方法的調(diào)用協(xié)議;方法體則是實(shí)現(xiàn)某種操作的一系了方法的調(diào)用協(xié)議;方法體則是實(shí)現(xiàn)某種操作的一系列計(jì)算步驟,也就是一段程序。消息和方法的關(guān)系是:列計(jì)算步驟,也就是一段程序。消息和方法的關(guān)系是:對(duì)象根據(jù)接收到的消息,調(diào)用相應(yīng)的方法;反過(guò)來(lái),對(duì)象根據(jù)接收到的消息,調(diào)用相應(yīng)的方法;反過(guò)來(lái),有了方法,對(duì)象才能響應(yīng)相應(yīng)的消息。所以消息模式有了方法,對(duì)象才能響應(yīng)相應(yīng)的消息。所以消息模式與方法界面應(yīng)該是一致的。同時(shí),只要方法界面保持與方法界面應(yīng)該是一致的。同時(shí),只要方法界面保持不變,方法體的改動(dòng)不會(huì)影響方法的調(diào)用。在不變,方法體的改動(dòng)不會(huì)
24、影響方法的調(diào)用。在C+C+語(yǔ)言語(yǔ)言中方法是通過(guò)函數(shù)來(lái)實(shí)現(xiàn)的,稱為中方法是通過(guò)函數(shù)來(lái)實(shí)現(xiàn)的,稱為成員函數(shù)。成員函數(shù)。 1.4.2 1.4.2 面向?qū)ο笙到y(tǒng)的特性面向?qū)ο笙到y(tǒng)的特性(1 1) 抽象性抽象性面向?qū)ο蠊膭?lì)程序員以抽象的觀點(diǎn)看待程序,即面向?qū)ο蠊膭?lì)程序員以抽象的觀點(diǎn)看待程序,即程序是由一組對(duì)象組成的。我們可以將一組對(duì)象的共程序是由一組對(duì)象組成的。我們可以將一組對(duì)象的共同特征進(jìn)一步抽象出來(lái),從而形成同特征進(jìn)一步抽象出來(lái),從而形成“類類”的概念。抽的概念。抽象是一種從一般的觀點(diǎn)看待事物的方法,它要求程序象是一種從一般的觀點(diǎn)看待事物的方法,它要求程序員集中于事物的本質(zhì)特征,而不是具體細(xì)節(jié)或具體
25、實(shí)員集中于事物的本質(zhì)特征,而不是具體細(xì)節(jié)或具體實(shí)現(xiàn)。類的概念來(lái)自人們認(rèn)識(shí)自然、認(rèn)識(shí)社會(huì)的過(guò)程?,F(xiàn)。類的概念來(lái)自人們認(rèn)識(shí)自然、認(rèn)識(shí)社會(huì)的過(guò)程。在這一過(guò)程中,人們主要使用兩種方法:從特殊到一在這一過(guò)程中,人們主要使用兩種方法:從特殊到一般的歸納法和從一般到特殊的演繹法。在歸納的過(guò)程般的歸納法和從一般到特殊的演繹法。在歸納的過(guò)程中,我們從一個(gè)個(gè)具體的事物中把共同的特征抽取出中,我們從一個(gè)個(gè)具體的事物中把共同的特征抽取出來(lái),形成一個(gè)一般的概念,這就是來(lái),形成一個(gè)一般的概念,這就是“歸類歸類”;在演繹;在演繹的過(guò)程中,我們又把同類的事物,根據(jù)不同的特征分的過(guò)程中,我們又把同類的事物,根據(jù)不同的特征分成不
26、同的小類,這就是成不同的小類,這就是“分類分類”。對(duì)于一個(gè)具體的類,。對(duì)于一個(gè)具體的類,它有許多具體的個(gè)體,我們稱這些個(gè)體叫做它有許多具體的個(gè)體,我們稱這些個(gè)體叫做“對(duì)象對(duì)象”。 所謂數(shù)據(jù)封裝就是指一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的所謂數(shù)據(jù)封裝就是指一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起,形成一個(gè)能動(dòng)的實(shí)體,也就操作集合組裝在一起,形成一個(gè)能動(dòng)的實(shí)體,也就是對(duì)象。數(shù)據(jù)封裝就是給數(shù)據(jù)提供了與外界聯(lián)系的是對(duì)象。數(shù)據(jù)封裝就是給數(shù)據(jù)提供了與外界聯(lián)系的標(biāo)準(zhǔn)接口,無(wú)論是誰(shuí),只有通過(guò)這些接口,使用規(guī)標(biāo)準(zhǔn)接口,無(wú)論是誰(shuí),只有通過(guò)這些接口,使用規(guī)范的方式,才能訪問(wèn)這些數(shù)據(jù)。數(shù)據(jù)封裝是軟件工范的方式,才能訪問(wèn)這些數(shù)
27、據(jù)。數(shù)據(jù)封裝是軟件工程發(fā)展的必然產(chǎn)物,使得程序員在設(shè)計(jì)程序時(shí)可以程發(fā)展的必然產(chǎn)物,使得程序員在設(shè)計(jì)程序時(shí)可以專注于自己的對(duì)象,同時(shí)也切斷了不同模塊之間數(shù)專注于自己的對(duì)象,同時(shí)也切斷了不同模塊之間數(shù)據(jù)的非法使用,減少了出錯(cuò)的可能性。據(jù)的非法使用,減少了出錯(cuò)的可能性。 從已有的對(duì)象類型出發(fā)建立一種新的對(duì)象類型,使它從已有的對(duì)象類型出發(fā)建立一種新的對(duì)象類型,使它繼承原對(duì)象的特點(diǎn)和功能,這種思想是面向?qū)ο笤O(shè)計(jì)繼承原對(duì)象的特點(diǎn)和功能,這種思想是面向?qū)ο笤O(shè)計(jì)方法的主要貢獻(xiàn)。繼承是對(duì)許多問(wèn)題中分層特性的一方法的主要貢獻(xiàn)。繼承是對(duì)許多問(wèn)題中分層特性的一種自然描述,因而也是類的具體化和被重新利用的一種自然描述,
28、因而也是類的具體化和被重新利用的一種手段,它所表達(dá)的就是一種對(duì)象類之間的相交關(guān)系。種手段,它所表達(dá)的就是一種對(duì)象類之間的相交關(guān)系。它使得某類對(duì)象可以繼承另外一類對(duì)象的特征和能力。它使得某類對(duì)象可以繼承另外一類對(duì)象的特征和能力。繼承所具有的作用有兩個(gè)方面:一方面可以減少代碼繼承所具有的作用有兩個(gè)方面:一方面可以減少代碼冗余;另一方面可以通過(guò)協(xié)調(diào)性來(lái)減少相互之間的接冗余;另一方面可以通過(guò)協(xié)調(diào)性來(lái)減少相互之間的接口和界面??诤徒缑?。 從繼承源上劃分從繼承源上劃分繼承可分為單繼承(單一繼承)和多繼承可分為單繼承(單一繼承)和多繼承(多重繼承)。繼承(多重繼承)。 從繼承內(nèi)容上從繼承內(nèi)容上繼承可分為取代
29、繼承、包含繼承、受限繼承可分為取代繼承、包含繼承、受限繼承、特化繼承。繼承、特化繼承。 (1) (1) 取代繼承取代繼承:例如一個(gè)徒弟從其師傅那里學(xué)到師傅:例如一個(gè)徒弟從其師傅那里學(xué)到師傅的所有技術(shù),則在任何需要師傅的地方都可以由徒弟來(lái)的所有技術(shù),則在任何需要師傅的地方都可以由徒弟來(lái)代替。代替。 (2) (2) 包含繼承包含繼承:例如交通工具是一類對(duì)象,汽車是一:例如交通工具是一類對(duì)象,汽車是一種特殊的交通工具。汽車具有了交通工具的所有特征,種特殊的交通工具。汽車具有了交通工具的所有特征,任何一輛汽車都是一種交通工具,這便是包含繼承,即任何一輛汽車都是一種交通工具,這便是包含繼承,即交通工具包
30、含了汽車的所有特征。交通工具包含了汽車的所有特征。 (3) (3) 受限繼承受限繼承:例如鴕鳥(niǎo)是一種特殊的鳥(niǎo),它不能繼:例如鴕鳥(niǎo)是一種特殊的鳥(niǎo),它不能繼承鳥(niǎo)會(huì)飛的特征。承鳥(niǎo)會(huì)飛的特征。 (4) (4) 特化繼承特化繼承:例如教師是一類特殊的人,他們比一:例如教師是一類特殊的人,他們比一般人具有更多的特有信息,這就是特化繼承。般人具有更多的特有信息,這就是特化繼承。不同的對(duì)象接收到相同的消息時(shí)產(chǎn)生多種完不同的對(duì)象接收到相同的消息時(shí)產(chǎn)生多種完全不同的行為的現(xiàn)象稱為多態(tài)性。全不同的行為的現(xiàn)象稱為多態(tài)性。C+C+語(yǔ)言支語(yǔ)言支持兩種多態(tài)性即編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多持兩種多態(tài)性即編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的
31、多態(tài)性。編譯時(shí)的多態(tài)性通過(guò)重載函數(shù)實(shí)現(xiàn),而態(tài)性。編譯時(shí)的多態(tài)性通過(guò)重載函數(shù)實(shí)現(xiàn),而運(yùn)行時(shí)的多態(tài)性通過(guò)虛函數(shù)實(shí)現(xiàn)。使用多態(tài)性運(yùn)行時(shí)的多態(tài)性通過(guò)虛函數(shù)實(shí)現(xiàn)。使用多態(tài)性可以大大提高了我們解決復(fù)雜問(wèn)題的能力??梢源蟠筇岣吡宋覀兘鉀Q復(fù)雜問(wèn)題的能力。 (4) C(4) C家族家族 在在1919世紀(jì)世紀(jì)8080年代,年代,C C語(yǔ)言成為一種極其流行、應(yīng)用非常廣語(yǔ)言成為一種極其流行、應(yīng)用非常廣泛的語(yǔ)言。泛的語(yǔ)言。C+C+是在是在C C語(yǔ)言的基礎(chǔ)上進(jìn)行擴(kuò)充,并增加了類似語(yǔ)言的基礎(chǔ)上進(jìn)行擴(kuò)充,并增加了類似SmalltalkSmalltalk語(yǔ)言中相應(yīng)的對(duì)象機(jī)制。它將語(yǔ)言中相應(yīng)的對(duì)象機(jī)制。它將“類類”看作是用戶定看
32、作是用戶定義類型,使其擴(kuò)充比較自然。義類型,使其擴(kuò)充比較自然。C+C+以其高效的執(zhí)行效率贏得了以其高效的執(zhí)行效率贏得了廣大程序設(shè)計(jì)員的青睞是一種混合型的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)廣大程序設(shè)計(jì)員的青睞是一種混合型的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,由于它的出現(xiàn),才使面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言越來(lái)越得言,由于它的出現(xiàn),才使面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言越來(lái)越得到重視和廣泛的應(yīng)用。到重視和廣泛的應(yīng)用。 面向?qū)ο笳Z(yǔ)言可以分為兩大類,純粹的面向?qū)ο笳Z(yǔ)言和面向?qū)ο笳Z(yǔ)言可以分為兩大類,純粹的面向?qū)ο笳Z(yǔ)言和混合型的面向?qū)ο笳Z(yǔ)言。在純粹的面向?qū)ο笳Z(yǔ)言中,幾乎所混合型的面向?qū)ο笳Z(yǔ)言。在純粹的面向?qū)ο笳Z(yǔ)言中,幾乎所有的語(yǔ)言成分都是有的語(yǔ)言成分都是“對(duì)象對(duì)象”,這類語(yǔ)言強(qiáng)調(diào)開(kāi)發(fā)快速原型的,這類語(yǔ)言強(qiáng)調(diào)開(kāi)發(fā)快速原型的能力;而混合型的面向?qū)ο笳Z(yǔ)言,是在傳統(tǒng)的過(guò)程化語(yǔ)言中能力;而混合型的面向?qū)ο笳Z(yǔ)言,是在傳統(tǒng)的過(guò)程化語(yǔ)言中加入了各種面向?qū)ο蟮恼Z(yǔ)言機(jī)制,它所強(qiáng)調(diào)的是運(yùn)行效率。加入了各種面向?qū)ο蟮恼Z(yǔ)言機(jī)制,它所強(qiáng)調(diào)的是運(yùn)行效率。真正的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言提供了特定的語(yǔ)法成分來(lái)保證真正的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言提供了特定的語(yǔ)法成分來(lái)保證和支持
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度二零二五民間借貸合同風(fēng)險(xiǎn)評(píng)估與管理范本4篇
- 二零二五年度抹灰工程綠色施工與環(huán)保合同4篇
- 二零二五年度教育培訓(xùn)場(chǎng)地租賃合同模板4篇
- 2025年度派駐技術(shù)支持服務(wù)合同模板范本4篇
- 2025年度個(gè)人二手房交易糾紛調(diào)解服務(wù)合同
- 2025年建筑工程施工項(xiàng)目經(jīng)理勞動(dòng)合同模板2篇
- 二零二五醫(yī)療治療期間員工勞動(dòng)合同補(bǔ)充協(xié)議3篇
- 二零二五年度新型農(nóng)村合作社勞動(dòng)者勞動(dòng)合同書(shū)
- 2025年度智能家居系統(tǒng)安裝與維護(hù)個(gè)人房屋裝修合同標(biāo)準(zhǔn)范本2篇
- 2024版預(yù)售房屋購(gòu)買合同書(shū)
- GB/T 43650-2024野生動(dòng)物及其制品DNA物種鑒定技術(shù)規(guī)程
- 2024年南京鐵道職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 暴發(fā)性心肌炎查房
- 口腔醫(yī)學(xué)中的人工智能應(yīng)用培訓(xùn)課件
- 工程質(zhì)保金返還審批單
- 【可行性報(bào)告】2023年電動(dòng)自行車項(xiàng)目可行性研究分析報(bào)告
- 五月天歌詞全集
- 商品退換貨申請(qǐng)表模板
- 實(shí)習(xí)單位鑒定表(模板)
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
- 2023年常州市新課結(jié)束考試九年級(jí)數(shù)學(xué)試卷(含答案)
評(píng)論
0/150
提交評(píng)論