




已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
7.2.3 面向?qū)ο笤O(shè)計 面向?qū)ο笤O(shè)計(OOD,Object-Oriented Design)是面向?qū)ο蠓治龅綄崿F(xiàn)的一個橋梁。面向?qū)ο蠓治鍪菍⒂脩粜枨蠼?jīng)過分析后,建立問題域精確模型的過程;而面向?qū)ο笤O(shè)計則根據(jù)面向?qū)ο蠓治龅玫降男枨竽P?,建立求解域模型的過程。即分析必須搞清楚系統(tǒng)“做什么”,而設(shè)計必須搞清楚系統(tǒng)“怎么做”,從分析到設(shè)計不是傳統(tǒng)方法的轉(zhuǎn)換,而是平滑(無縫)過渡,而求解域模型是系統(tǒng)實現(xiàn)的依據(jù)。,面向?qū)ο笤O(shè)計可分為系統(tǒng)設(shè)計和類(對象)設(shè)計。系統(tǒng)設(shè)計是高層設(shè)計,主要確定實現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu)。類-&-對象設(shè)計是低層設(shè)計,主要確定解空間中的類、關(guān)聯(lián)、接口形式及實現(xiàn)服務(wù)的算法;高層設(shè)計主要確定系統(tǒng)的結(jié)構(gòu)、用戶界面,即用來構(gòu)造系統(tǒng)的總的模型,并把任務(wù)分配給系統(tǒng)的各個子系統(tǒng)。,1面向?qū)ο笤O(shè)計的設(shè)計準(zhǔn)則 (1) 模塊化 模塊化是軟件設(shè)計的重要準(zhǔn)則。在面向?qū)ο箝_發(fā)方法中,將對象定義為模塊。對象把數(shù)據(jù)結(jié)構(gòu)和作用在數(shù)據(jù)上的操作(方法)封裝起來構(gòu)成模塊。對象是組成系統(tǒng)的基本模塊。 (2) 抽象 類是一種抽象數(shù)據(jù)類型,在該數(shù)據(jù)類型之上,可以創(chuàng)建對象(類的成員)。類包含相似對象的共同屬性和服務(wù),它對外定義了公共接口,構(gòu)成了類的規(guī)格說明(即協(xié)議),供外界合法訪問。 (3) 信息隱藏 在面向?qū)ο蠓椒ㄖ?,對象是屬性和服?wù)的封裝體,這就實現(xiàn)了信息隱藏。類結(jié)構(gòu)分離了接口與實現(xiàn),類的屬性的表示方法和操作的實現(xiàn)算法,對于類的用戶來說,都應(yīng)該是隱藏的,用戶只能通過公共接口訪問類中的屬性。,(4) 弱耦合 所謂耦合,是指一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連的依賴關(guān)系。依賴關(guān)系越多耦合度越強,依賴關(guān)系越少耦合度越弱。在面向?qū)ο蠓椒ㄖ?,對象是最基本的模塊,不同對象之間相互關(guān)聯(lián)的依賴關(guān)系表示了耦合度。衡量設(shè)計優(yōu)良的一個重要標(biāo)準(zhǔn)就是弱耦合,弱耦合的設(shè)計中某個對象的改變不會或很少影響到其他對象。 不同對象之間耦合是不可避免的。兩個對象必須相互聯(lián)系相互依賴時,應(yīng)該通過類的協(xié)議(即公共接口)實現(xiàn)兩個對象相互依賴(耦合),而不是通過類的具體實現(xiàn)細(xì)節(jié)來描述。 (5) 強內(nèi)聚 所謂內(nèi)聚,是一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度。結(jié)合得越緊密內(nèi)聚越強,結(jié)合得越不緊密內(nèi)聚越弱。強內(nèi)聚也是衡量設(shè)計優(yōu)良的一個重要標(biāo)準(zhǔn)。在面向?qū)ο笤O(shè)計中,內(nèi)聚可分為下述三類:,1) 服務(wù)(操作)內(nèi)聚。一個服務(wù)應(yīng)該是單一的,即只完成一個任務(wù)。 2) 類內(nèi)聚。類內(nèi)聚要求類的屬性和服務(wù)應(yīng)該是高內(nèi)聚的,而且它們應(yīng)該是系統(tǒng)任務(wù)所必需的。一個類應(yīng)該只有一個功能,如果某個類有多個功能,通常應(yīng)該把它分解成多個專用的類。 3) 一般-特殊內(nèi)聚。一般-特殊內(nèi)聚表示:一般-特殊結(jié)構(gòu)符合領(lǐng)域知識的表示形式,也就是說,特殊類應(yīng)該盡量地繼承一般類的屬性和服務(wù)。這樣的一般-特殊結(jié)構(gòu)是高內(nèi)聚的。 (6)可重用 在面向?qū)ο笤O(shè)計中,一個類的設(shè)計應(yīng)該具有通用性,為開發(fā)相似的系統(tǒng)提供軟件重用可能。因此,在軟件開發(fā)過程中,為了實現(xiàn)重用,既要盡量重用已有的類,又要創(chuàng)建可重用的新類。,2設(shè)計策略 在使用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件的實踐中,得出了下面一些基于經(jīng)驗的啟發(fā)規(guī)則,這些規(guī)則往往能幫助軟件開發(fā)人員設(shè)計出好的方案來,以保證軟件的質(zhì)量。 (1)設(shè)計結(jié)果應(yīng)該清晰易懂 (2)一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng) (3)設(shè)計簡單的類 (4)設(shè)計簡單的協(xié)議 (5)設(shè)計簡單的服務(wù) (6)減少設(shè)計變動,3系統(tǒng)分解與組織 面向?qū)ο笤O(shè)計同過程設(shè)計一樣,自頂向下進行功能分解。在設(shè)計比較復(fù)雜的應(yīng)用系統(tǒng)時,將系統(tǒng)分解成若干個比較小的部分,再分別設(shè)計每個部分。這樣既簡化了應(yīng)用系統(tǒng),又降低了設(shè)計的難度,并有利于實現(xiàn)和維護。 系統(tǒng)是根據(jù)功能來分解的,我們將系統(tǒng)分解的各個部分(即系統(tǒng)的主要組成部分)稱為子系統(tǒng)。 子系統(tǒng)間交互的形式和交互的信息由接口確定,因此,接口應(yīng)該簡單、明確。,(1)面向?qū)ο笤O(shè)計的五個層次、四個部分 面向?qū)ο笤O(shè)計模型同樣由主題、類-對象、結(jié)構(gòu)、屬性和服務(wù)等五個層次組成,并且又?jǐn)U充了問題域(PDC)、人機交互(HIC)、任務(wù)管理(TMC)和數(shù)據(jù)管理(DMC)四個部分。 典型的面向?qū)ο笤O(shè)計模型如圖3.3.23示。,圖3.3.23 典型的面向?qū)ο笤O(shè)計模型,(2)子系統(tǒng)間的交互方式 在應(yīng)用系統(tǒng)中,子系統(tǒng)之間的關(guān)系可分為客戶/服務(wù)器關(guān)系和同等伙伴關(guān)系兩種。這兩種關(guān)系對應(yīng)兩種交互的方式,即客戶/服務(wù)器交互方式和同等伙伴交互方式。 通常,系統(tǒng)使用客戶/服務(wù)器關(guān)系,因為單向交互更容易理解,也更容易設(shè)計和修改,而雙向交互相對困難些。 (3) 系統(tǒng)組織 將子系統(tǒng)組織成完整的系統(tǒng)有兩種方式,即水平層次組織和垂直塊組織。 1) 層次組織 層次組織是將子系統(tǒng)按層組織成為一個層次軟件系統(tǒng),每層是一個子系統(tǒng)。上層建立在下層的基礎(chǔ)上,下層為上層提供必要的服務(wù)。低層子系統(tǒng)提供服務(wù),相當(dāng)于服務(wù)器,上層子系統(tǒng)使用下層提供的服務(wù),相當(dāng)于客戶。,2) 塊組織 塊組織將系統(tǒng)垂直地分解成若干個相對獨立的、弱耦合的子系統(tǒng),一個子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的服務(wù)。例如,圖3.3.24示一個典型應(yīng)用系統(tǒng)的組織結(jié)構(gòu)。,(4)設(shè)計系統(tǒng)的拓?fù)浣Y(jié)構(gòu):構(gòu)成完整系統(tǒng)的拓?fù)浣Y(jié)構(gòu)有:管道型、樹型、星型等。,補充: 概括地說,面向?qū)ο筌浖_發(fā)方法采用面向?qū)ο笤O(shè)計 (OOD)技術(shù)進行問題解決方案的設(shè)計工作,它將問題的解決方案表述為: 類關(guān)聯(lián) 的形式,其中,類包括問題空間類、用戶界面類、任務(wù)管理類和數(shù)據(jù)管理類,是從設(shè)計的角度出發(fā)對問題解決方案中的對象的抽象和描述,關(guān)聯(lián)則用于描述這些類和類之間的關(guān)系。 因此,面向?qū)ο笤O(shè)計工作主要包括問題空間類、用戶界面類、任務(wù)管理類和數(shù)據(jù)管理類的設(shè)計,具體工作內(nèi)容和步驟如圖3.3.25所示。,圖3.3.25 面向?qū)ο笤O(shè)計工作內(nèi)容和步驟,一、問題空間類 是指那些直接從面向?qū)ο蠓治瞿P驮O(shè)計得到的類,它是使軟件系統(tǒng)能夠?qū)崿F(xiàn)對問題的求解的最基本的類,也是面向?qū)ο筌浖到y(tǒng)的核心類。 利用面向?qū)ο蠓治黾夹g(shù)對問題進行了分析描述之后,就可以直接將其結(jié)果用于問題空間類的設(shè)計,即直接將分析所得到的對象、對象與對象之間的關(guān)聯(lián)確定為類以及類與類之間的關(guān)聯(lián),這些直接從分析結(jié)果得到的類就是問題空間類。 以一個字處理系統(tǒng)為例,如下圖所示:,圖示: 結(jié)構(gòu)化方法設(shè)計結(jié)果,又例:下圖示以及表18所示的是大學(xué)教務(wù)管理問題中的問題空間類。,圖示:大學(xué)教務(wù)管理問題中的問題空間類,表5.1 Class : Student(學(xué)生) 數(shù)據(jù)變量 序號 名稱 定義 類型 中文名稱 備注 1 ID char(8) 描述型 學(xué)號 2 Name char(24) 描述型 姓名 3 Sex 男,女 描述型 性別 枚舉類型 4 Birthday date 描述型 出生日期 5 EnrollmentDay date 描述型 入學(xué)日期 6 Department char(24) 描述型 系別 7 Speciality char(24) 描述型 專業(yè) 8 Password char(6) 描述型 密碼 9 Application 注冊,選課 描述型 申請 枚舉類型,操作 序號 名稱 接口參數(shù) 返回值 中文名稱 備注 1 GetID () ID 讀入學(xué)號 GetPassword () Password 讀入密碼 2 VerifyPassword () True/Fasle 檢驗 3 GetApplication () Application 詢問 4 PutApplication () NULL 回答 5 Note (“message“ ) NULL 通知 6 ChangePassword (NewPassword, OldPassword) NULL 修改,表5.2 Class : Graduate(研究生) 表5.3 Class : UnderGraduate(本科生) 表5.4 Class : RegisterRec(注冊記錄) 表5.5 Class : Course(課程) 表5.6 Class : GraduateCourse(研究生課程) 表5.7 Class : UnderGraduate(本科生課程) 表5.8 Class : SelectCourse(選課單),二、用戶界面類 是指那些為實現(xiàn)人機交互接口而設(shè)計的類,它是使軟件系統(tǒng)能夠接收用戶的命令和能夠為用戶提供信息所需要的類。 用戶界面類是為了使系統(tǒng)能夠與用戶進行交互而必須增添設(shè)計的類。在實際中,一個軟件系統(tǒng)常常會因為其用戶界面使得用戶不滿意而遭到否定或棄之不用。因此用戶界面類的設(shè)計是一項既影響軟件系統(tǒng)前途,又需要做耐心細(xì)致調(diào)查分析的重要工作。盡管在分析過程中已經(jīng)對用戶在用戶界面方面進行了分析,但是在設(shè)計過程中仍然必須繼續(xù)做這項分析工作,必須具體設(shè)計確定交互作用的時間、交互方式和交互技術(shù)等。 用戶界面類的設(shè)計通??梢圆捎孟到y(tǒng)原型(模型)法進行。,1、分析考察用戶 2、設(shè)計命令層次 1)研究用戶交互的意義及準(zhǔn)則 如果已建立的交互系統(tǒng)中已有命令層次,則先研究這個已有的交互界面的意義和準(zhǔn)則。 2)建立初始命令層 可以以多種方式提供給用戶,如窗口、按鈕、下拉菜單、菜單條、可動的圖標(biāo),等等。 3)細(xì)化命令層 為了細(xì)化命令層,應(yīng)考慮如下幾個問題: (1)排序。在開發(fā)命令層時,必須仔細(xì)選擇不同的操作名稱,并把這些名稱按一定要求排序,將最有用的放在前面,或者按習(xí)慣的工作步驟排序。 (2)組裝。在操作中尋找組裝結(jié)構(gòu)模式,這有助于在層次中組織和分離操作。,(3)寬度和廣度。由于人的短暫記憶局限,命令層次不宜太廣太深。以3最為合適。 (4)極小化。盡量少用組合鍵,極小化用戶的擊鍵次數(shù)。 3、完成設(shè)計 當(dāng)前由于軟件開發(fā)工具,特別是可視化開發(fā)工具的日益豐富,完成用戶界面的具體設(shè)計已經(jīng)是一件十分容易的事情了,但是在具體設(shè)計時不能忽略以下原則: 1)一致性 使用一致的術(shù)語,一致的步驟和一致的動作行為。 2)減少步驟 極小化擊鍵次數(shù)、使用鼠標(biāo)的次數(shù)和下拉菜單的次數(shù),極小化響應(yīng)時間。 3)盡量顯示提示信息 盡量為用戶提供有意義的、及時反饋信息。 4)設(shè)置取消操作 用戶難免出錯,應(yīng)盡量能使用戶取消其錯誤動作。,5)盡量減少要用戶記憶的內(nèi)容 不應(yīng)該要求用戶記下某窗口的信息而用于另一窗口中。 6)易學(xué)易用 為用戶提供聯(lián)機學(xué)習(xí)手冊。 7)屏幕生動活潑 屏幕畫面看起來能夠吸引用戶,喚起用戶的注意和興趣。 例如,對于大學(xué)教務(wù)管理問題,可以先根據(jù)對用戶的分析設(shè)計如下頁圖所示的用戶進入系統(tǒng)的屏幕。,圖示: 用戶進入系統(tǒng)屏幕界面,然后,根據(jù)針對該用戶界面和大多數(shù)面向?qū)ο筌浖_發(fā)環(huán)境所提供的可重用類設(shè)計相應(yīng)的用戶界面類,設(shè)計結(jié)果如下頁圖所示。,圖示:大學(xué)教務(wù)管理問題的部分用戶界面類和問題空間類,其中,Window、EditField、StaticField和Button等類 一般可從開發(fā)環(huán)境提供的類庫中通過繼承重用獲得,需要進一步做的設(shè)計工作主要是設(shè)計有關(guān)與問題空間類和任務(wù)管理類進行通訊的操作。例如需要為OKButton類設(shè)計一個向問題空間類中的Student類發(fā)送檢驗消息的操作。,三、任務(wù)管理類 是指那些為實現(xiàn)對多操作并發(fā)執(zhí)行的管理而設(shè)計的類,它是使軟件系統(tǒng)能夠同時處理多個并發(fā)行為所需要的類。 所謂任務(wù),就是一個處理過程,它可能包含不同類的多個操作的執(zhí)行。任務(wù)管理類的用途之一就是用于管理系統(tǒng)的這種任務(wù),它的另一個主要用途是在操作系統(tǒng)級(運行平臺)上 負(fù)責(zé)處理并發(fā)、中斷、調(diào)度等問題,從而使得所設(shè)計的系統(tǒng)能夠相對獨立于運行平臺,當(dāng)需要移植到其它運行平臺上,只需要替換有關(guān)任務(wù)管理類就可以了。 因此,為了設(shè)計任務(wù)管理類,首先必須從所設(shè)計的系統(tǒng)有關(guān)類中找出需要并發(fā)進行的操作和那些與特定運行平臺有關(guān)的操作,然后再對它們進行分析設(shè)計 1、確定任務(wù)類型 1)確定事件驅(qū)動型任務(wù),某些任務(wù)是由事件驅(qū)動而執(zhí)行的。這種任務(wù)可能負(fù)責(zé)與設(shè)備的通訊,與一個窗口或多個窗口、其它任務(wù)、子系統(tǒng)、其它處理器或其它系統(tǒng)的通訊。 2)確定時鐘驅(qū)動型任務(wù) 這種任務(wù)在特定的時間被觸發(fā)執(zhí)行某些處理。例如,某些設(shè)備要求周期性地獲得數(shù)據(jù)或控制,某些用戶界面、子系統(tǒng)、任務(wù)、處理器或其它系統(tǒng)也可能需要周期性地通訊。此時就常用到時鐘驅(qū)動型的任務(wù)。 3)確定優(yōu)先任務(wù)及臨界任務(wù) 優(yōu)先任務(wù)分高優(yōu)先級和低優(yōu)先級二種,用來適應(yīng)處理的需要。臨界任務(wù)是有關(guān)系統(tǒng)成功或失敗的臨界處理,它尤其涉及嚴(yán)格的可靠性約束。 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ù)的行為。,2、分析任務(wù) 設(shè)計多任務(wù)系統(tǒng)的主要問題是設(shè)計人員常常定義太多的任務(wù)。原因是為了自己處理時的方便,但是這樣做就增大了整個設(shè)計的技術(shù)復(fù)雜度,并且不容易理解。因此,在進行任務(wù)管理類的具體設(shè)計前,必須仔細(xì)分析和選擇各個任務(wù),盡量使得任務(wù)的數(shù)目降低到最少。 3、完成設(shè)計 設(shè)計任務(wù)包括定義任務(wù)的內(nèi)容以及它怎樣協(xié)調(diào)和通訊。 1)任務(wù)的內(nèi)容 2)怎樣協(xié)調(diào) 3)怎樣通訊,任務(wù)管理類設(shè)計模板如右圖所示:,問題空間類、用戶界面類和任務(wù)管理類之間的基本關(guān)系如下圖所示,任務(wù)管理類對象 從運行平臺(操作系統(tǒng))接收消息并通過發(fā)送消息創(chuàng)建有關(guān)用戶界面類對象,用戶界面類對象根據(jù)從用戶處獲得的信息創(chuàng)建有關(guān)問題空間類對象并發(fā)送有關(guān)消息給它。 如果沒有為系統(tǒng)設(shè)計任務(wù)管理類,則上述任務(wù)管理類負(fù)責(zé)的有關(guān)工作由用戶界面類負(fù)責(zé)完成。,圖 示: 任務(wù)管理類、用戶界面類和問題空間類及其消息傳送關(guān)系,四、數(shù)據(jù)管理類 是指那些為實現(xiàn)對數(shù)據(jù)進行管理而設(shè)計的類,它是使軟件系統(tǒng)能夠?qū)ο蟮膶傩灾颠M行存貯和檢索所需要的類。 數(shù)據(jù)管理類用于存貯和檢索對象的屬性值,可以采用文件模式或關(guān)系數(shù)據(jù)庫模式實現(xiàn)。設(shè)計數(shù)據(jù)管理類的目的是為了使得對對象屬性值的管理獨立于各種不同的數(shù)據(jù)管理模式。 1、數(shù)據(jù)格式設(shè)計 1)文件數(shù)據(jù)格式 當(dāng)采用文件存貯管理方式時,數(shù)據(jù)格式的設(shè)計就是對文件記錄結(jié)構(gòu)進行設(shè)計。 2)關(guān)系數(shù)據(jù)庫格式 當(dāng)采用關(guān)系數(shù)據(jù)庫管理方式時,數(shù)據(jù)格式的設(shè)計就是對關(guān)系表結(jié)構(gòu)進行設(shè)計。,2 、操作設(shè)計 數(shù)據(jù)管理類的操作包括增添數(shù)據(jù)記錄、刪除數(shù)據(jù)記錄、檢索數(shù)據(jù)記錄和更新數(shù)據(jù)記錄等幾種形式,問題空間類可通過這些操作發(fā)送消息給相應(yīng)的數(shù)據(jù)管理類實現(xiàn)對數(shù)據(jù)的存貯、刪除、檢索和更新。數(shù)據(jù)管理類設(shè)計模板如下圖所示。,圖 示: 數(shù)據(jù)管理類設(shè)計模板,下頁圖示是為大學(xué)教務(wù)管理問題中的SelectCourse(選課單)類設(shè)計的一個數(shù)據(jù)管理類。 在SelectCourse類中需要保存的是StudentID、CourseID以及分解為兩個原子變量Year和Semester 的SelectForCourse等描述性變量,該類通過Write(登記)等操作向相應(yīng)的數(shù)據(jù)管理類SelectCourseManager發(fā)送Add(增添)、Update(更新) 等消息。,圖示:大學(xué)教務(wù)管理問題中相應(yīng)于SelectCourse類的數(shù)據(jù)管理,面向?qū)ο髮崿F(xiàn)技術(shù) 與結(jié)構(gòu)化實現(xiàn)技術(shù)中先以模塊為單位進行過程設(shè)計和編碼調(diào)試相似,面向?qū)ο髮崿F(xiàn)技術(shù)是先以類為單位進行操作設(shè)計、編碼調(diào)試;然后實現(xiàn)類與類之間的關(guān)聯(lián)定義,并進行系統(tǒng)測試;最后交予用戶使用并根據(jù)使用情況進行維護。在每一個階段都必須按照有關(guān)規(guī)范編寫相應(yīng)的說明書或報告。因此,本章主要討論面向?qū)ο髮崿F(xiàn)技術(shù)的一些特點和不同于結(jié)構(gòu)化實現(xiàn)技術(shù)。 1、實現(xiàn)語言 毫無疑問,面向?qū)ο笤O(shè)計的實現(xiàn)最自然的實現(xiàn)方式是利用面向?qū)ο笳Z言。目前最常用的面向?qū)ο笳Z言是C+,其它比較著名的面向?qū)ο笳Z言則還有Smalltalk、面向?qū)ο驪ASCAL,JAVA、Objective-C,Common Lisp Object System (CLOS),等等。,2、基本實現(xiàn)手段 為了實現(xiàn)面向?qū)ο蟮脑O(shè)計,所選用的編碼語言一般應(yīng)包括實現(xiàn)類定義、對象創(chuàng)建、結(jié)構(gòu)定義、實例關(guān)聯(lián)定義、操作調(diào)用和消息發(fā)送、內(nèi)存管理、封裝等基本功能的編碼手段。這里以目前最為流行的C+語言分別對這些基本功能的實現(xiàn)手段加以說明。 1 類定義 使用C+對大學(xué)教務(wù)管理問題中的類Student(學(xué)生)定義如例6.1所示: 例6.1 類的定義 typedef struct int month; int day; int year; date; / Month - 月;day - 日;year - 年 enum sexdef M, F; /M - 男;F - 女 enum appdef R, S; /R - 注冊;S - 選課 class Student protected: / 導(dǎo)出類可以訪問的數(shù)據(jù)變量,char ID8; char Name24; sexdef Sex; date Birthday; date EnrollmentDay; char Department24; char Speciality24; char Password6; apptdef Application; / 導(dǎo)出類可以訪問的操作 appdef GetApplication(); void PutApplication(); void Note(char *Msg); public: / 構(gòu)造函數(shù),必須與類名稱相同 Student (char *InitID); / 析構(gòu)函數(shù),必須與類名稱相同 Student();,/ 所有類都可以訪問的操作 char *GetID(); char *GetPassword(); boolean VerifyPassword(); void ChangePassword(char *NewPassword, char *OldPassword); ; 在C+中,數(shù)據(jù)變量和操作都被說明為成員,數(shù)據(jù)變量和操作的名稱不能相同。類的成 員必須被說明為公有的(public)、保護的(protectd)或私有的(private)中的一種,其中 私有的為缺省值。公有成員可以被任何類的操作訪問;保護成員只允許類自身及其導(dǎo)出類的操作訪問;私有成員只允許類自身的操作訪問。在上述例子中,類Student的所有數(shù)據(jù)變量和幾個操作被定義為保護成員,因為其導(dǎo)出類Undergraduate(本科生)和Graduate(研究生) 將要訪問這些成員。 類中操作的定義類似于一個過程或函數(shù)的定義,只是需要把類名作為操作名的前綴。例6.2給出了用C+編碼設(shè)計的類Student的操作ChangePassword。,例6.2 類操作的定義 void Student:Changepassword(char *NewPassword, char *OldPassword); if (OldPassword = Password ) Password = NewPassword; 與類名稱相同的兩個操作Student和Student分別稱為構(gòu)造函數(shù)和析構(gòu)函數(shù),它們分別用 于對象創(chuàng)建和對象消除操作。例如類Student的構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義分別如例6.3和6.4 所示。 例6.3 類構(gòu)造函數(shù)的定義 Student:Student (char *InitID) ID = InitID; ,例6.4 類析構(gòu)函數(shù)的定義 Student:Student() / 析構(gòu)函數(shù)是不帶參數(shù)的,其名稱是在類名稱前面加一個波浪號“”。 6.2.2 對象創(chuàng)建 C+有兩種對象創(chuàng)建方式,靜態(tài)內(nèi)存分配方式和動態(tài)內(nèi)存分配方式,每當(dāng)創(chuàng)建一個新對 象,就執(zhí)行一次構(gòu)造函數(shù)。 例6.5用靜態(tài)內(nèi)存分配方式創(chuàng)建了類Student的學(xué)號為98109002的對象studentobj。 例6.5 對象創(chuàng)建的靜態(tài)內(nèi)存分配方式 Student studentobj(“98109002“);,如果該語句是出現(xiàn)在一個操作或函數(shù)中,則說明studentobj被定義為局部變量,當(dāng)操作或 函數(shù)執(zhí)行完畢退出時,該對象將被自動消除,所占用的內(nèi)存被釋放,釋放內(nèi)存時將執(zhí)行一次析構(gòu)函數(shù)。如果該語句是將studentobj定義為一個全局變量,則只有系統(tǒng)退出后對象studentobj才會被消除。 采用動態(tài)內(nèi)存分配方式創(chuàng)建對象時需要借用C+的
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省蘭州二十七中2015-2016學(xué)年高一上學(xué)期期末化學(xué)試卷
- 構(gòu)建2025年國際交流合作項目的學(xué)校管理標(biāo)準(zhǔn)
- 2025年造價工程師建設(shè)工程計價押題卷易錯題型解析
- 2025年智能汽車應(yīng)用工程師認(rèn)證考試模擬試題:智能駕駛車輛緊急制動系統(tǒng)
- 2025年七年級語文閱讀理解測試卷:閱讀理解技巧與實戰(zhàn)演練案例
- 截肢大腿殘肢護理
- 廣東省深圳高級中學(xué)11-12學(xué)年高二上學(xué)期期末試題物理
- 醫(yī)學(xué)教育網(wǎng)職業(yè)暴露課件
- 國企品牌管理崗招聘考試專業(yè)卷2025年真題匯編
- 提高財務(wù)成本管理能力的試題及答案
- 配電箱系統(tǒng)圖
- 精選靜電感應(yīng)現(xiàn)象的應(yīng)用練習(xí)題(有答案)
- 電纜井工程量計算
- 初中音樂--人聲的分類--(1)pptppt課件
- 育種學(xué) 第6章雜交育種
- 小作坊生產(chǎn)工藝流程圖(共2頁)
- 生態(tài)瓶記錄單
- 食品飲料購銷合同
- 民法典部分條文新舊對比解讀PPT課件
- 鋼芯鋁絞線參數(shù)
- 音王點歌機800S加歌操作方法
評論
0/150
提交評論