2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程,第十一章 面向?qū)ο笤O(shè)計第十二章 面向?qū)ο髮?shí)現(xiàn),2,,11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則11.2 啟發(fā)規(guī)則11.3 軟件重用11.4 系統(tǒng)分解11. 5 設(shè)計問題域子系統(tǒng)11. 6 設(shè)計人機(jī)交互子系統(tǒng)11. 7 設(shè)計任務(wù)管理子系統(tǒng)11. 8 設(shè)計數(shù)據(jù)管理子系統(tǒng)11. 9 設(shè)計類中的服務(wù),3,,面向?qū)ο笤O(shè)計是把分析階段得到的需求轉(zhuǎn)變成符合成本和質(zhì)量要求的、抽象的系統(tǒng)實(shí)現(xiàn)方案的過程。從面向?qū)ο?/p>

2、分析到面向?qū)ο笤O(shè)計,是一個逐漸擴(kuò)充模型的過程 生命周期方法學(xué)把設(shè)計進(jìn)一步劃分成總體設(shè)計和詳細(xì)設(shè)計兩個階段,類似地,也可以把面向?qū)ο笤O(shè)計再細(xì)分為系統(tǒng)設(shè)計和對象設(shè)計。系統(tǒng)設(shè)計確定實(shí)現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu)。對象設(shè)計確定解空間中的類、關(guān)聯(lián)、接口形式及實(shí)現(xiàn)操作的算法。,4,,5,11. 1 面向?qū)ο笤O(shè)計的準(zhǔn)則,1 、模塊化( Modularity ) :對象就是模塊。把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的模塊 2

3、 、抽象:不僅支持過程抽象,而且支持?jǐn)?shù)據(jù)抽象。 3 、信息隱蔽:通過對象的封裝性來實(shí)現(xiàn)。 4 、弱藕合:對象是最基本的模塊,因此,耦合主要指不同對象之間相互關(guān)聯(lián)的緊密程度。分為交互藕合和繼承藕合,6,,5 、強(qiáng)內(nèi)聚:分為服務(wù)內(nèi)聚、類內(nèi)聚和一般特殊內(nèi)聚。 6 、可重用:11 . 3 節(jié)討論,7,11. 2 啟發(fā)規(guī)則,1 、設(shè)計結(jié)果應(yīng)該清晰易懂 2 、一般特殊結(jié)構(gòu)的深度適當(dāng) 3 、設(shè)計簡單的類 4 、使用簡單的協(xié)議 5 、使用

4、簡單的服務(wù) 6 、把設(shè)計變動減至最小,8,11. 3 軟件重用,1 1 . 3 . 1 概述 1 、軟件重用的概念軟件復(fù)用是指重復(fù)使用已有的軟件產(chǎn)品用于開發(fā)新的軟件系統(tǒng),以達(dá)到提高軟件系統(tǒng)的開發(fā)質(zhì)量與效率,降低開發(fā)成本的目的??蓮?fù)用的軟件成分一可復(fù)用構(gòu)件( Reusable Component )可從舊軟件中提取,也可以專門為復(fù)用而開發(fā)。在軟件復(fù)用中重復(fù)使用的軟件產(chǎn)品不僅僅局限于程序代碼,而是包含了在軟件生產(chǎn)的各個階段所得到的

5、各種軟件產(chǎn)品。,9,可以用于軟件復(fù)用的軟件產(chǎn)品,按照其抽象程度的高低,可以劃分為如下的復(fù)用級別:(1)代碼復(fù)用二進(jìn)制形式的經(jīng)過編譯產(chǎn)生的目標(biāo)代碼。文本形式的源代碼(2)設(shè)計結(jié)果的復(fù)用設(shè)計結(jié)果比源程序的抽象級別更高,因?yàn)樗膹?fù)用受實(shí)現(xiàn)環(huán)境的影響較小,從而使可復(fù)用構(gòu)件被復(fù)用的機(jī)會更多,并且所需的修改更少。這種復(fù)用有三種途徑:,軟件成分的重用級別,10,,從現(xiàn)有系統(tǒng)的設(shè)計結(jié)果中提取一些可復(fù)用的設(shè)計構(gòu)件把一個現(xiàn)有系統(tǒng)的全部設(shè)計文檔在

6、新的軟硬件平臺上重新實(shí)現(xiàn)。獨(dú)立于任何具體的應(yīng)用,有計劃地開發(fā)一些可復(fù)用的設(shè)計構(gòu)件( 3 )分析結(jié)果的復(fù)用這是比設(shè)計結(jié)果的復(fù)用抽象程度更高的復(fù)用,可被復(fù)用的分析結(jié)果是針對問題域的某些事物或某些問題的抽象程度更高的解法,受設(shè)計技術(shù)及實(shí)現(xiàn)條件的影響非常小,所以可復(fù)用的機(jī)會更大。,11,11. 3 .2 類構(gòu)件,面向?qū)ο蠹夹g(shù)中的“類”,是比較理想的可重用軟構(gòu)件,稱之為類構(gòu)件。1 、可重用軟構(gòu)件的特點(diǎn)一個軟構(gòu)件能在構(gòu)造各種各樣的軟件系統(tǒng)

7、時方便地重復(fù)使用,必須具備的條件:1)獨(dú)立性強(qiáng):2)高度可塑性:3)接口清晰,12,,2 、類構(gòu)件重用的方式 1 )實(shí)例重用 2 )繼承重用 3 )多態(tài)重用,13,11. 3 . 3 軟件重用的效益,1 、提高軟件質(zhì)量 2 、提高軟件生產(chǎn)率 3 、降低軟件成本,14,11 . 4 系統(tǒng)分解,系統(tǒng)的主要組成部分稱為子系統(tǒng)。與面向?qū)ο蠓治瞿P鸵粯?,面向?qū)ο笤O(shè)計模型也由主題、類與對象、結(jié)構(gòu)、屬性、服務(wù)等 5 個層次組成。大

8、多數(shù)系統(tǒng)的面向?qū)ο笤O(shè)計模型在邏輯上都由 4 大部分組成,分別是:問題域子系統(tǒng)(問題空間類)人機(jī)交互子系統(tǒng)(用戶界面類)任務(wù)管理子系統(tǒng)(任務(wù)管理類)數(shù)據(jù)管理子系統(tǒng)(數(shù)據(jù)管理類),15,1 、子系統(tǒng)之間的兩種交互方式,1 )客戶一供應(yīng)商關(guān)系作為“客戶”的子系統(tǒng)調(diào)用作為“供應(yīng)商”的子系統(tǒng),后者完成某些服務(wù)工作并返回結(jié)果。 2 )平等伙伴關(guān)系每個子系統(tǒng)都可能調(diào)用其他子系統(tǒng),因此,每個子系統(tǒng)都必須了解其他子系統(tǒng)的接口。,16,2 、

9、組織系統(tǒng)的兩種方案,把子系統(tǒng)組織成完整的系統(tǒng)時,有水平層次組織和垂直塊組織兩種方案可供選擇。( 1 )層次組織這種組織方案把軟件系統(tǒng)組織成一個層次系統(tǒng),每層是一個子系統(tǒng)。 ( 2 )塊狀組織這種組織方案把軟件系統(tǒng)垂直地分解成若干個相對獨(dú)立的、弱藕合的子系統(tǒng),一個子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的服務(wù)。,17,,采用了層次與塊狀的混合結(jié)構(gòu),18,概括地說,面向?qū)ο筌浖_發(fā)方法采用面向?qū)ο笤O(shè)計 (OOD)技術(shù)進(jìn)行問題解決方案的設(shè)計

10、工作,它將問題的解決方案表述為:類+關(guān)聯(lián)的形式,其中,,,類包括問題域子系統(tǒng)(問題空間類)、人機(jī)交互子系統(tǒng)(用戶界面類)、任務(wù)管理子系統(tǒng)(任務(wù)管理類)和數(shù)據(jù)管理子系統(tǒng)(數(shù)據(jù)管理類),是從設(shè)計的角度出發(fā)對問題解決方案中的對象的抽象和描述。 關(guān)聯(lián)則用于描述這些類和類之間的關(guān)系。,19,面向?qū)ο笤O(shè)計工作內(nèi)容和步驟,因此,面向?qū)ο笤O(shè)計工作主要包括問題空間類、用戶界面類、任務(wù)管理類和數(shù)據(jù)管理類的設(shè)計,具體工作內(nèi)容和步驟如圖所示。,20

11、,一、問題空間類 (11.5 設(shè)計問題域子系統(tǒng)) 是指那些直接從面向?qū)ο蠓治瞿P驮O(shè)計得到的類,它是使軟件系統(tǒng)能夠?qū)崿F(xiàn)對問題的求解的最基本的類,也是面向?qū)ο筌浖到y(tǒng)的核心類。,,利用面向?qū)ο蠓治黾夹g(shù)對問題進(jìn)行了分析描述之后,就可以直接將其結(jié)果用于問題空間類的設(shè)計,即直接將分析所得到的對象、對象與對象之間的關(guān)聯(lián)確定為類以及類與類之間的關(guān)聯(lián),這些直接從分析結(jié)果得到的類就是問題空間類。 以一個字處理系統(tǒng)為例,如下圖所示:,21,

12、圖示: 結(jié)構(gòu)化方法設(shè)計結(jié)果,22,,又例:下圖示以及表1~8所示的是大學(xué)教務(wù)管理問題中的問題空間類。,圖示:大學(xué)教務(wù)管理問題中的問題空間類,23,表5.1 Class : Student(學(xué)生) 數(shù)據(jù)變量序號 名稱 定義 類型 中文名稱 備注1 ID char(8) 描述型 學(xué)號  2 Name char(24) 描述型 姓名  3

13、 Sex [男,女] 描述型 性別 枚舉類型4 Birthday date 描述型 出生日期  5 EnrollmentDay date描述型 入學(xué)日期  6 Department char(24) 描述型 系別  7 Speciality char(24) 描述型 專業(yè)  8 Password char(6) 描述型

14、密碼  9 Application [注冊,選課] 描述型 申請 枚舉類型,24,操作序號 名稱 接口參數(shù) 返回值 中文名稱 備注1 GetID () ID 讀入學(xué)號    GetPassword () Password 讀入密碼  2 VerifyPassword () True/Fasle 檢驗(yàn)  3

15、GetApplication () Application 詢問  4 PutApplication () NULL 回答  5 Note ("message" ) NULL 通知  6 ChangePassword (NewPassword, OldPassword) NULL 修改,25,表2 Class : Graduate

16、(研究生) 表3 Class : UnderGraduate(本科生) 表4 Class : RegisterRec(注冊記錄) 表5 Class : Course(課程) 表6 Class : GraduateCourse(研究生課程) 表7 Class : UnderGraduate(本科生課程) 表8 Class : SelectCourse(選課單),26,二、用戶界面類(11.6 設(shè)計人機(jī)交互子系統(tǒng)),是指那些為實(shí)

17、現(xiàn)人機(jī)交互接口而設(shè)計的類,它是使軟件系統(tǒng)能夠接收用戶的命令和能夠?yàn)橛脩籼峁┬畔⑺枰念悺?用戶界面類是為了使系統(tǒng)能夠與用戶進(jìn)行交互而必須增添設(shè)計的類。在實(shí)際中,一個軟件系統(tǒng)常常會因?yàn)槠溆脩艚缑媸沟糜脩舨粷M意而遭到否定或棄之不用。因此用戶界面類的設(shè)計是一項(xiàng)既影響軟件系統(tǒng)前途,又需要做耐心細(xì)致調(diào)查分析的重要工作。,27,,盡管在分析過程中已經(jīng)對用戶在用戶界面方面進(jìn)行了分析,但是在設(shè)計過程中仍然必須繼續(xù)做這項(xiàng)分析工作,必須具體設(shè)計確定交互

18、作用的時間、交互方式和交互技術(shù)等。 用戶界面類的設(shè)計通??梢圆捎孟到y(tǒng)原型(模型)法進(jìn)行。,28,1、分析考察用戶2、設(shè)計命令層次1)研究用戶交互的意義及準(zhǔn)則如果已建立的交互系統(tǒng)中已有命令層次,則先研究這個已有的交互界面的意義和準(zhǔn)則。2)建立初始命令層可以以多種方式提供給用戶,如窗口、按鈕、下拉菜單、菜單條、可動的圖標(biāo),等等。,29,3)細(xì)化命令層為了細(xì)化命令層,應(yīng)考慮如下幾個問題:(1)排序。在開發(fā)命令層時,必須仔細(xì)

19、選擇不同的操作名稱,并把這些名稱按一定要求排序,將最有用的放在前面,或者按習(xí)慣的工作步驟排序。(2)組裝。在操作中尋找組裝結(jié)構(gòu)模式,這有助于在層次中組織和分離操作。(3)寬度和廣度。由于人的短暫記憶局限,命令層次不宜太廣太深。以3最為合適。(4)極小化。盡量少用組合鍵,極小化用戶的擊鍵次數(shù)。,30,,3、完成設(shè)計 當(dāng)前由于軟件開發(fā)工具,特別是可視化開發(fā)工具的日益豐富,完成用戶界面的具體設(shè)計已經(jīng)是一件十分容易的事情了,但是在

20、具體設(shè)計時不能忽略以下原則:1)一致性使用一致的術(shù)語,一致的步驟和一致的動作行為。,31,,2)減少步驟極小化擊鍵次數(shù)、使用鼠標(biāo)的次數(shù)和下拉菜單的次數(shù),極小化響應(yīng)時間。3)盡量顯示提示信息盡量為用戶提供有意義的、及時反饋信息。4)設(shè)置取消操作用戶難免出錯,應(yīng)盡量能使用戶取消其錯誤動作。,32,,5)盡量減少要用戶記憶的內(nèi)容不應(yīng)該要求用戶記下某窗口的信息而用于另一窗口中。6)易學(xué)易用為用戶提供聯(lián)機(jī)學(xué)習(xí)手冊。7)屏幕生

21、動活潑屏幕畫面看起來能夠吸引用戶,喚起用戶的注意和興趣。,33,,例如,對于大學(xué)教務(wù)管理問題,可以先根據(jù)對用戶的分析設(shè)計如下頁圖所示的用戶進(jìn)入系統(tǒng)的屏幕。,34,然后,根據(jù)針對該用戶界面和大多數(shù)面向?qū)ο筌浖_發(fā)環(huán)境所提供的可重用類設(shè)計相應(yīng)的用戶界面類,設(shè)計結(jié)果如下頁圖所示。,35,圖示:大學(xué)教務(wù)管理問題的部分用戶界面類和問題空間類,,36,,其中,Window、EditField、StaticField和Button等類 一般可從開發(fā)

22、環(huán)境提供的類庫中通過繼承重用獲得,需要進(jìn)一步做的設(shè)計工作主要是設(shè)計有關(guān)與問題空間類和任務(wù)管理類進(jìn)行通訊的操作。 例如需要為OKButton類設(shè)計一個向問題空間類中的Student類發(fā)送檢驗(yàn)消息的操作。,37,三、任務(wù)管理類(11.7 設(shè)計任務(wù)管理子系統(tǒng)),是指那些為實(shí)現(xiàn)對多操作并發(fā)執(zhí)行的管理而設(shè)計的類,它是使軟件系統(tǒng)能夠同時處理多個并發(fā)行為所需要的類。 所謂任務(wù),就是一個處理過程,它可能包含不同類的多個操作的執(zhí)行。

23、 任務(wù)管理類的用途之一就是用于管理系統(tǒng)的這種任務(wù),它的另一個主要用途是在操作系統(tǒng)級(運(yùn)行平臺)上負(fù)責(zé)處理并發(fā)、中斷、調(diào)度等問題,從而使得所設(shè)計的系統(tǒng)能夠相對獨(dú)立于運(yùn)行平臺,當(dāng)需要移植到其它運(yùn)行平臺上,只需要替換有關(guān)任務(wù)管理類就可以了。,38,,因此,為了設(shè)計任務(wù)管理類,首先必須從所設(shè)計的系統(tǒng)有關(guān)類中找出需要并發(fā)進(jìn)行的操作和那些與特定運(yùn)行平臺有關(guān)的操作,然后再對它們進(jìn)行分析設(shè)計1、確定任務(wù)類型1)確定事件驅(qū)動型任務(wù)某些任務(wù)是由事件驅(qū)

24、動而執(zhí)行的。這種任務(wù)可能負(fù)責(zé)與設(shè)備的通訊,與一個窗口或多個窗口、其它任務(wù)、子系統(tǒng)、其它處理器或其它系統(tǒng)的通訊。,39,2)確定時鐘驅(qū)動型任務(wù) 這種任務(wù)在特定的時間被觸發(fā)執(zhí)行某些處理。例如,某些設(shè)備要求周期性地獲得數(shù)據(jù)或控制,某些用戶界面、子系統(tǒng)、任務(wù)、處理器或其它系統(tǒng)也可能需要周期性地通訊。此時就常用到時鐘驅(qū)動型的任務(wù)。 3)確定優(yōu)先任務(wù)及關(guān)鍵任務(wù) 優(yōu)先任務(wù)分高優(yōu)先級和低優(yōu)先級二種,用來適應(yīng)處理的需要。關(guān)鍵任務(wù)是有關(guān)系

25、統(tǒng)成功或失敗的關(guān)鍵處理,它通常都有嚴(yán)格的可靠性要求。,40,,4)確定協(xié)調(diào)任務(wù) 當(dāng)存在三個以上的任務(wù)時,就應(yīng)該考慮增加一個任務(wù),用它來協(xié)調(diào)任務(wù)。協(xié)調(diào)任務(wù)的引入當(dāng)然會增加系統(tǒng)的開銷,但是引入?yún)f(xié)調(diào)任務(wù)有利于封裝任務(wù)之間的協(xié)調(diào)控制。使用狀態(tài)轉(zhuǎn)換矩陣可以描述該任務(wù)的行為。,41,,2、分析任務(wù) 設(shè)計多任務(wù)系統(tǒng)的主要問題是設(shè)計人員常常定義太多的任務(wù)。原因是為了自己處理時的方便,但是這樣做就增大了整個設(shè)計的技術(shù)復(fù)雜度,并且不容易理

26、解。因此,在進(jìn)行任務(wù)管理類的具體設(shè)計前,必須仔細(xì)分析和選擇各個任務(wù),盡量使得任務(wù)的數(shù)目降低到最少。,42,,3、完成設(shè)計 設(shè)計任務(wù)包括定義任務(wù)的內(nèi)容以及它怎樣協(xié)調(diào)和通訊。1)任務(wù)的內(nèi)容2)怎樣協(xié)調(diào) 3)怎樣通訊,43,任務(wù)管理類設(shè)計模板如右圖所示:,,44,問題空間類、用戶界面類和任務(wù)管理類之間的基本關(guān)系如下圖所示,任務(wù)管理類對象從運(yùn)行平臺(操作系統(tǒng))接收消息并通過發(fā)送消息創(chuàng)建有關(guān)用戶界面類對象,用戶界面類對象根據(jù)從用戶處獲得的

27、信息創(chuàng)建有關(guān)問題空間類對象并發(fā)送有關(guān)消息給它。 如果沒有為系統(tǒng)設(shè)計任務(wù)管理類,則上述任務(wù)管理類負(fù)責(zé)的有關(guān)工作由用戶界面類負(fù)責(zé)完成。,,圖 示: 任務(wù)管理類、用戶界面類和問題空間類及其消息傳送關(guān)系,45,四、數(shù)據(jù)管理類(11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng)),是指那些為實(shí)現(xiàn)對數(shù)據(jù)進(jìn)行管理而設(shè)計的類,它是使軟件系統(tǒng)能夠?qū)ο蟮膶傩灾颠M(jìn)行存貯和檢索所需要的類。數(shù)據(jù)管理類用于存貯和檢索對象的屬性值,可以采用文件模式或關(guān)系數(shù)據(jù)庫模式實(shí)現(xiàn)。設(shè)計

28、數(shù)據(jù)管理類的目的是為了使得對對象屬性值的管理獨(dú)立于各種不同的數(shù)據(jù)管理模式。,46,,1、數(shù)據(jù)格式設(shè)計 1)文件數(shù)據(jù)格式當(dāng)采用文件存貯管理方式時,數(shù)據(jù)格式的設(shè)計就是對文件記錄結(jié)構(gòu)進(jìn)行設(shè)計。2)關(guān)系數(shù)據(jù)庫格式當(dāng)采用關(guān)系數(shù)據(jù)庫管理方式時,數(shù)據(jù)格式的設(shè)計就是對關(guān)系表結(jié)構(gòu)進(jìn)行設(shè)計。,47,2 、操作設(shè)計 數(shù)據(jù)管理類的操作包括增添數(shù)據(jù)記錄、刪除數(shù)據(jù)記錄、檢索數(shù)據(jù)記錄和更新數(shù)據(jù)記錄等幾種形式,問題空間類可通過這些操作發(fā)送消息給相應(yīng)的

29、數(shù)據(jù)管理類實(shí)現(xiàn)對數(shù)據(jù)的存貯、刪除、檢索和更新。數(shù)據(jù)管理類設(shè)計模板如下圖所示。,,圖 示: 數(shù)據(jù)管理類設(shè)計模板,48,為大學(xué)教務(wù)管理問題中的SelectCourse(選課單)類設(shè)計的一個數(shù)據(jù)管理類。 在SelectCourse類中需要保存的是StudentID、CourseID以及分解為兩個原子變量Year和Semester (學(xué)期)的SelectForCourse等描述性變量,該類通過Write(登記)等操作向相應(yīng)的數(shù)據(jù)管理類S

30、electCourseManager發(fā)送Add(增添)、Update(更新) 等消息。,49,,圖示:大學(xué)教務(wù)管理問題中相應(yīng)于SelectCourse類的數(shù)據(jù)管理,50,第12章 面向?qū)ο髮?shí)現(xiàn) 與結(jié)構(gòu)化實(shí)現(xiàn)技術(shù)中先以模塊為單位進(jìn)行過程設(shè)計和編碼調(diào)試相似,面向?qū)ο髮?shí)現(xiàn)技術(shù)是先以類為單位進(jìn)行操作設(shè)計、編碼調(diào)試;然后實(shí)現(xiàn)類與類之間的關(guān)聯(lián)定義,并進(jìn)行系統(tǒng)測試;最后交予用戶使用并根據(jù)使用情況進(jìn)行維護(hù)。 在每一個階段都必須

31、按照有關(guān)規(guī)范編寫相應(yīng)的說明書或報告。因此,本章主要討論面向?qū)ο髮?shí)現(xiàn)技術(shù)的一些特點(diǎn)和不同于結(jié)構(gòu)化實(shí)現(xiàn)技術(shù)。,51,,1、實(shí)現(xiàn)語言 毫無疑問,面向?qū)ο笤O(shè)計的實(shí)現(xiàn)最自然的實(shí)現(xiàn)方式是利用面向?qū)ο笳Z言。目前最常用的面向?qū)ο笳Z言是C++,其它比較著名的面向?qū)ο笳Z言則還有Smalltalk、面向?qū)ο驪ASCAL,JAVA、Objective-C,Common Lisp Object System (CLOS),等等。,52,2、基本實(shí)現(xiàn)手段

32、 為了實(shí)現(xiàn)面向?qū)ο蟮脑O(shè)計,所選用的編碼語言一般應(yīng)包括實(shí)現(xiàn)類定義、對象創(chuàng)建、結(jié)構(gòu)定義、實(shí)例關(guān)聯(lián)定義、操作調(diào)用和消息發(fā)送、內(nèi)存管理、封裝等基本功能的編碼手段。 這里以目前最為流行的C++語言分別對這些基本功能的實(shí)現(xiàn)手段加以說明。,53,,1 .類定義 使用C++對大學(xué)教務(wù)管理問題中的類Student(學(xué)生)定義如例6.1所示:例12.1 類的定義,typedef struct {int month; int day; in

33、t year; } date; // Month - 月;day - 日;year - 年 enum sexdef {M, F}; //M - 男;F - 女 enum appdef {R, S}; //R - 注冊;S - 選課 class Student { protected: // 導(dǎo)出類可以訪問的數(shù)據(jù)變量,54,char ID[8]; char Name[24]; sexdef Sex; date Birthd

34、ay; date EnrollmentDay; char Department[24]; char Speciality[24]; char Password[6]; apptdef Application; // 導(dǎo)出類可以訪問的操作 appdef GetApplication(); void PutApplication(); void Note(char *Msg);,55,,public: // 構(gòu)造函數(shù),必

35、須與類名稱相同 Student (char *InitID); // 析構(gòu)函數(shù),必須與類名稱相同 ~Student(); // 所有類都可以訪問的操作 char *GetID(); char *GetPassword(); boolean VerifyPassword(); void ChangePassword(char *NewPassword, char *OldPassword); };,56,,在C++中,數(shù)

36、據(jù)變量和操作都被說明為成員,數(shù)據(jù)變量和操作的名稱不能相同。類的成員必須被說明為公有的(public)、保護(hù)的(protectd)或私有的(private)中的一種,其中私有的為缺省值。公有成員可以被任何類的操作訪問;保護(hù)成員只允許類自身及其導(dǎo)出類的操作訪問;私有成員只允許類自身的操作訪問。,57,,在上述例子中,類Student的所有數(shù)據(jù)變量和幾個操作被定義為保護(hù)成員,因?yàn)槠鋵?dǎo)出類Undergraduate(本科生)和Graduate(

37、研究生) 將要訪問這些成員。 類中操作的定義類似于一個過程或函數(shù)的定義,只是需要把類名作為操作名的前綴。例11.2給出了用C++編碼設(shè)計的類Student的操作ChangePassword。,58,例11.2 類操作的定義,void Student::Changepassword(char *NewPassword, char *OldPassword); { if (OldPassword == Pas

38、sword ) { Password = NewPassword; } },59,,Student::Student (char *InitID) { ID = InitID; },與類名稱相同的兩個操作Student和~Student分別稱為構(gòu)造函數(shù)和析構(gòu)函數(shù),它們分別用于對象創(chuàng)建和對象消除操作。例如類Stude

39、nt的構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義分別如例12.3和12.4 所示。 例12.3 類構(gòu)造函數(shù)的定義,60,例12.4 類析構(gòu)函數(shù)的定義 析構(gòu)函數(shù)是不帶參數(shù)的,其名稱是在類名稱前面加一個波浪號“~”。,Student::~Student() { // },61,,12.2.2 對象創(chuàng)建 C++有兩種對象創(chuàng)建方式,靜態(tài)內(nèi)存分配方式和動態(tài)內(nèi)存分配方式,每當(dāng)創(chuàng)建一個新對 象,就執(zhí)行一

40、次構(gòu)造函數(shù)。例12.5 用靜態(tài)內(nèi)存分配方式創(chuàng)建了類Student的學(xué)號為98109002的對象studentobj。對象創(chuàng)建的靜態(tài)內(nèi)存分配方式 Student studentobj("98109002");,62,,如果該語句是出現(xiàn)在一個操作或函數(shù)中,則說明studentobj被定義為局部變量,當(dāng)操作或 函數(shù)執(zhí)行完畢退出時,該對象將被自動消除,所占用的內(nèi)存被釋放,釋放內(nèi)存時將執(zhí)行一次析構(gòu)函數(shù)。如果該語句是將s

41、tudentobj定義為一個全局變量,則只有系統(tǒng)退出后對象studentobj才會被消除。采用動態(tài)內(nèi)存分配方式創(chuàng)建對象時需要借用C++的new操作符進(jìn)行。new操作符為新對象分配內(nèi)存并且返回它的一個指針,指針存放在指針變量中。new操作符可以包括構(gòu)造函數(shù)中 的參數(shù),如例12.6所示。,63,,例12.6 對象創(chuàng)建的動態(tài)內(nèi)存分配方式 Student *studentobj = new Student("98109002&qu

42、ot;) 動態(tài)對象所占的內(nèi)存必須使用C++的delete操作符來釋放。delete操作符首先喚醒該類的 析構(gòu)函數(shù),然后釋放該對象的內(nèi)存,如例12.7所示。例12.7 動態(tài)對象內(nèi)存釋放 delete studentobj; 注意,構(gòu)造函數(shù)和析構(gòu)函數(shù)僅僅是用來初始化及刪除對象的,內(nèi)存分配及釋放應(yīng)該明確由new和delete操作符來實(shí)現(xiàn)或由局部變量的作用消失來實(shí)現(xiàn)。,64,3、 實(shí)現(xiàn)環(huán)境 (1) MFC類庫 (2) 開發(fā)工具:

43、Microsoft Visual C++的四個基本開發(fā)工具。如文本編輯器、項(xiàng)目管理器、瀏覽器、調(diào)試器,等等。 4 、編碼調(diào)試 5 、測試 6 、維護(hù),65,面向?qū)ο笤O(shè)計( OOD )(補(bǔ)充),面向?qū)ο笤O(shè)計建立軟件系統(tǒng)的結(jié)構(gòu)。設(shè)計層次為: 子系統(tǒng)層:包含每個子系統(tǒng)的表示。 類和對象層:包含類層次和每個對象的設(shè)計表示。 消息層:包含使每個對象能夠和其協(xié)作者通信的細(xì)節(jié),建立系統(tǒng)的外部和內(nèi)部接口。 責(zé)任層:包含針對每個對象的所有

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論