第7章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第1頁
第7章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第2頁
第7章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第3頁
第7章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第4頁
第7章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)本章內(nèi)容面向?qū)ο蟪绦蛟O(shè)計(jì)方法及基本特征類的定義,構(gòu)造函數(shù)與析構(gòu)函數(shù)對象的定義,類成員的使用基于windows對話框圖形界面的程序設(shè)計(jì)過程。2類和對象的使用一.面向?qū)ο蟪绦蛟O(shè)計(jì).屬性行為消息3stageHeroanimalenemyfood4Windows程序menubuttonframewindowinputboxdocview抽象與實(shí)例抽象:就是把同一類對象的屬性和行為封裝在一起構(gòu)成類。如:people(name,age,sex…;move,speak,eat,…)構(gòu)成人類。5Windows中按鈕的屬性與行為6類是對象的一種抽象,對象則是類的具體實(shí)例。如int,float,double的可以看出是類。而inta,b;floath,j;這里的a,b,h,j都是實(shí)例。7類的定義定義一個(gè)類時(shí),需要使用關(guān)鍵字class,其后給類的名稱(取名與變量的取名規(guī)則一致);然后定義類的數(shù)據(jù)成員(屬性)和函數(shù)成員(行為)。8定義square類Classsquare{private:doubler;doublex,y;public:voidsetr(doubleb){r=b;}voidsetpos(doublem,doublen){x=m;y=n;}double

area(){return3.14*r*r;}voidmove(doublex1,doubley1){x=x1;y=y1;}}9類的數(shù)據(jù)成員和函數(shù)成員的訪問方式1.私有類型:使用private來申明,也可以防止類的左花括符后面,此時(shí)可省略private。私有成員的函數(shù)或數(shù)據(jù)不能被對象調(diào)用,只有本類的成員可以訪問。2.共有類型:使用public申明,共有類型的成員是類的外部接口,允許類的對象調(diào)用。3.保護(hù)類型:使用protected申明,與私有類型相似,其差別在于繼承過程中對產(chǎn)生新類的影響不同。一般做法是講成員函數(shù)申明為private類型,以保證安全;把函數(shù)成員申明為public,作為對外的接口。10對象的聲明與使用對象的聲明與變量的聲明一樣

類名對象名對象的使用即對象成員函數(shù)的調(diào)用。對象名.共有成員名(參數(shù));11例一#include<iostream>Usingnamespacestd;Classsquare//聲明類square{private:doubler;public:voidset(doubleb){r=b;}doublearea(){return3.14*r*r;}};//聲明結(jié)束以“;”結(jié)束12Voidmain(){doublem,n;Squares;Cin>>m;S.set(m);N=s.area();Cout<<“Thissquare\’sis:”<<n<<endl;}13例二編程實(shí)現(xiàn):一圓形游泳池,現(xiàn)需要在其周圍建一圓形過道,并在其四周圍上柵欄。柵欄價(jià)格為35元/米,過道造價(jià)為20元/平方米。過道寬度為3米,游泳池半徑為鍵盤輸入。要求編程計(jì)算并輸出過道和柵欄的造價(jià)。14游泳池過道分析:要求過道的面積和柵欄的周長。是一件非常簡單的問題。現(xiàn)采用面向?qū)ο蟮姆椒▉斫鉀Q。這里涉及兩個(gè)圓,其一就是游泳池,其二就是柵欄。所以可以定義一個(gè)圓的類(circle),在定義兩個(gè)該類的兩個(gè)對象(pool,和Rim)。15#include<iostream>Usingnamespacestd;ConstfloatPI=3.14159;ConstfloatFenceP=35;ConstfloatConP=20;Classcircle{private:floatradius;public:Circle(floatr);FloatCircumference();FloatArea();};16Circle::Circle(floatr){radius=r;}FloatCircle::Circumference(){return2*PI*radius;}FloatCircle::Area(){returnPI*radius*radius;}Voidmain(){floatradius;floatfenCost,conCost;Cout<<“Pleaseentertheradiusofpool”;Cin>>radius;CirclePool(radius),Rim(radius+3);fenceCost=Rim.Circumference()*FenceP;ConCost=(Rim.Area()-pool.Area())*conP;Cout<<“ThecostofFenceis:”<<FenceCost<<endl;Cout<<“ThecostofConcreteis:”<<conCost<<endl;}17該例子中注意幾點(diǎn):1.類的成員函數(shù)在class的定義外書寫需要加上類的名字,即:類名::成員函數(shù)。2.類的構(gòu)造函數(shù):它是一個(gè)與類的名字相同的一個(gè)函數(shù),構(gòu)造函數(shù)是在生成對象的時(shí)候系統(tǒng)自動調(diào)用的一個(gè)函數(shù),一般該構(gòu)造函數(shù)完成構(gòu)造對象時(shí)的內(nèi)存分配,參數(shù)初始化等工作,它不帶返回值,且為public的訪問類型。一個(gè)類可以缺省構(gòu)造函數(shù),也可以有多個(gè)構(gòu)造函數(shù),只是這些構(gòu)造函數(shù)帶有的參數(shù)不一樣而已,具體該調(diào)用那一個(gè)構(gòu)造函數(shù),是根據(jù)生成對象時(shí)候的參與確定。如:

circle

s;clrcles(3);circles(3,2);18析構(gòu)函數(shù)3.與類的構(gòu)造函數(shù)相對應(yīng)的是類的析構(gòu)函數(shù)。它是對象在應(yīng)用程序中使用完畢,需要釋放內(nèi)存空間等一系列操作時(shí),一般隱形調(diào)用的函數(shù)。每一個(gè)類在定義時(shí),都隱形定義了析構(gòu)函數(shù),程序員也可以顯形為類定義析構(gòu)函數(shù),如對circle類定義一個(gè)析構(gòu)函數(shù)為~circle(){};該函數(shù)同構(gòu)造函數(shù)一樣,不需要返回值,只是多了一個(gè)“~”符號。19例從鍵盤輸入一個(gè)點(diǎn)的坐標(biāo)位置,計(jì)算其與圓心的距離。分析:本題涉及平面的任意坐標(biāo)點(diǎn)point,故可定義一個(gè)point類,該類的基本數(shù)據(jù)就是其坐標(biāo)PX,PY,對該點(diǎn)的操作其獲取其坐標(biāo)getx,gety。20#include<iostream>#include<cmath>Usingnamespacestd;Classpoint{private:floatx;Floaty;Public:point(){x=0;y=0};point(floatm,floatn){x=m;y=n;}floatgetx(){returnx;}floatgety(){returny;}};Voidmain(){floata,b,c;cout<<“pleaseinputapoint”<<endl;cin>>a>>b;Pointp1,p2(a,b);C=sqrt(pow(p2.getx()-p1.getx(),2)+pow(p2.gety()-p1.gety(),2));

21Cout<<“distanceis:”<<c;}基于MFC的程序設(shè)計(jì)221.Console程序:231.windows程序:MFC程序

MicrosoftFoundationClass程序

241.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論