




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第2章章 程序設(shè)計(jì)基礎(chǔ)與程序設(shè)計(jì)基礎(chǔ)與算法算法知識(shí)類型:理論知識(shí)類型:理論學(xué)時(shí):學(xué)時(shí):2學(xué)時(shí)學(xué)時(shí)分值:約分值:約4分分面向?qū)ο蟮恼Z(yǔ)言面向?qū)ο蟮恼Z(yǔ)言l出發(fā)點(diǎn):出發(fā)點(diǎn):l更直接地描述客觀世界中存在的事物更直接地描述客觀世界中存在的事物(對(duì)象對(duì)象)以及它們之間的關(guān)系。以及它們之間的關(guān)系。l特點(diǎn):特點(diǎn):l是高級(jí)語(yǔ)言。是高級(jí)語(yǔ)言。l將客觀事物看作具有將客觀事物看作具有屬性屬性和和行為行為的對(duì)象。的對(duì)象。l通過通過抽象抽象找出同一類對(duì)象的共同屬性和行為,找出同一類對(duì)象的共同屬性和行為,形成形成類類。l通過類的通過類的繼承繼承與與多態(tài)多態(tài)實(shí)現(xiàn)代碼重用實(shí)現(xiàn)代碼重用l優(yōu)點(diǎn):優(yōu)點(diǎn):使程序能夠比較直接地反問題域的
2、本來(lái)面使程序能夠比較直接地反問題域的本來(lái)面目,軟件開發(fā)人員能夠利用人類認(rèn)識(shí)事物所采目,軟件開發(fā)人員能夠利用人類認(rèn)識(shí)事物所采用的一般思維方法來(lái)進(jìn)行軟件開發(fā)。用的一般思維方法來(lái)進(jìn)行軟件開發(fā)。面向?qū)ο蟮恼Z(yǔ)言面向?qū)ο蟮恼Z(yǔ)言程序設(shè)計(jì)方法的發(fā)展歷程程序設(shè)計(jì)方法的發(fā)展歷程 面向面向過程過程的程序設(shè)計(jì)方法的程序設(shè)計(jì)方法l程序的目的:用于數(shù)學(xué)計(jì)算程序的目的:用于數(shù)學(xué)計(jì)算l主要工作:設(shè)計(jì)求解問題的過程主要工作:設(shè)計(jì)求解問題的過程l缺點(diǎn):對(duì)于龐大、復(fù)雜的程序難以開發(fā)和缺點(diǎn):對(duì)于龐大、復(fù)雜的程序難以開發(fā)和維護(hù)維護(hù)程序設(shè)計(jì)方法的發(fā)展歷程程序設(shè)計(jì)方法的發(fā)展歷程面向面向過程過程的的結(jié)構(gòu)化結(jié)構(gòu)化程序設(shè)計(jì)方法程序設(shè)計(jì)方法l設(shè)計(jì)
3、思路設(shè)計(jì)思路l自頂向下、逐步求精。采用模塊分解與功能抽象,自頂自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。向下、分而治之。l程序結(jié)構(gòu):程序結(jié)構(gòu):l按功能劃分為若干個(gè)基本模塊,形成一個(gè)樹狀結(jié)構(gòu)。按功能劃分為若干個(gè)基本模塊,形成一個(gè)樹狀結(jié)構(gòu)。l各模塊間的關(guān)系盡可能簡(jiǎn)單,功能上相對(duì)獨(dú)立;每一模各模塊間的關(guān)系盡可能簡(jiǎn)單,功能上相對(duì)獨(dú)立;每一模塊內(nèi)部均是由塊內(nèi)部均是由順序順序、選擇選擇和和循環(huán)循環(huán)三種基本結(jié)構(gòu)組成。三種基本結(jié)構(gòu)組成。l其模塊化實(shí)現(xiàn)的具體方法是使用子程序。其模塊化實(shí)現(xiàn)的具體方法是使用子程序。程序設(shè)計(jì)方法的發(fā)展歷程程序設(shè)計(jì)方法的發(fā)展歷程面向面向過程過程的的結(jié)構(gòu)化結(jié)構(gòu)化程序
4、設(shè)計(jì)方法程序設(shè)計(jì)方法l優(yōu)點(diǎn):優(yōu)點(diǎn):有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護(hù)。許多易于控制和處理的子任務(wù),便于開發(fā)和維護(hù)。程序設(shè)計(jì)方法的發(fā)展歷程程序設(shè)計(jì)方法的發(fā)展歷程 面向面向過程過程的的結(jié)構(gòu)化結(jié)構(gòu)化程序設(shè)計(jì)方法程序設(shè)計(jì)方法l缺點(diǎn):可重用性差、數(shù)據(jù)安全性差、難以開發(fā)缺點(diǎn):可重用性差、數(shù)據(jù)安全性差、難以開發(fā)大大型型軟件和軟件和圖形界面圖形界面的應(yīng)用軟件的應(yīng)用軟件l把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨(dú)立的實(shí)體。把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨(dú)立的實(shí)體。l當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時(shí),所有相關(guān)的處理過程都要進(jìn)行相當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時(shí)
5、,所有相關(guān)的處理過程都要進(jìn)行相應(yīng)的修改。應(yīng)的修改。l每一種相對(duì)于老問題的新方法都要帶來(lái)額外的開銷。每一種相對(duì)于老問題的新方法都要帶來(lái)額外的開銷。l圖形用戶界面的應(yīng)用程序,很難用過程來(lái)描述和實(shí)現(xiàn),圖形用戶界面的應(yīng)用程序,很難用過程來(lái)描述和實(shí)現(xiàn),開發(fā)和維護(hù)也都很困難。開發(fā)和維護(hù)也都很困難。程序設(shè)計(jì)方法的發(fā)展歷程程序設(shè)計(jì)方法的發(fā)展歷程 面向面向?qū)ο髮?duì)象的方法的方法l將將數(shù)據(jù)數(shù)據(jù)及對(duì)數(shù)據(jù)的及對(duì)數(shù)據(jù)的操作方法操作方法封裝封裝在一起,作為一在一起,作為一個(gè)相互依存、不可分離的整體個(gè)相互依存、不可分離的整體對(duì)象對(duì)象。l對(duì)同類型對(duì)象抽象出其共性,形成對(duì)同類型對(duì)象抽象出其共性,形成類類。l類通過一個(gè)簡(jiǎn)單的類通過
6、一個(gè)簡(jiǎn)單的外部接口外部接口,與外界發(fā)生關(guān)系。,與外界發(fā)生關(guān)系。l對(duì)象與對(duì)象之間通過對(duì)象與對(duì)象之間通過消息消息進(jìn)行通訊。進(jìn)行通訊。程序設(shè)計(jì)方法的發(fā)展歷程程序設(shè)計(jì)方法的發(fā)展歷程 面向面向?qū)ο髮?duì)象的方法的方法l優(yōu)點(diǎn):優(yōu)點(diǎn):l程序模塊間的關(guān)系更為簡(jiǎn)單,程序模塊的獨(dú)立性、程序模塊間的關(guān)系更為簡(jiǎn)單,程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。數(shù)據(jù)的安全性就有了良好的保障。l通過通過繼承繼承與與多態(tài)性多態(tài)性,可以大大提高程序的,可以大大提高程序的可重用性可重用性,使得軟件的使得軟件的開發(fā)開發(fā)和和維護(hù)維護(hù)都更為方便。都更為方便。面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?對(duì)象對(duì)象l一般意義上的對(duì)象:一般意義上的
7、對(duì)象:l是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物。是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物。l可以是可以是有形有形的(比如一輛汽車),也可以是的(比如一輛汽車),也可以是無(wú)形無(wú)形的的(比如一項(xiàng)計(jì)劃)。(比如一項(xiàng)計(jì)劃)。l對(duì)象有如下特性:對(duì)象有如下特性: :有一個(gè)名字以區(qū)別于其它對(duì)象:有一個(gè)名字以區(qū)別于其它對(duì)象 :有一個(gè)狀態(tài)用來(lái)描述它的某些特征:有一個(gè)狀態(tài)用來(lái)描述它的某些特征 :有一組操作,每個(gè)操作決定了對(duì)象的:有一組操作,每個(gè)操作決定了對(duì)象的一種功能或行為一種功能或行為 :對(duì)象的操作分為兩類:自身承受的操:對(duì)象的操作分為兩類:自身承受的操作、施加于其它對(duì)象的操作作、施加于其它對(duì)象的操作l是構(gòu)成世界的一個(gè)是構(gòu)成世界
8、的一個(gè)獨(dú)立單位獨(dú)立單位,具有:,具有:l靜態(tài)特征:可以用某種數(shù)據(jù)來(lái)描述靜態(tài)特征:可以用某種數(shù)據(jù)來(lái)描述l動(dòng)態(tài)特征:對(duì)象所表現(xiàn)的行為或具有的功能動(dòng)態(tài)特征:對(duì)象所表現(xiàn)的行為或具有的功能有一個(gè)人名字叫胡哥,性別男,身高有一個(gè)人名字叫胡哥,性別男,身高1.80m,體重,體重68kg,可以修電器,可以教計(jì)算機(jī)課,描述該對(duì)象,可以修電器,可以教計(jì)算機(jī)課,描述該對(duì)象如下:如下:對(duì)象的對(duì)象的靜態(tài)特征靜態(tài)特征:性別:男性別:男身高:身高:1.80m體重:體重:68kg對(duì)象的對(duì)象的動(dòng)態(tài)特征動(dòng)態(tài)特征:回答身高回答身高回答體重回答體重回答性別回答性別修理電器修理電器教計(jì)算機(jī)課教計(jì)算機(jī)課面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖?/p>
9、念 對(duì)象對(duì)象l面向?qū)ο蠓椒ㄖ械膶?duì)象:面向?qū)ο蠓椒ㄖ械膶?duì)象:l是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體實(shí)體,它是用來(lái),它是用來(lái)構(gòu)成系統(tǒng)的一個(gè)基本單位。對(duì)象由一組構(gòu)成系統(tǒng)的一個(gè)基本單位。對(duì)象由一組屬性屬性和一組和一組行為行為構(gòu)成。構(gòu)成。l屬性屬性:用來(lái)描述對(duì)象:用來(lái)描述對(duì)象靜態(tài)特征靜態(tài)特征的數(shù)據(jù)項(xiàng)。的數(shù)據(jù)項(xiàng)。l行為行為:用來(lái)描述對(duì)象:用來(lái)描述對(duì)象動(dòng)態(tài)特征動(dòng)態(tài)特征的操作序列。的操作序列。面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?類類l分類分類人類通常的思維方法人類通常的思維方法l分類所依據(jù)的原則分類所依據(jù)的原則抽象抽象l忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有忽略事物的非本質(zhì)
10、特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同把具有共同性質(zhì)的事物劃分為一類性質(zhì)的事物劃分為一類,得出一個(gè)抽象的概念。,得出一個(gè)抽象的概念。l例如,石頭、樹木、汽車、房屋等都是人們?cè)陂L(zhǎng)期例如,石頭、樹木、汽車、房屋等都是人們?cè)陂L(zhǎng)期的生產(chǎn)和生活實(shí)踐中抽象出的概念。的生產(chǎn)和生活實(shí)踐中抽象出的概念。面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?類類l面向?qū)ο蠓椒ㄖ械拿嫦驅(qū)ο蠓椒ㄖ械念愵恖具有相同具有相同屬性和行為屬性和行為的的一組對(duì)象的集合一組對(duì)象的集合l為屬于該類的全部對(duì)象提供了抽象的描述,包為屬于該類的全部對(duì)象提供了抽象的描述,包括屬性和行為兩
11、個(gè)主要部分。括屬性和行為兩個(gè)主要部分。l類與對(duì)象的關(guān)系:類與對(duì)象的關(guān)系:猶如猶如模具模具與與鑄件鑄件之間的關(guān)系,一個(gè)屬于某類的之間的關(guān)系,一個(gè)屬于某類的對(duì)象對(duì)象稱為該類的一個(gè)稱為該類的一個(gè)實(shí)例實(shí)例。抽象抽象抽象是對(duì)具體對(duì)象(問題)進(jìn)行概括,抽出這抽象是對(duì)具體對(duì)象(問題)進(jìn)行概括,抽出這一類對(duì)象的公共性質(zhì)并加以描述的過程。一類對(duì)象的公共性質(zhì)并加以描述的過程。l先注意問題的本質(zhì)及描述,其次是實(shí)現(xiàn)過程或細(xì)節(jié)。先注意問題的本質(zhì)及描述,其次是實(shí)現(xiàn)過程或細(xì)節(jié)。l數(shù)據(jù)抽象數(shù)據(jù)抽象:描述某類對(duì)象的屬性或狀態(tài)(對(duì)象相互區(qū):描述某類對(duì)象的屬性或狀態(tài)(對(duì)象相互區(qū)別的物理量)。別的物理量)。l代碼抽象代碼抽象:描述某
12、類對(duì)象的共有的行為特征或具有的:描述某類對(duì)象的共有的行為特征或具有的功能。功能。l抽象的實(shí)現(xiàn):抽象的實(shí)現(xiàn):通過類的聲明通過類的聲明。抽象實(shí)例抽象實(shí)例鐘表鐘表l數(shù)據(jù)抽象:數(shù)據(jù)抽象:int Hour, int Minute, int Secondl代碼抽象:代碼抽象:SetTime(), ShowTime()抽象實(shí)例抽象實(shí)例鐘表鐘表類類class Clock public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second;抽象實(shí)例抽象實(shí)例人人l數(shù)據(jù)抽象:數(shù)據(jù)抽象
13、:char *name,char *gender,int age,int idl代碼抽象:代碼抽象:生物屬性角度:生物屬性角度:GetCloth(), Eat(), Step(),社會(huì)屬性角度:社會(huì)屬性角度:Work(), Promote() ,l類類是具有相同屬性和行為的一組是具有相同屬性和行為的一組對(duì)象的對(duì)象的集合集合,它為屬于該類的全部對(duì)象提供了,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述統(tǒng)一的抽象描述,其內(nèi)部包括,其內(nèi)部包括屬性屬性和和行行為為兩個(gè)主要部分。兩個(gè)主要部分。l利用類可以實(shí)現(xiàn)數(shù)據(jù)的封裝、隱藏、繼利用類可以實(shí)現(xiàn)數(shù)據(jù)的封裝、隱藏、繼承與派生。承與派生。c+中的類中的類類類和和對(duì)
14、對(duì)象象類的聲明形式類的聲明形式 類類是一種用戶自定義類型,聲明形式:是一種用戶自定義類型,聲明形式:class 類名稱類名稱 public: 公有成員公有成員(外部接口)(外部接口) private: 私有成員私有成員 protected: 保護(hù)型成員保護(hù)型成員類類和和對(duì)對(duì)象象類的成員類的成員class Clock public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour, Minute, Second;成員數(shù)據(jù)成員數(shù)據(jù)成員函數(shù)成員函數(shù)類類和和對(duì)對(duì)象象void Clock : S
15、etTime(int NewH, int NewM, int NewS) Hour=NewH; Minute=NewM; Second=NewS;void Clock : ShowTime() printf(“%d:%d:%d”,Hour,Minute,Second);19類類和和對(duì)對(duì)象象類類和和對(duì)對(duì)象象成員函數(shù)成員函數(shù)l在類中說(shuō)明原形,可以在類中說(shuō)明原形,可以在類外在類外給出函數(shù)體實(shí)現(xiàn),給出函數(shù)體實(shí)現(xiàn),并在函數(shù)名前使用類名加以限定。也可以直接并在函數(shù)名前使用類名加以限定。也可以直接在類中在類中給出函數(shù)體,形成內(nèi)聯(lián)成員函數(shù)。給出函數(shù)體,形成內(nèi)聯(lián)成員函數(shù)。l允許聲明重載函數(shù)和帶默認(rèn)形參值的函數(shù)允
16、許聲明重載函數(shù)和帶默認(rèn)形參值的函數(shù)成員數(shù)據(jù)成員數(shù)據(jù)l與一般的變量聲明相同,但需要將它放在類的聲與一般的變量聲明相同,但需要將它放在類的聲明體中。明體中。對(duì)象對(duì)象l類的對(duì)象是該類的某一特定實(shí)體,即類的對(duì)象是該類的某一特定實(shí)體,即類類類型類型的的變量變量。l聲明形式:聲明形式: 類名類名 對(duì)象名;對(duì)象名;l例:例: Clock myClock;類類和和對(duì)對(duì)象象類中成員的訪問方式類中成員的訪問方式l類中成員互訪類中成員互訪l直接使用成員名直接使用成員名l類外訪問類外訪問l使用使用“對(duì)象名對(duì)象名.成員名成員名”方式訪問方式訪問 public 屬屬性的成員性的成員類類和和對(duì)對(duì)象象類的應(yīng)用舉例類的應(yīng)用舉例
17、#includeclass Clock ./類的聲明略類的聲明略/.類的實(shí)現(xiàn)略類的實(shí)現(xiàn)略int main() Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime();類類和和對(duì)對(duì)象象面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?封裝封裝l將抽象出的數(shù)據(jù)成員、代碼成員相結(jié)合,將它將抽象出的數(shù)據(jù)成員、代碼成員相結(jié)合,將它們視為一個(gè)整體。們視為一個(gè)整體。l目的是曾強(qiáng)安全性和簡(jiǎn)化編程,使用者不必目的是曾強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只需要通過了解具體的實(shí)現(xiàn)細(xì)節(jié),而只需要通過外部接外部接口口,以特定的訪問權(quán)限以特定的訪問權(quán)限,
18、來(lái)使用類的成員。,來(lái)使用類的成員。l實(shí)現(xiàn)封裝:類聲明中的實(shí)現(xiàn)封裝:類聲明中的 l封裝封裝實(shí)例:實(shí)例:class Clock public: void SetTime(int NewH,int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second;邊界邊界特定的訪問權(quán)限特定的訪問權(quán)限外部接口外部接口面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?繼承繼承與派生與派生l繼承對(duì)于繼承對(duì)于軟件復(fù)用軟件復(fù)用有著重要意義,是面向?qū)ο蠹加兄匾饬x,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。術(shù)能夠提高軟件開發(fā)效率的重要原因之一。l定
19、義:定義:特殊類特殊類的對(duì)象擁有其的對(duì)象擁有其一般類一般類的全部屬性與的全部屬性與服務(wù),稱作特殊類對(duì)一般類的服務(wù),稱作特殊類對(duì)一般類的繼承繼承。l例如:將輪船作為一個(gè)一般類,客輪便是一個(gè)特殊類。例如:將輪船作為一個(gè)一般類,客輪便是一個(gè)特殊類。l保持已有類的特性而構(gòu)造新類的過程稱為保持已有類的特性而構(gòu)造新類的過程稱為繼繼承。承。l在已有類的基礎(chǔ)上新增自己的特性而產(chǎn)生新在已有類的基礎(chǔ)上新增自己的特性而產(chǎn)生新類的過程稱為類的過程稱為派生派生。l被繼承的已有類稱為被繼承的已有類稱為基類(或父類基類(或父類)。)。l派生出的新類稱為派生出的新類稱為派生類派生類。繼承與派生問題舉例繼承與派生問題舉例工具車
20、轎車面包車小汽車卡車旅行車汽車汽車交通工具交通工具繼承與派生問題舉例繼承與派生問題舉例猴猴 子子獅 子虎獵 豹貓貓鳥鳥動(dòng)動(dòng) 物物繼承與派生問題舉例繼承與派生問題舉例圓圓矩矩形形幾幾何何 形形 狀狀繼承與派生問題舉例繼承與派生問題舉例兼職技術(shù)人員銷售經(jīng)理管理人員銷售人員雇員多繼承、單繼承多繼承、單繼承繼承與派生的目的繼承與派生的目的l繼承的目的:實(shí)現(xiàn)繼承的目的:實(shí)現(xiàn)代碼重用代碼重用。l派生的目的:當(dāng)新的問題出現(xiàn),原有程序無(wú)法派生的目的:當(dāng)新的問題出現(xiàn),原有程序無(wú)法解決(或不能完全解決)時(shí),需要對(duì)原有程序解決(或不能完全解決)時(shí),需要對(duì)原有程序進(jìn)行改造。進(jìn)行改造。派生類的聲明派生類的聲明class
21、 派生類名:派生類名:繼承方式繼承方式 基類名基類名 成員聲明;成員聲明;Public:Protected:Private:繼承方式:繼承方式: 公有繼承舉例公有繼承舉例class Point /基類基類Point類的聲明類的聲明public:/公有函數(shù)成員公有函數(shù)成員void InitP(float xx=0, float yy=0) X=xx;Y=yy;void Move(float xOff, float yOff) X+=xOff;Y+=yOff;float GetX() return X;float GetY() return Y;private:/私有數(shù)據(jù)成員私有數(shù)據(jù)成員float
22、 X,Y;動(dòng)態(tài)特征:動(dòng)態(tài)特征:InitP(x,y)初始化一個(gè)點(diǎn)初始化一個(gè)點(diǎn)Move(x,y)移動(dòng)該點(diǎn)移動(dòng)該點(diǎn)GetX()得到該點(diǎn)得到該點(diǎn)X坐標(biāo)值坐標(biāo)值GetY()得到該點(diǎn)得到該點(diǎn)Y坐標(biāo)值坐標(biāo)值Point類:類:靜態(tài)特征:靜態(tài)特征:x,yclass Rectangle: public Point /派生類聲明派生類聲明public:/新增公有函數(shù)成員新增公有函數(shù)成員void InitR(float x, float y, float w, float h)InitP(x,y);W=w;H=h;/調(diào)用基類公有成員函數(shù)調(diào)用基類公有成員函數(shù)float GetH() return H;float Get
23、W() return W; private:/新增私有數(shù)據(jù)成員新增私有數(shù)據(jù)成員float W,H;39動(dòng)態(tài)特征:動(dòng)態(tài)特征:InitR(x,y,w,h)初始化初始化GetH()得到矩形的高得到矩形的高GetW()得到矩形的寬得到矩形的寬Rectanglet類:類:靜態(tài)特征:靜態(tài)特征:W,HMove(x,y)移動(dòng)該點(diǎn)移動(dòng)該點(diǎn)GetX()得到該點(diǎn)得到該點(diǎn)X坐標(biāo)值坐標(biāo)值GetY()得到該點(diǎn)得到該點(diǎn)Y坐標(biāo)值坐標(biāo)值Point類:類:#include#includeint main() Rectangle rect;rect.InitR(2,3,20,10); /通過派生類對(duì)象訪問基類公有成員通過派生類對(duì)象
24、訪問基類公有成員rect.Move(3,2); printf(“%f,%f,%f,%f”,rect.GetX(), rect.GetY(), rect.GetH(), rect.GetW();return 0;40面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?多態(tài)性多態(tài)性l多態(tài)是指在多態(tài)是指在一般類一般類中定義的屬性或行為,被中定義的屬性或行為,被特特殊類殊類繼承繼承之后,可以之后,可以具有不同的具有不同的數(shù)據(jù)類型或表數(shù)據(jù)類型或表現(xiàn)出現(xiàn)出不同的行為不同的行為。這使得同一個(gè)屬性或行為在。這使得同一個(gè)屬性或行為在一般類及其各個(gè)特殊類中具有不同的語(yǔ)義。一般類及其各個(gè)特殊類中具有不同的語(yǔ)義。l例如:例如:數(shù)的
25、加法數(shù)的加法-實(shí)數(shù)的加法實(shí)數(shù)的加法 -復(fù)數(shù)的加法復(fù)數(shù)的加法l多態(tài):同一名稱,不同的功能實(shí)現(xiàn)方式。多態(tài):同一名稱,不同的功能實(shí)現(xiàn)方式。l目的:達(dá)到行為標(biāo)識(shí)統(tǒng)一,減少程序中標(biāo)目的:達(dá)到行為標(biāo)識(shí)統(tǒng)一,減少程序中標(biāo)識(shí)符的個(gè)數(shù)。識(shí)符的個(gè)數(shù)。l實(shí)現(xiàn):重載函數(shù)和虛函數(shù)實(shí)現(xiàn):重載函數(shù)和虛函數(shù)總結(jié)總結(jié)l面向?qū)ο蟪绦蛟O(shè)計(jì)(英語(yǔ):面向?qū)ο蟪绦蛟O(shè)計(jì)(英語(yǔ):Object Oriented Programming,縮寫:,縮寫:OOP),指一種程序),指一種程序設(shè)計(jì)范型,同時(shí)也是一種程序開發(fā)的設(shè)計(jì)范型,同時(shí)也是一種程序開發(fā)的方法論方法論。它將它將對(duì)象對(duì)象作為程序的作為程序的,將程序和數(shù)據(jù),將程序和數(shù)據(jù)封裝封裝其中,以提高
26、軟件的重用性、靈活性和擴(kuò)其中,以提高軟件的重用性、靈活性和擴(kuò)展性。展性。 類l類(類(Class)定義了一件事物的抽象特點(diǎn)。通)定義了一件事物的抽象特點(diǎn)。通常來(lái)說(shuō),類定義了事物的屬性和它可以做到的常來(lái)說(shuō),類定義了事物的屬性和它可以做到的(它的行為)。(它的行為)。l類可以為程序提供模版和結(jié)構(gòu)。類可以為程序提供模版和結(jié)構(gòu)。l一個(gè)類的方法和屬性被稱為一個(gè)類的方法和屬性被稱為“成員成員”。類狗狗 私有成員私有成員: 體重體重 毛皮顏色毛皮顏色 . 公有成員公有成員: 吠叫吠叫() . 對(duì)象l對(duì)象(對(duì)象(Object)是類的實(shí)例。)是類的實(shí)例。 類狗類狗 萊絲;萊絲; 萊絲萊絲.毛皮顏色毛皮顏色=棕白
27、色棕白色 萊絲萊絲.吠叫吠叫(); 我們無(wú)法讓狗這個(gè)類去吠叫,但是我們我們無(wú)法讓狗這個(gè)類去吠叫,但是我們可以讓對(duì)象可以讓對(duì)象萊絲萊絲去吠叫,正如狗可以去吠叫,正如狗可以吠叫,但沒有具體的狗就無(wú)法吠叫。吠叫,但沒有具體的狗就無(wú)法吠叫。方法(行為)l方法(方法(Method)是一個(gè)類能做的事情,但方法并沒)是一個(gè)類能做的事情,但方法并沒有去做這件事。有去做這件事。l作為一條狗,萊絲是會(huì)吠叫的,因此作為一條狗,萊絲是會(huì)吠叫的,因此“吠叫吠叫()”就是它的一個(gè)就是它的一個(gè)方法。與此同時(shí),它可能還會(huì)有其它方法,例如方法。與此同時(shí),它可能還會(huì)有其它方法,例如“坐下坐下()”,或者或者“吃吃()”。 對(duì)一個(gè)
28、具體對(duì)象的方法進(jìn)行調(diào)用并不影響其對(duì)一個(gè)具體對(duì)象的方法進(jìn)行調(diào)用并不影響其它對(duì)象,正如所有的狗都會(huì)叫,但是你讓一條狗叫不代表所它對(duì)象,正如所有的狗都會(huì)叫,但是你讓一條狗叫不代表所有的狗都叫。有的狗都叫。 l類狗類狗 萊絲,泰爾;萊絲,泰爾; 萊絲萊絲.吠叫吠叫(); 則泰爾是不會(huì)吠叫的,因?yàn)檫@里的吠叫只是對(duì)對(duì)象則泰爾是不會(huì)吠叫的,因?yàn)檫@里的吠叫只是對(duì)對(duì)象萊絲萊絲進(jìn)進(jìn)行的。行的。封裝性l具備封裝性(具備封裝性(Encapsulation)的面向?qū)ο蟪绦蛟O(shè)計(jì)隱藏了某)的面向?qū)ο蟪绦蛟O(shè)計(jì)隱藏了某一方法的具體執(zhí)行步驟,取而代之的是通過消息傳遞機(jī)制傳送一方法的具體執(zhí)行步驟,取而代之的是通過消息傳遞機(jī)制傳送消
29、息給它。消息給它。l/* 一個(gè)面向過程的程序會(huì)這樣寫:一個(gè)面向過程的程序會(huì)這樣寫: */ 結(jié)構(gòu)體狗結(jié)構(gòu)體狗 萊絲萊絲 ; 設(shè)置音調(diào)設(shè)置音調(diào)(萊絲,萊絲,5); 吸氣吸氣(萊絲萊絲) ; 吐氣吐氣(萊絲萊絲) ;l/* 當(dāng)狗的吠叫被封裝到類中,任何人都可以簡(jiǎn)單地使用:當(dāng)狗的吠叫被封裝到類中,任何人都可以簡(jiǎn)單地使用: */ 類狗類狗 萊絲;萊絲; 萊絲萊絲.吠叫吠叫() ;封裝封裝是通過是通過限制限制只有只有特定類的特定類的可以可以訪問訪問這一這一特特定類的定類的,而它們通常利用,而它們通常利用接口接口實(shí)現(xiàn)消息的傳入實(shí)現(xiàn)消息的傳入傳出。傳出。class MeiNu /美女類!美女類!. priva
30、te: int XW; /胸圍胸圍 int YW; /我就不說(shuō)了噢我就不說(shuō)了噢 :) int TW; /我還是不說(shuō)了噢我還是不說(shuō)了噢 :) ;MeiNu jordan; /now is 喬丹喬丹!jordan.XW = 34;jordan.YW = 24;jordan.TW = 34;繼承性與多態(tài)性繼承性與多態(tài)性l繼承性(繼承性(Inheritance)是指,在某種情況下,)是指,在某種情況下,一個(gè)類會(huì)有一個(gè)類會(huì)有“子類子類”。l多態(tài)性(多態(tài)性(Polymorphism)指方法在不同的類)指方法在不同的類中調(diào)用可以實(shí)現(xiàn)的不同結(jié)果。中調(diào)用可以實(shí)現(xiàn)的不同結(jié)果。類狗類狗 萊絲;萊絲;類雞類雞 魯斯特
31、;魯斯特;萊絲萊絲.叫叫();魯斯特魯斯特.叫叫();雞啼雞啼犬吠犬吠消息消息l消息是系統(tǒng)向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求,是對(duì)象之消息是系統(tǒng)向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求,是對(duì)象之間的間的通信機(jī)制通信機(jī)制。提供服務(wù)的對(duì)象負(fù)責(zé)消息協(xié)議。提供服務(wù)的對(duì)象負(fù)責(zé)消息協(xié)議的格式和消息的接收,請(qǐng)求服務(wù)的對(duì)象提供輸?shù)母袷胶拖⒌慕邮眨?qǐng)求服務(wù)的對(duì)象提供輸入信息,獲取應(yīng)答消息內(nèi)容。入信息,獲取應(yīng)答消息內(nèi)容。l在面向?qū)ο笾?,消息常常通過在面向?qū)ο笾校⒊3Mㄟ^函數(shù)調(diào)用函數(shù)調(diào)用來(lái)實(shí)現(xiàn)。來(lái)實(shí)現(xiàn)。 狀態(tài):胡哥狀態(tài):胡哥 29歲歲 男男 計(jì)算機(jī)計(jì)算機(jī) 講師講師 680實(shí)例:實(shí)例:行為:評(píng)職稱行為:評(píng)職稱 漲工資漲工資抽象抽象屬性:姓名屬性
32、:姓名 年齡年齡 性別性別 單位單位 職稱職稱 工資工資類:講師類:講師操作:評(píng)職稱操作:評(píng)職稱 漲工資漲工資數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)方法名方法名方法:評(píng)職稱方法:評(píng)職稱 步驟步驟 條件條件 漲工資漲工資 公式公式方法體方法體class 講師講師 胡哥胡哥; 胡哥胡哥.評(píng)職稱(評(píng)職稱(.); 胡哥胡哥.調(diào)工資(調(diào)工資(.);消息消息補(bǔ)充習(xí)題-選擇題1. 下面描述中,符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是下面描述中,符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是_。 A. 使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表示使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表示程序的控制邏輯程序的控制邏輯B. 模塊只有一個(gè)入口,可以有多個(gè)出口模
33、塊只有一個(gè)入口,可以有多個(gè)出口C. 注重提高程序的執(zhí)行效率注重提高程序的執(zhí)行效率D. 不使用不使用goto語(yǔ)句語(yǔ)句2. 下面概念中,不屬于面向?qū)ο蠓椒ǖ氖窍旅娓拍钪?,不屬于面向?qū)ο蠓椒ǖ氖莀。A. 對(duì)象對(duì)象 B. 繼承繼承C. 類類 D. 過程調(diào)用過程調(diào)用3. 結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是_。A. 程序的規(guī)模程序的規(guī)模 B. 程序的易讀性程序的易讀性C. 程序的執(zhí)行效率程序的執(zhí)行效率 D. 程序的可移植性程序的可移植性4. 對(duì)建立良好的程序設(shè)計(jì)風(fēng)格,下面描述正確的是對(duì)建立良好的程序設(shè)計(jì)風(fēng)格,下面描述正確的是_。A. 程序應(yīng)簡(jiǎn)單、清晰、可讀性好程序應(yīng)簡(jiǎn)單、清晰、可讀性好B
34、. 符號(hào)名的命名要符合語(yǔ)法符號(hào)名的命名要符合語(yǔ)法C. 充分考慮程序的執(zhí)行效率充分考慮程序的執(zhí)行效率D. 程序的注釋可有可無(wú)程序的注釋可有可無(wú)補(bǔ)充習(xí)題-選擇題5. 下面對(duì)對(duì)象概念描述錯(cuò)誤的是下面對(duì)對(duì)象概念描述錯(cuò)誤的是_。 A. 任何對(duì)象都必須有繼承性任何對(duì)象都必須有繼承性B. 對(duì)象是屬性和方法的封裝體對(duì)象是屬性和方法的封裝體C. 對(duì)象間的通訊靠消息傳遞對(duì)象間的通訊靠消息傳遞D. 操作是對(duì)象的動(dòng)態(tài)性屬性操作是對(duì)象的動(dòng)態(tài)性屬性6. 算法一般都可以用哪幾種控制結(jié)構(gòu)組合而成算法一般都可以用哪幾種控制結(jié)構(gòu)組合而成_。 A. 循環(huán)、分支、遞歸循環(huán)、分支、遞歸B. 順序、循環(huán)、嵌套順序、循環(huán)、嵌套C. 循環(huán)、
35、遞歸、選擇循環(huán)、遞歸、選擇D. 順序、選擇、循環(huán)順序、選擇、循環(huán)7. 在面向?qū)ο蠓椒ㄖ?,一個(gè)對(duì)象請(qǐng)求另一對(duì)象為其服務(wù)的方在面向?qū)ο蠓椒ㄖ?,一個(gè)對(duì)象請(qǐng)求另一對(duì)象為其服務(wù)的方式是通過發(fā)送式是通過發(fā)送_。 A. 調(diào)用語(yǔ)句調(diào)用語(yǔ)句 B. 命令命令 C. 口令口令 D. 消息消息補(bǔ)充習(xí)題-選擇題8. 在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是_。 A. 程序結(jié)構(gòu)應(yīng)有助于讀者理解程序結(jié)構(gòu)應(yīng)有助于讀者理解B. 不限制不限制goto語(yǔ)句的使用語(yǔ)句的使用C. 減少或取消注解行減少或取消注解行D. 程序越短越好程序越短越好9. 面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,面向?qū)ο蟮?/p>
36、設(shè)計(jì)方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是它的基本原理是_。 A. 模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系B. 強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念C. 使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題D. 鼓勵(lì)開發(fā)者在軟件開發(fā)的絕大部分中都用實(shí)際領(lǐng)域的概念鼓勵(lì)開發(fā)者在軟件開發(fā)的絕大部分中都用實(shí)際領(lǐng)域的概念去思考去思考10采用面向?qū)ο蠹夹g(shù)開發(fā)的應(yīng)用系統(tǒng)的特點(diǎn)是采用面向?qū)ο蠹夹g(shù)開發(fā)的應(yīng)用系統(tǒng)的特點(diǎn)是_。 A 重用性更強(qiáng)重用性更強(qiáng) B 運(yùn)行速度更快運(yùn)行速度更快 C 占用
37、存儲(chǔ)量小占用存儲(chǔ)量小 D 維護(hù)更復(fù)雜維護(hù)更復(fù)雜補(bǔ)充習(xí)題-填空題1結(jié)構(gòu)化程序設(shè)計(jì)的三種基本邏輯結(jié)構(gòu)為順序、選擇和(結(jié)構(gòu)化程序設(shè)計(jì)的三種基本邏輯結(jié)構(gòu)為順序、選擇和( )2源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋 和(和( )3在面向?qū)ο蠓椒ㄖ校畔㈦[蔽是通過對(duì)象的(在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對(duì)象的( )性來(lái)實(shí)現(xiàn))性來(lái)實(shí)現(xiàn)的的.4類是一個(gè)支持集成的抽象數(shù)據(jù)類型,而對(duì)象是類的(類是一個(gè)支持集成的抽象數(shù)據(jù)類型,而對(duì)象是類的( )5在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為(在面向?qū)ο蠓椒ㄖ校愔g共享屬性和操作的機(jī)制稱為( 6. 結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下、逐步結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下、逐步求精、求精、 ( ) 和限制使用和限制使用goto語(yǔ)句。語(yǔ)句。7. 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中涉及的對(duì)象是系統(tǒng)中用來(lái)描述客面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中涉及的對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)(觀事物的一個(gè)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 兒童口腔衛(wèi)生知識(shí)講座
- 湖北省圓創(chuàng)教育教研中心2025屆高三三月聯(lián)合測(cè)評(píng)數(shù)學(xué)試題及答案
- 韶關(guān)市翁源縣2025年一級(jí)建造師市政工程全真模擬試題含解析
- 優(yōu)化圖書查詢系統(tǒng)計(jì)劃
- 年度教學(xué)工作的里程碑與規(guī)劃計(jì)劃
- 踐行可持續(xù)發(fā)展理念的工作策略計(jì)劃
- 提升會(huì)議組織能力的策略計(jì)劃
- 情感教育活動(dòng)的開展計(jì)劃
- 會(huì)展中心安保計(jì)劃
- 電子商務(wù)發(fā)展策略計(jì)劃
- 消防設(shè)施操作員實(shí)戰(zhàn)試題及答案分享
- 2025年北京電子科技職業(yè)學(xué)院高職單招(數(shù)學(xué))歷年真題考點(diǎn)含答案解析
- 山東省濱州市無(wú)棣縣2024-2025學(xué)年七年級(jí)上學(xué)期期末生物試題(原卷版+解析版)
- 新東方在國(guó)際教育領(lǐng)域的布局與市場(chǎng)機(jī)會(huì)
- 2025年上半年??谑忻捞m區(qū)水務(wù)局下屬事業(yè)單位招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025屆高三化學(xué)二輪復(fù)習(xí) 化學(xué)反應(yīng)原理綜合 課件
- 9.3.2《設(shè)計(jì)簡(jiǎn)單裝置制作酸奶》跨學(xué)科實(shí)踐主題學(xué)習(xí)單元教學(xué)設(shè)計(jì)
- 2025年鄭州市九年級(jí)中考語(yǔ)文一模試卷附答案解析
- 2025年江蘇蘇州市(12345)便民服務(wù)中心招聘座席代表人員高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 塔類設(shè)備絕熱保冷施工方案
- 河北省石家莊市欒城區(qū)冶河鎮(zhèn)初級(jí)中學(xué)-勵(lì)志主題班會(huì)-拒絕間歇性努力不做45青年【課件】
評(píng)論
0/150
提交評(píng)論