版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C++語言與面向?qū)ο蟪绦蛟O(shè)計(jì)貴州大學(xué)計(jì)算機(jī)科學(xué)系C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第1頁。課程安排上課:第1~18周星期三〔單〕,五主講教師:張永軍上機(jī):第3~18周星期四(晚)
指導(dǎo)教師:張永軍課程〔綜合〕設(shè)計(jì)根據(jù)課程安排〕C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第2頁。教學(xué)目標(biāo)了解面向?qū)ο蠓椒ǖ母靖拍盍私饷嫦驅(qū)ο蟪绦蛟O(shè)計(jì)方法的根本思想和特點(diǎn)能夠利用面向?qū)ο蠹夹g(shù),使用C++語言工具進(jìn)展面向?qū)ο缶幊藽語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第3頁。C++語言與面向?qū)ο蟮脑O(shè)計(jì)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概論C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第4頁。1.1程序設(shè)計(jì)技術(shù)的開展機(jī)器語言是硬件邏輯設(shè)計(jì)所實(shí)現(xiàn)的機(jī)器指令的集合,也就是由硬件所能實(shí)現(xiàn)的語義序列集合。其表現(xiàn)形式為能被機(jī)器直接接收的二進(jìn)制代碼序列。匯編語言是機(jī)器語言的直接符號(hào)映射。它用人類能夠理解的助記符號(hào)來表示機(jī)器指令、存放器、存儲(chǔ)器地址等物理概念,以提高程序的可讀性。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第5頁。
早期的計(jì)算機(jī)應(yīng)用以問題求解為主要目標(biāo),算法的設(shè)計(jì)和實(shí)現(xiàn)是程序設(shè)計(jì)活動(dòng)的焦點(diǎn)。注重追求算法的效率,并不特別注意算法與數(shù)據(jù)構(gòu)造的依賴關(guān)系,算法和數(shù)據(jù)處于相對(duì)獨(dú)立的狀態(tài)。面向問題的語言C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第6頁。 FORTRAN語言引入了程序設(shè)計(jì)語言中程序控制構(gòu)造、符號(hào)命名機(jī)制等一些最重要的根本概念。例如:命名子程序、變量作為存儲(chǔ)單元的抽象以及數(shù)組的概念等。
隨著編譯技術(shù)的突破產(chǎn)生的高級(jí)語言用接近人類習(xí)慣的自然語言或數(shù)學(xué)語言表達(dá)問題、編制程序。 高級(jí)語言通過引入一些抽象概念,屏蔽機(jī)器底層的差異,使它獨(dú)立于機(jī)器,不但有效地提高了程序設(shè)計(jì)的效率,也帶來了程序的可移植性。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第7頁。由于算法總是以過程〔子程序〕的形式出現(xiàn),面向問題的程序也叫做過程化程序設(shè)計(jì)。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第8頁。模塊化程序設(shè)計(jì)
FORTRAN語言還引入了獨(dú)立編譯的模塊和可重用子程序庫的概念,這種技術(shù)后來被稱為模塊化程序設(shè)計(jì)。 模塊化的思想是將應(yīng)用程序劃分假設(shè)干個(gè)規(guī)模適度的模塊,每個(gè)模塊獨(dú)立命名、獨(dú)立編譯,最后通過連接程序形成可招待的應(yīng)用程序。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第9頁。模塊化程序設(shè)計(jì)帶來了以下一些重要概念: 模塊內(nèi)信息隱藏,一個(gè)模塊中的變量可以與其它模塊中的變量同名而不至于產(chǎn)生混淆; 模塊間通過全局環(huán)境共享數(shù)據(jù); 模塊間通過外部變量、公共變量實(shí)現(xiàn)通信。 模塊化程序設(shè)計(jì)倡導(dǎo)的這些概念被證明是程序組織和管理有效的根本手段,在以后程序設(shè)計(jì)技術(shù)開展的各個(gè)階段得以延續(xù)和開展。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第10頁。
研究證明,僅用順序,分支,循環(huán)三種根本控制構(gòu)造即能構(gòu)造出任何單入口、單出口的程序塊。 這些研究結(jié)果與模塊化的概念相結(jié)合,形成了采用自頂向下、逐步求精的設(shè)計(jì)步驟和單入口單出口根本控制構(gòu)造的構(gòu)造化程序設(shè)計(jì)方法。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第11頁。 Pascal語言和C語言都是構(gòu)造化程序設(shè)計(jì)語言。同時(shí)它們也是過程化程序設(shè)計(jì)語言。
Pascal語言用過程來組織程序。
C語言用函數(shù)來組織程序。過程(Procedure)和函數(shù)(Function)是子程序(Subroutine)的兩種具體形式。過程沒有返回值。函數(shù)函數(shù)有且只有一個(gè)返回值。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第12頁。
構(gòu)造化程序設(shè)計(jì)的研究中有一個(gè)重要的結(jié)論,表示為公式:程序=算法+數(shù)據(jù)構(gòu)造,強(qiáng)調(diào)算法對(duì)數(shù)據(jù)構(gòu)造的依賴性,表達(dá)了一種數(shù)據(jù)構(gòu)造為中心的觀念。 大多數(shù)構(gòu)造化語言都具有定義新的數(shù)據(jù)類型的功能,如C語言中枚舉(enum)、構(gòu)造(struct)類型等。這有利于比較準(zhǔn)確地描述待求解問題中的實(shí)體,并保證數(shù)據(jù)的一致性。數(shù)據(jù)庫技術(shù)和數(shù)據(jù)庫管理語言也表達(dá)了程序設(shè)計(jì)以數(shù)據(jù)構(gòu)造為中心的鮮明特色。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第13頁。以數(shù)據(jù)構(gòu)造為中心的蔽端: 整個(gè)程序中許多重要的過程和函數(shù)的實(shí)現(xiàn)依賴于一個(gè)或幾個(gè)關(guān)鍵數(shù)據(jù)構(gòu)造,如果關(guān)鍵數(shù)據(jù)構(gòu)造中的一個(gè)或幾個(gè)數(shù)據(jù)有所改變,那么會(huì)涉及到整個(gè)系統(tǒng),許多過程和函數(shù)必須重寫。這是不利于程序的維護(hù)和擴(kuò)展的。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第14頁。面向?qū)ο蟮某绦蛟O(shè)計(jì)方法繼承了構(gòu)造化、過程化、模塊化等方法的所有積極成分,創(chuàng)造性地引入了“對(duì)象〞這一構(gòu)建程序的根本構(gòu)件。
對(duì)象是由數(shù)據(jù)構(gòu)造和對(duì)數(shù)據(jù)構(gòu)造的操作或運(yùn)算封裝而成的一個(gè)整體。
封裝使得算法和數(shù)據(jù)構(gòu)造的關(guān)系由算法對(duì)數(shù)據(jù)構(gòu)造單方面的依賴變成了相互依存的關(guān)系。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第15頁。
在面向?qū)ο蟮能浖到y(tǒng)中,一個(gè)個(gè)不同類型的對(duì)象相互作用,自底向上構(gòu)建起整個(gè)程序系統(tǒng)。它以 “對(duì)象=數(shù)據(jù)構(gòu)造+算法, 程序=對(duì)象+對(duì)象…+對(duì)象〞取代了“程序=數(shù)據(jù)構(gòu)造+算法〞的傳統(tǒng)程序設(shè)計(jì)模式。因而引起了一場(chǎng)程序設(shè)計(jì)觀念的革命。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第16頁。
面向?qū)ο蠓椒ú捎脭?shù)據(jù)抽象與隱藏、層次構(gòu)造體系,動(dòng)態(tài)綁定等概念和措施,提供一種模擬人類認(rèn)知方式的軟件系統(tǒng)建模方法,帶來了系統(tǒng)的平安性、可擴(kuò)大性、代碼重用、易維護(hù)等人們期待的特性。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第17頁。OOPL的來源與開展
OOPL〔ObjectOrientedProgrammingLanguage面向?qū)ο蟪绦蛟O(shè)計(jì)語言〕 20世紀(jì)60年代,由挪威計(jì)算中心OleDahl和KrystenNygaard.主持開發(fā)的Simula67被公認(rèn)為是面向?qū)ο笳Z言的先驅(qū)。
20世紀(jì)70年代,由美國國防部資助開發(fā)的Ada語言,以它對(duì)抽象數(shù)據(jù)類型的支持,而在面向?qū)ο笳Z言開展中占有重要地位。 Simula67和Ada被看作是OOPL的兩個(gè)直接的“祖先〞,一個(gè)引入“模擬〞,一個(gè)引入“抽象〞。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第18頁。
20世紀(jì)70年代到80年代,美國Xerox公司,PaloAlto研究中心〔PARC〕的AlanKay,AdaleGoldberg和DanIngans等人主持開發(fā)的Smalltalk語言正式使用了“面向?qū)ο蟥曔@個(gè)術(shù)語。它的問世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計(jì)方法的正式形成。
1981年推出的Smalltalk-80是Smalltalk語言最完善的版本。它是第一個(gè)能夠?qū)嶋H應(yīng)用的純的面向?qū)ο笳Z言。在Smalltalk_80中類和對(duì)象不僅僅是語言成分,而且是交互式程序設(shè)計(jì)環(huán)境的組成局部。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第19頁。 80年代中期,Simular67、Smalltalk_80等語言的影響僅僅局限在學(xué)術(shù)界。面向?qū)ο笳Z言對(duì)計(jì)算平臺(tái)的特殊要求使這些語言難于被軟件開發(fā)商和程序員承受。 貝爾實(shí)驗(yàn)室的BjarneStroustrup及其研究小組在當(dāng)時(shí)最受歡送的C語言根底上開發(fā)的C++語言,引入了對(duì)面向?qū)ο蟾拍畹闹С帧?/p>
C++語言以其與C語言兼容、高運(yùn)行效率等優(yōu)良特性,使面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)受到軟件工業(yè)界的廣泛關(guān)注,使之進(jìn)入一個(gè)全面開展的時(shí)期。盡管C++只能算作一種混合式面向?qū)ο笳Z言。但是正是由于大量C程序員通過C++的幫助才迅速掌握了面向?qū)ο蟮母拍詈头椒?,全面促進(jìn)了面向?qū)ο蠹夹g(shù)的應(yīng)用,從而使C++成為最有影響的面向?qū)ο笳Z言,甚至許多人把C++當(dāng)作面向?qū)ο蟮拇~。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第20頁。
面向?qū)ο蠹夹g(shù)的流行進(jìn)一步促進(jìn)了面向?qū)ο笳Z言的繁榮。90年代涌現(xiàn)出了一大批實(shí)用的面向?qū)ο笳Z言,如ObjectPascal、Eiffel、Java等等。
Java語言是由SunMicrosystem公司推出的一種純面向?qū)ο笳Z言。Java從C++語言中繼承了大量的語言成分,拋棄了C++語言中冗余的和容易引起問題的功能,它將面向?qū)ο?、平臺(tái)無關(guān)性、穩(wěn)定性、平安性等集于一身,提供了一個(gè)良好的程序設(shè)計(jì)環(huán)境,因而成為適合于分布式計(jì)算的程序設(shè)計(jì)語言。
Java語言于90年代中期的迅速流行與它定位于當(dāng)時(shí)迅速開展的Internet的WWW應(yīng)用開發(fā)有關(guān)。展示了面向?qū)ο蠹夹g(shù)與分布式計(jì)算結(jié)合的重大前景。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第21頁。后面向?qū)ο髸r(shí)代的計(jì)算機(jī)語言
程序設(shè)計(jì)語言:C++,Java
腳本語言:JavaScript,VBScript
標(biāo)記語言:SGML,HTML,XML
樣式語言:CSS,XSL
建模語言:UMLC語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第22頁。1.2面向?qū)ο蟮母靖拍?/p>
建立一個(gè)既能在計(jì)算機(jī)系統(tǒng)中自然地表示客觀世界的問題、又能夠超越程序復(fù)雜性障礙的程序設(shè)計(jì)模型。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第23頁。面向?qū)ο蠓椒ㄍㄟ^對(duì)客觀世界和問題世界的直接模擬,建立較為準(zhǔn)確、自然的程序設(shè)計(jì)模型,從而獲得信息處理的更高性能。計(jì)算機(jī)世界〔程序空間〕主觀世界〔問題空間〕客觀世界〔真實(shí)空間〕圖1.1客觀世界、主觀世界和計(jì)算機(jī)世界
C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第24頁。
從計(jì)算機(jī)軟件設(shè)計(jì)的角度,引入類和對(duì)象的概念,將客觀世界和主觀世界中的實(shí)體和問題直接映射到計(jì)算機(jī)世界的程序空間。這就是面向?qū)ο蠓椒ǖ母境霭l(fā)點(diǎn)。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第25頁。分類:從大量相似的實(shí)體中歸納、抽象出一樣特征,為辨識(shí)新的個(gè)體形成參照模式。
對(duì)象和類的概念是面向?qū)ο蠹夹g(shù)中最重要的概念。對(duì)象和類分別對(duì)應(yīng)認(rèn)識(shí)論中實(shí)體和對(duì)實(shí)體的分類。實(shí)體:客觀世界或問題世界中可直接或間接觀察的個(gè)體。 物理實(shí)體:一本書,一輛汽車 觀念實(shí)體:一筆帳,2021北京奧運(yùn)會(huì)抽象是對(duì)具體事物簡化描述的過程,它強(qiáng)調(diào)了系統(tǒng)的某些主要特性面而忽略了其它特性。
C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第26頁。
一個(gè)分類至少應(yīng)抽象出兩個(gè)方面的特征,一是數(shù)據(jù)特征,一是行為特征。
比方人類,有年齡、性別、身高、體重,安康狀態(tài)、所屬工作單位等特征,這些特征可以用一些具體的數(shù)值來描述,屬于數(shù)據(jù)特征。數(shù)據(jù)特征又稱屬性或狀態(tài),是區(qū)分不同個(gè)體的依據(jù)。
人類還有行為特征,如吃飯、走路、學(xué)習(xí)、成長等。行為特征是同一個(gè)類的所有個(gè)體共有的。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第27頁。
在面向?qū)ο笳Z言中通常以下面描述的方式來定義類:類定義:類名1{
私有數(shù)據(jù): 數(shù)據(jù)類型1:屬性數(shù)據(jù)1; 數(shù)據(jù)類型2:屬性數(shù)據(jù)2; 數(shù)據(jù)類型3:屬性數(shù)據(jù)3;
…
公有方法: 方法〔行為〕1; 方法〔行為〕2;
…};類是一個(gè)形體定義,它對(duì)一個(gè)數(shù)據(jù)特性和方法特性的封裝體進(jìn)展說明。類定義中包含兩類成員:數(shù)據(jù)成員和方法成員。類的定義為該類的對(duì)象提供了創(chuàng)立的模式。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第28頁。
根據(jù)已定義的類,可以按下述方式創(chuàng)立對(duì)象:類名1:對(duì)象名1,對(duì)象名2;類名2:對(duì)象名3;…對(duì)象是類的實(shí)例。對(duì)象是按照類提供的模板進(jìn)展的實(shí)體定義,它將為對(duì)象在內(nèi)存中分配實(shí)際的存儲(chǔ)空間。在程序中對(duì)象間相互通信和作用,共同完成程序功能。
類與對(duì)象的關(guān)系就是數(shù)據(jù)類型和該類型變量的關(guān)系。如:
intx.y;floatf1,f2;clockt1,t2;Complexc1,c2,c3;C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第29頁。數(shù)據(jù)類型是不同形式的信息在內(nèi)存中分配方式的根本約定,是構(gòu)造程序的根底。每種程序設(shè)計(jì)語言中都定義了自己的根本數(shù)據(jù)類型集合和利用根本數(shù)據(jù)類型定義的擴(kuò)展數(shù)據(jù)類型。常量、變量甚至函數(shù)都有自己的數(shù)據(jù)類型。C語言等構(gòu)造化程序設(shè)計(jì)語言還為用戶提供了自定義數(shù)據(jù)類型的手段。從抽象數(shù)據(jù)類型的觀點(diǎn)看類和對(duì)象C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第30頁。一個(gè)數(shù)據(jù)類型的定義包括一個(gè)值集和一個(gè)作用于該值集的操作集。如C語言中的int型〔整型〕,其值集為A={n|n∈N,-32768≤n≤+32767},其操作集是加、減、乘、整除、取模等等。面向?qū)ο笳Z言中的類是一種新的用戶自定義數(shù)據(jù)類型—“類〞類型。類的所有數(shù)據(jù)成員形成類類型的值集,類的所有方法成員形成類類型的操作集。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第31頁。以這個(gè)觀點(diǎn)來看,對(duì)象就是“類類型〞的一個(gè)實(shí)例,通常以變量的形式出現(xiàn)。
如果定義了一個(gè)類名為book的類,那么創(chuàng)立book類的對(duì)象b1,b2的語法形式:
bookb1,b2;和聲明根本數(shù)據(jù)類型變量的語法形式:
inta,b;
doublex;完全一樣??梢韵袷褂谜妥兞縜、b,雙精度型變量x一樣使用book型變量b1、b2。
類類型能像內(nèi)部數(shù)據(jù)類型一樣工作。區(qū)別在于程序員定義的類是為了描述具體問題,模擬問題空間中的對(duì)象。實(shí)際上,程序員通過增添自己所需要的新類對(duì)程序設(shè)計(jì)語言本身進(jìn)展了擴(kuò)展。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第32頁。
對(duì)象中所包含的方法實(shí)際上就是過程或函數(shù),方法一定屬于某個(gè)特定類的對(duì)象,是實(shí)現(xiàn)對(duì)象功能算法的代碼塊。 在編寫方法實(shí)現(xiàn)代碼時(shí)仍應(yīng)遵循構(gòu)造化的原那么,使用單入口單出口的幾種根本控制構(gòu)造。關(guān)于“方法〞C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第33頁。在構(gòu)造化程序設(shè)計(jì)中,過程是由使用者顯式調(diào)用的獨(dú)立實(shí)體,對(duì)于一樣的輸入?yún)?shù),每次過程調(diào)用有一樣的結(jié)果。而在面向?qū)ο蟪绦蛴?jì)中,過程作為對(duì)象的方法,不再是獨(dú)立存在的實(shí)體,而是對(duì)象功能的表達(dá)。這使得對(duì)象可以理解為一臺(tái)自動(dòng)機(jī)。對(duì)象的私有數(shù)據(jù)可以看作自動(dòng)機(jī)的狀態(tài)。對(duì)象的狀態(tài)只能由對(duì)象的方法改變。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第34頁。對(duì)象狀態(tài)的改變是通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的。所謂發(fā)送消息,就是從對(duì)象外部調(diào)用對(duì)象的公有方法。發(fā)送消息不同于一般的過程調(diào)用,發(fā)送消息只是觸發(fā)自動(dòng)機(jī),同樣的輸入?yún)?shù)時(shí),可能因?yàn)樽詣?dòng)機(jī)狀態(tài)不同而有不同的輸出結(jié)果。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第35頁。1.3類的根本特性Encapsulate)
類的三大根本特性:封裝性、繼承性和多態(tài)性
類是數(shù)據(jù)成員和方法成員的封裝體。封裝不僅僅是將數(shù)據(jù)和方法這兩種不同的語言成分捆綁在一起,它還具有數(shù)據(jù)隱藏的機(jī)制。 數(shù)據(jù)隱藏是通過限制數(shù)據(jù)的訪問權(quán)限實(shí)現(xiàn)的。一個(gè)類中的數(shù)據(jù)通常被聲明為私有的。不允許從類的外部直接訪問。
封裝和數(shù)據(jù)隱藏不僅防止了數(shù)據(jù)從外部破壞的可能性,更保證了對(duì)象對(duì)于其邊界以外的外部世界作為一個(gè)自足的、透明的實(shí)體存在。
C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第36頁。
引入對(duì)象的封裝機(jī)制的目的是將對(duì)象的使用者和設(shè)計(jì)者區(qū)分開來。
類的公有方法是對(duì)象向?qū)ο蟮氖褂谜唛_放的接口〔Interface〕。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第37頁。從對(duì)象與其外部世界的關(guān)系來看,對(duì)象是一個(gè)在系統(tǒng)中負(fù)有一定責(zé)任的效勞器。外部世界的事件,如人機(jī)交互、其它對(duì)象的狀態(tài)改變等等,可以看作請(qǐng)求對(duì)象效勞的客戶。對(duì)象通過公有方法,向外部聲明自己提供哪些效勞,每個(gè)方法的參數(shù)說明了怎樣使用這些效勞。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第38頁。繼承性(Inheritance)
人類對(duì)于客觀事物的認(rèn)識(shí)過程是沒有止境的。在分類問題上也是這樣,隨著認(rèn)識(shí)水平的提高,原有的類需要?jiǎng)澐殖杉僭O(shè)干個(gè)子類,子類又可以劃分子類的子類,…。這種劃分最終形成一個(gè)樹狀層次體系構(gòu)造。 面向?qū)ο蟪绦蛟O(shè)計(jì)中通過類的繼承性,能夠很好地模擬這種分類方式。
面向?qū)ο笾蓄惖睦^承性描述兩個(gè)類之間的一種特殊關(guān)系,即上面所說的“父-子關(guān)系〞。面向?qū)ο笳Z言中允許利用一個(gè)已定義的類來定義一個(gè)新類,通過這種利用,形成兩個(gè)類之間的繼承關(guān)系。這個(gè)已定義的類稱為基類,新定義的類那么稱為它的子類。子類除了包含基類的所有成員之外,又增加了自己特有的新成員。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第39頁。特殊類一般類一般類特殊類(b)類的特征集合(a)類的實(shí)例集合圖1.2一般類與特殊類的關(guān)系
在由一個(gè)類劃分出子類的過程中,子類必須具有其父類的所有特征,同時(shí)又具有父類中其它成員所沒有的新特征。從成員集合來看,父類包含了子類的所有成員。從各自信息量的多少來看,有“子大于父〞的特點(diǎn),因?yàn)橐枋鲆粋€(gè)子類,必須添加有別于父類中其它成員的新的信息。類間的這種“父子關(guān)系〞反映了類的一般性和特殊性,也稱為“一般-特殊關(guān)系〞。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第40頁。子類定義的偽代碼形式如下:新類聲明:子類名1繼承自:基類名1{
數(shù)據(jù)成員;
…
方法成員;
…}
子類對(duì)象在內(nèi)存中所占的存儲(chǔ)空間一定大于其父類。繼承機(jī)制使得子類對(duì)象創(chuàng)立時(shí)首先要拷貝父類對(duì)象的所有成員,既包括數(shù)據(jù)成員也包括方法成員,不管是公有的還是私有的。在為拷貝而來的成員分配內(nèi)存儲(chǔ)空間之后,再為子類的特有成員分配存儲(chǔ)空間。一個(gè)子類對(duì)象的封裝實(shí)體,在程序運(yùn)行時(shí)與其父類對(duì)象是完全獨(dú)立的。子類對(duì)象在創(chuàng)立時(shí)對(duì)父類對(duì)象的拷貝提供了一種高效的源代碼級(jí)的軟件重用方法。C語言及面向?qū)ο蟪绦蛟O(shè)計(jì)全文共46頁,當(dāng)前為第41頁。
繼承又分為單繼承和多繼承。 單繼承指子類只由一個(gè)基類繼承而來。當(dāng)一個(gè)子類有不止一個(gè)基類時(shí)那么稱為多繼承。
多繼承的例子在生活中并不少見。比
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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è)圖書版權(quán)轉(zhuǎn)讓合同文本參考
- 入孵企業(yè)合作協(xié)議書范本
- 山東省產(chǎn)銷掛聯(lián)合作協(xié)議書范本
- 廈門市簡裝修房屋租賃合同范本
- 聯(lián)合體合作框架協(xié)議書范本
- 光伏安裝銷售合同
- 2025年??谪涍\(yùn)從業(yè)資格證考試題庫答案解析
- 零售業(yè)門店精細(xì)化運(yùn)營管理方案
- 房地產(chǎn)合同注意事項(xiàng)年
- 二零二五年度家居用品包裝設(shè)計(jì)原創(chuàng)保護(hù)協(xié)議
- 中國人口研究專題報(bào)告-中國2025-2100年人口預(yù)測(cè)與政策建議-西南財(cái)經(jīng)大學(xué)x清華大學(xué)-202501
- 建筑工程安全與管理
- 2024年醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范培訓(xùn)課件
- 中華人民共和國學(xué)前教育法-知識(shí)培訓(xùn)
- GB/T 19228.1-2024不銹鋼卡壓式管件組件第1部分:卡壓式管件
- 中藥提取車間生產(chǎn)設(shè)備風(fēng)險(xiǎn)評(píng)估報(bào)告講解
- 實(shí)現(xiàn)結(jié)構(gòu)化:初中語文大單元教學(xué)設(shè)計(jì)的核心
- FZ∕T 54088-2016 錦綸6全牽伸單絲
- 任務(wù)工單1純電動(dòng)汽車動(dòng)力電池檢查與維護(hù)
- 食品銷售流程圖零售
- 物理化學(xué)完整版答案
評(píng)論
0/150
提交評(píng)論