版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、北京信息工程學(xué)院計(jì)算機(jī)系牟永敏牟永敏第三章 一個面向?qū)ο蟮腃+程序?qū)嵗?從這一章開始我們將進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)踐,通過一個面向?qū)ο蟮腃+ 程序?qū)嵗?,說明怎樣分析實(shí)際問題建立起對象模型,以及怎樣用C+ 語言實(shí)現(xiàn)所得到的設(shè)計(jì)模型。通過本章學(xué)習(xí),一方面可以進(jìn)一步加深對面向?qū)ο蠓治黾霸O(shè)計(jì)方法的理解,另一方面也能對面向?qū)ο蟮腃+ 程序概貌有一個初步了解。 3.1面向?qū)ο蠓治雠c設(shè)計(jì) 3.1.1需求陳述一個簡單圖形程序的需求: 在顯示器熒光屏上圓心坐標(biāo)為(100,100)的位置上,畫一個半徑為40的圓,在圓心坐標(biāo)為(200,300)的位置上,畫一個半徑為20的圓,在圓心坐標(biāo)為(400,150)的位置上,畫
2、一條弧,弧的起始角度為30,結(jié)束角度為120,半徑為50。注意:功能需求必須是可測試的。如:系統(tǒng)速度要快。(要有一個準(zhǔn)確的值)3.1.2 面向?qū)ο蠓治?(1) 面向?qū)ο蠓治鼍褪浅槿『驼碛脩粜枨蟛⒔栴}域精確模型的過程。面向?qū)ο蠓治龅年P(guān)鍵工作,是分析 確定問題域中的對象及對象間的關(guān)系,從而建立起問題域的對象模型。 3.1.2 面向?qū)ο蠓治?(2)1.確定對象 使用“語法分析 ”方法。在需求陳述中包含的名詞或名詞短語是對象的候選者,它們有下列一些: 顯示器熒光屏,圓心坐標(biāo),位置,半徑,圓,弧,起始角度,結(jié)束角度。 3.1.2 面向?qū)ο蠓治?(3) “顯示器熒光屏”是一種輸出設(shè)備,是運(yùn)行程序的物
3、質(zhì)基礎(chǔ)(硬件平臺),應(yīng)該從候選對象中刪去?!皥A心坐標(biāo)”和“半徑”實(shí)質(zhì)上是圓和弧的基本屬性,并不需要獨(dú)立存在,因此也應(yīng)該從候選者中刪去?!拔恢谩睂?shí)際上是指圓心的位置,也就是圓心坐標(biāo),沒必要重復(fù)列出。“起始角度”和“結(jié)束角度”實(shí)質(zhì)上是弧的屬性,也應(yīng)該從候選者中刪去。最后得出的對象是,圓(Circle)和弧(Arc),更確切地說,是圓和弧兩類對象。 在本問題域中實(shí)際上有兩個具體的圓和一個具體的弧,換句話說,有圓類的兩個實(shí)例和弧類的一個實(shí)例。 3.1.2 面向?qū)ο蠓治?(4)2確定屬性 圓的兩個基本屬性是圓心坐標(biāo)和半徑,弧的基本屬性有圓心坐標(biāo),半徑,起始角度和結(jié)束角度。不可能在需求陳述中找到所有屬性,
4、還必須借助領(lǐng)域知識和常識,才能分析得出所需要的全部屬性。圓和弧都應(yīng)該再增加一個屬性可見性 3.1.2 面向?qū)ο蠓治?(5)3確定服務(wù) 在分析階段可以認(rèn)為,每個屬性都是可以訪問的。所謂可以訪問是指提供了訪問對象屬性的對外接口。(由對象主動地向外界提供服務(wù)) 分析 這個程序應(yīng)完成的功能可知,圓和弧都應(yīng)該提供在熒光屏上“畫自己”的服務(wù)。相應(yīng)地也應(yīng)該提供“隱藏自己”這樣一個服務(wù)。 圓和弧分別有各自的屬性和服務(wù),如圖3.所示。 3.1.2 面向?qū)ο蠓治?(6)3.1.3面向?qū)ο笤O(shè)計(jì)(1) 設(shè)計(jì)就是把通過分析得出的對程序的準(zhǔn)確需求轉(zhuǎn)變成實(shí)現(xiàn)程序的方案的過程。主要完成下述工作 : 1.建立類等級 面向?qū)ο蟪?/p>
5、序的一個突出優(yōu)點(diǎn)來源于繼承性。應(yīng)該盡量抽取出相似類的公共屬性和公共服務(wù),以建立這些相似類的父類,并在類等級的適當(dāng)層次中正確地定義各個屬性和服務(wù)。 圖3所示的對象 模型。為簡明起見,圖中沒有列出讀寫屬性值的常規(guī)服務(wù)。 3.1.3面向?qū)ο笤O(shè)計(jì)(2)位置坐標(biāo)可見性顯示隱藏圓點(diǎn)半徑弧起始角度結(jié)束角度顯示隱藏顯示隱藏圖3.2 簡單圖形程序的對象模型3.1.3面向?qū)ο笤O(shè)計(jì)(3)定義屬性 所謂定義屬性就是要確定每個屬性的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),同時還要確定每個屬性的訪問權(quán)限(通常被定義在保護(hù)部分或私有部分)。3定義服務(wù) 實(shí)現(xiàn)“顯示”服務(wù)的算法概括來說就是,把“可見性”屬性設(shè)置為true,然后調(diào)用相應(yīng)的庫函數(shù)用當(dāng)
6、前的前景顏色畫出所要的圖形。 3.2 用C+ 語言實(shí)現(xiàn)(1).定義類與派生類1. 定義類:class Location 以下說明數(shù)據(jù)成員 以下說明成員函數(shù) ;2 . 在定義派生類的時候,必須明確指出它的父類是誰。做法是,在派生類類名后面加一個冒號“:”,冒號后寫上訪問權(quán)修飾符,然后再寫上父類名。 例如,定義從“位置”類派生出的“點(diǎn)”類的框架如下: class Point :public Location 以下說明數(shù)據(jù)成員 以下說明成員函數(shù) ;3 . 訪問權(quán)修飾符影響從父類繼承來的成員(包括數(shù)據(jù)成員和成員函數(shù))在子類中的可訪問性。本例中訪問權(quán)修飾符為Public(公有派生),它的含義是繼承來的成
7、員在子類中的可訪問性與在父類中的可訪問性相同(但是,僅在父類中可直接訪問的成員在子類中則不能直接訪問)。(2). 說明數(shù)據(jù)成員 在說明數(shù)據(jù)成員時,首先要用訪問權(quán)符指定數(shù)據(jù)的可訪問性,接下來應(yīng)該用數(shù)據(jù)類型名表明當(dāng)前說明的數(shù)據(jù)的數(shù)據(jù)類型,隨后寫出所說明的數(shù)據(jù)的名字,最后用分號“;”結(jié)束對一個數(shù)據(jù)的說明。在類定義中,共有三種訪問權(quán)符:1.private為私有的訪問權(quán)符。為了使得成員僅在說明它的類中可以直接訪問,超出該類范圍均不能直接訪問,則需要在此成員前面使用private訪問權(quán)符。 2.protected 為保護(hù)的訪問權(quán)符。這個訪問權(quán)符的含義是,在它下面說明的成員(數(shù)據(jù)成員或成員函數(shù))僅在本類及其
8、子類中可以直接訪問。因此,描述坐標(biāo)的兩個數(shù)據(jù)成員X和Y在Location類中可直接訪問,在其子類Point中也可直接訪問繼承來的數(shù)據(jù)成員X和Y。3.public(公有的)具有這種訪問屬性的成員,可被與該類對象處在同一作用域內(nèi)的任何一個外部函數(shù)使用。 因此,被稱為對象與外界的接口。通常,在這部分僅定義一些成員函數(shù),作為該類產(chǎn)生的對象向外界所能提供的服務(wù)。(3). 說明和定義成員函數(shù) 1.說明成員函數(shù) 多數(shù)成員函數(shù)都是在類定義體內(nèi)部說明,格式與C語言的格式類似。 2.定義成員函數(shù) 多數(shù)成員函數(shù)都是在類定義體內(nèi)部說明,在類定義體之外定義。 3構(gòu)造函數(shù) 給變量設(shè)置初始值的操作,通常稱為初始化。為了方便
9、初始化工作,C+ 語言提供了一類特殊的成員函數(shù),稱為構(gòu)造函數(shù)。當(dāng)創(chuàng)建一個對象時(例如,說明類的一個實(shí)例時),系統(tǒng)自動調(diào)用構(gòu)造函數(shù)完成初始化工作。為了使編譯程序能夠很容易地判斷出哪些成員函數(shù)是構(gòu)造函數(shù),C+ 語言有下述規(guī)定:構(gòu)造函數(shù)的名字必須與類名相同;構(gòu)造函數(shù)的原型說明中沒有返回值類型,也就是說,在函數(shù)名前面為空白。 舉例如下:例如:一個圓類的定義(1)class Circle :Public Point protected: int Radius; public:Circle (int InitX,int InitY,int InitRadius);void Show( ); void Hi
10、de( ); int GetRadius( ); 例如:一個圓類的定義(2)Circle:Circle(int InitX,int InitY, int InitRadius):Point(InitX,InitY)Radius = InitRadius;void Circle:Show()Visible = true;circle(X,Y,Radius);void Circle:Hide()int TempColor;TempColor = getcolor();setcolor(getbkcolor();Visible = false;circle(X,Y,Radius);setcolor(Tempcolor);int Circle:GetRadius()return Radius; 小結(jié)(1) 用面向?qū)ο蟪绦蛟O(shè)計(jì)方法,解決實(shí)際工程的基本步驟如下:(1)面向?qū)ο蠓治觯?通過對用戶需求的分析,合理地提取問題域中所涉及到類-&-對象。包括:這些類-&-對象中應(yīng)該包括哪些屬性和方法。(2)面向?qū)ο笤O(shè)計(jì): 對分析中得到的準(zhǔn)確結(jié)果,設(shè)計(jì)出實(shí)現(xiàn)程序的方案。小結(jié)(2
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 頭孢孟多酯鈉光穩(wěn)定性考察-洞察分析
- 勵志少年事跡材料(7篇)
- 文化記憶與記憶空間-洞察分析
- 雙線性濾波在計(jì)算機(jī)視覺中的應(yīng)用-洞察分析
- 網(wǎng)絡(luò)邊緣設(shè)備認(rèn)證技術(shù)-洞察分析
- 醫(yī)務(wù)工作者先進(jìn)個人主要事跡(6篇)
- 《客戶服務(wù)技巧解析》課件
- 《火眼金睛辨身》課件
- 從傳統(tǒng)到現(xiàn)代展會活動的演變與展覽設(shè)計(jì)的創(chuàng)新發(fā)展研究
- 企業(yè)文檔高新技術(shù)企業(yè)認(rèn)定管理辦法解讀課件
- 名畫中的瘟疫史知到智慧樹章節(jié)測試課后答案2024年秋上海健康醫(yī)學(xué)院
- 新建二級加油站項(xiàng)目投資立項(xiàng)可行性分析報告
- 湖北省荊門市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版質(zhì)量測試(上學(xué)期)試卷及答案
- 剪輯師的職業(yè)規(guī)劃
- 存貨管理制度完整版
- 《東阿阿膠企業(yè)核心競爭力問題、原因及提升策略(開題報告有提綱)》
- 第七單元長方形和正方形 單元測試(含答案)2024-2025學(xué)年三年級上冊數(shù)學(xué)人教版
- 2024年大學(xué)試題(管理類)-應(yīng)急管理考試近5年真題集錦(頻考類試題)帶答案
- 春望(微教學(xué)設(shè)計(jì)) 蘇教版
- 2024年吉林省吉林市豐滿區(qū)數(shù)學(xué)四年級第一學(xué)期期末預(yù)測試題含解析
- 山東省市級縣級單位名稱及市縣代碼表
評論
0/150
提交評論