




已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程 第十一章面向?qū)ο笤O(shè)計(jì)第十二章面向?qū)ο髮?shí)現(xiàn) 2 11 1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則11 2啟發(fā)規(guī)則11 3軟件重用11 4系統(tǒng)分解11 5設(shè)計(jì)問題域子系統(tǒng)11 6設(shè)計(jì)人機(jī)交互子系統(tǒng)11 7設(shè)計(jì)任務(wù)管理子系統(tǒng)11 8設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)11 9設(shè)計(jì)類中的服務(wù) 3 面向?qū)ο笤O(shè)計(jì)是把分析階段得到的需求轉(zhuǎn)變成符合成本和質(zhì)量要求的 抽象的系統(tǒng)實(shí)現(xiàn)方案的過程 從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計(jì) 是一個(gè)逐漸擴(kuò)充模型的過程生命周期方法學(xué)把設(shè)計(jì)進(jìn)一步劃分成總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段 類似地 也可以把面向?qū)ο笤O(shè)計(jì)再細(xì)分為系統(tǒng)設(shè)計(jì)和對(duì)象設(shè)計(jì) 系統(tǒng)設(shè)計(jì)確定實(shí)現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu) 對(duì)象設(shè)計(jì)確定解空間中的類 關(guān)聯(lián) 接口形式及實(shí)現(xiàn)操作的算法 4 5 11 1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則 1 模塊化 Modularity 對(duì)象就是模塊 把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的模塊2 抽象 不僅支持過程抽象 而且支持?jǐn)?shù)據(jù)抽象 3 信息隱蔽 通過對(duì)象的封裝性來實(shí)現(xiàn) 4 弱藕合 對(duì)象是最基本的模塊 因此 耦合主要指不同對(duì)象之間相互關(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è)計(jì)結(jié)果應(yīng)該清晰易懂2 一般特殊結(jié)構(gòu)的深度適當(dāng)3 設(shè)計(jì)簡(jiǎn)單的類4 使用簡(jiǎn)單的協(xié)議5 使用簡(jiǎn)單的服務(wù)6 把設(shè)計(jì)變動(dòng)減至最小 8 11 3軟件重用 11 3 1概述1 軟件重用的概念軟件復(fù)用是指重復(fù)使用已有的軟件產(chǎn)品用于開發(fā)新的軟件系統(tǒng) 以達(dá)到提高軟件系統(tǒng)的開發(fā)質(zhì)量與效率 降低開發(fā)成本的目的 可復(fù)用的軟件成分一可復(fù)用構(gòu)件 ReusableComponent 可從舊軟件中提取 也可以專門為復(fù)用而開發(fā) 在軟件復(fù)用中重復(fù)使用的軟件產(chǎn)品不僅僅局限于程序代碼 而是包含了在軟件生產(chǎn)的各個(gè)階段所得到的各種軟件產(chǎn)品 9 可以用于軟件復(fù)用的軟件產(chǎn)品 按照其抽象程度的高低 可以劃分為如下的復(fù)用級(jí)別 1 代碼復(fù)用二進(jìn)制形式的經(jīng)過編譯產(chǎn)生的目標(biāo)代碼 文本形式的源代碼 2 設(shè)計(jì)結(jié)果的復(fù)用設(shè)計(jì)結(jié)果比源程序的抽象級(jí)別更高 因?yàn)樗膹?fù)用受實(shí)現(xiàn)環(huán)境的影響較小 從而使可復(fù)用構(gòu)件被復(fù)用的機(jī)會(huì)更多 并且所需的修改更少 這種復(fù)用有三種途徑 軟件成分的重用級(jí)別 10 從現(xiàn)有系統(tǒng)的設(shè)計(jì)結(jié)果中提取一些可復(fù)用的設(shè)計(jì)構(gòu)件把一個(gè)現(xiàn)有系統(tǒng)的全部設(shè)計(jì)文檔在新的軟硬件平臺(tái)上重新實(shí)現(xiàn) 獨(dú)立于任何具體的應(yīng)用 有計(jì)劃地開發(fā)一些可復(fù)用的設(shè)計(jì)構(gòu)件 3 分析結(jié)果的復(fù)用這是比設(shè)計(jì)結(jié)果的復(fù)用抽象程度更高的復(fù)用 可被復(fù)用的分析結(jié)果是針對(duì)問題域的某些事物或某些問題的抽象程度更高的解法 受設(shè)計(jì)技術(shù)及實(shí)現(xiàn)條件的影響非常小 所以可復(fù)用的機(jī)會(huì)更大 11 11 3 2類構(gòu)件 面向?qū)ο蠹夹g(shù)中的 類 是比較理想的可重用軟構(gòu)件 稱之為類構(gòu)件 1 可重用軟構(gòu)件的特點(diǎn)一個(gè)軟構(gòu)件能在構(gòu)造各種各樣的軟件系統(tǒng)時(shí)方便地重復(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è)計(jì)模型也由主題 類與對(duì)象 結(jié)構(gòu) 屬性 服務(wù)等5個(gè)層次組成 大多數(shù)系統(tǒng)的面向?qū)ο笤O(shè)計(jì)模型在邏輯上都由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)系每個(gè)子系統(tǒng)都可能調(diào)用其他子系統(tǒng) 因此 每個(gè)子系統(tǒng)都必須了解其他子系統(tǒng)的接口 16 2 組織系統(tǒng)的兩種方案 把子系統(tǒng)組織成完整的系統(tǒng)時(shí) 有水平層次組織和垂直塊組織兩種方案可供選擇 1 層次組織這種組織方案把軟件系統(tǒng)組織成一個(gè)層次系統(tǒng) 每層是一個(gè)子系統(tǒng) 2 塊狀組織這種組織方案把軟件系統(tǒng)垂直地分解成若干個(gè)相對(duì)獨(dú)立的 弱藕合的子系統(tǒng) 一個(gè)子系統(tǒng)相當(dāng)于一塊 每塊提供一種類型的服務(wù) 17 采用了層次與塊狀的混合結(jié)構(gòu) 18 概括地說 面向?qū)ο筌浖_發(fā)方法采用面向?qū)ο笤O(shè)計(jì) OOD 技術(shù)進(jìn)行問題解決方案的設(shè)計(jì)工作 它將問題的解決方案表述為 類 關(guān)聯(lián)的形式 其中 類包括問題域子系統(tǒng) 問題空間類 人機(jī)交互子系統(tǒng) 用戶界面類 任務(wù)管理子系統(tǒng) 任務(wù)管理類 和數(shù)據(jù)管理子系統(tǒng) 數(shù)據(jù)管理類 是從設(shè)計(jì)的角度出發(fā)對(duì)問題解決方案中的對(duì)象的抽象和描述 關(guān)聯(lián)則用于描述這些類和類之間的關(guān)系 19 面向?qū)ο笤O(shè)計(jì)工作內(nèi)容和步驟 因此 面向?qū)ο笤O(shè)計(jì)工作主要包括問題空間類 用戶界面類 任務(wù)管理類和數(shù)據(jù)管理類的設(shè)計(jì) 具體工作內(nèi)容和步驟如圖所示 20 一 問題空間類 11 5設(shè)計(jì)問題域子系統(tǒng) 是指那些直接從面向?qū)ο蠓治瞿P驮O(shè)計(jì)得到的類 它是使軟件系統(tǒng)能夠?qū)崿F(xiàn)對(duì)問題的求解的最基本的類 也是面向?qū)ο筌浖到y(tǒng)的核心類 利用面向?qū)ο蠓治黾夹g(shù)對(duì)問題進(jìn)行了分析描述之后 就可以直接將其結(jié)果用于問題空間類的設(shè)計(jì) 即直接將分析所得到的對(duì)象 對(duì)象與對(duì)象之間的關(guān)聯(lián)確定為類以及類與類之間的關(guān)聯(lián) 這些直接從分析結(jié)果得到的類就是問題空間類 以一個(gè)字處理系統(tǒng)為例 如下圖所示 21 圖示 結(jié)構(gòu)化方法設(shè)計(jì)結(jié)果 22 又例 下圖示以及表1 8所示的是大學(xué)教務(wù)管理問題中的問題空間類 圖示 大學(xué)教務(wù)管理問題中的問題空間類 23 表5 1Class Student 學(xué)生 數(shù)據(jù)變量序號(hào)名稱定義類型中文名稱備注1IDchar 8 描述型學(xué)號(hào)2Namechar 24 描述型姓名3Sex 男 女 描述型性別枚舉類型4Birthdaydate描述型出生日期5EnrollmentDaydate描述型入學(xué)日期6Departmentchar 24 描述型系別7Specialitychar 24 描述型專業(yè)8Passwordchar 6 描述型密碼9Application 注冊(cè) 選課 描述型申請(qǐng)枚舉類型 24 操作序號(hào)名稱接口參數(shù)返回值中文名稱備注1GetID ID讀入學(xué)號(hào)GetPassword Password讀入密碼2VerifyPassword True Fasle檢驗(yàn)3GetApplication Application詢問4PutApplication NULL回答5Note message NULL通知6ChangePassword NewPassword OldPassword NULL修改 25 表2Class Graduate 研究生 表3Class UnderGraduate 本科生 表4Class RegisterRec 注冊(cè)記錄 表5Class Course 課程 表6Class GraduateCourse 研究生課程 表7Class UnderGraduate 本科生課程 表8Class SelectCourse 選課單 26 二 用戶界面類 11 6設(shè)計(jì)人機(jī)交互子系統(tǒng) 是指那些為實(shí)現(xiàn)人機(jī)交互接口而設(shè)計(jì)的類 它是使軟件系統(tǒng)能夠接收用戶的命令和能夠?yàn)橛脩籼峁┬畔⑺枰念?用戶界面類是為了使系統(tǒng)能夠與用戶進(jìn)行交互而必須增添設(shè)計(jì)的類 在實(shí)際中 一個(gè)軟件系統(tǒng)常常會(huì)因?yàn)槠溆脩艚缑媸沟糜脩舨粷M意而遭到否定或棄之不用 因此用戶界面類的設(shè)計(jì)是一項(xiàng)既影響軟件系統(tǒng)前途 又需要做耐心細(xì)致調(diào)查分析的重要工作 27 盡管在分析過程中已經(jīng)對(duì)用戶在用戶界面方面進(jìn)行了分析 但是在設(shè)計(jì)過程中仍然必須繼續(xù)做這項(xiàng)分析工作 必須具體設(shè)計(jì)確定交互作用的時(shí)間 交互方式和交互技術(shù)等 用戶界面類的設(shè)計(jì)通??梢圆捎孟到y(tǒng)原型 模型 法進(jìn)行 28 1 分析考察用戶2 設(shè)計(jì)命令層次1 研究用戶交互的意義及準(zhǔn)則如果已建立的交互系統(tǒng)中已有命令層次 則先研究這個(gè)已有的交互界面的意義和準(zhǔn)則 2 建立初始命令層可以以多種方式提供給用戶 如窗口 按鈕 下拉菜單 菜單條 可動(dòng)的圖標(biāo) 等等 29 3 細(xì)化命令層為了細(xì)化命令層 應(yīng)考慮如下幾個(gè)問題 1 排序 在開發(fā)命令層時(shí) 必須仔細(xì)選擇不同的操作名稱 并把這些名稱按一定要求排序 將最有用的放在前面 或者按習(xí)慣的工作步驟排序 2 組裝 在操作中尋找組裝結(jié)構(gòu)模式 這有助于在層次中組織和分離操作 3 寬度和廣度 由于人的短暫記憶局限 命令層次不宜太廣太深 以3最為合適 4 極小化 盡量少用組合鍵 極小化用戶的擊鍵次數(shù) 30 3 完成設(shè)計(jì)當(dāng)前由于軟件開發(fā)工具 特別是可視化開發(fā)工具的日益豐富 完成用戶界面的具體設(shè)計(jì)已經(jīng)是一件十分容易的事情了 但是在具體設(shè)計(jì)時(shí)不能忽略以下原則 1 一致性使用一致的術(shù)語 一致的步驟和一致的動(dòng)作行為 31 2 減少步驟極小化擊鍵次數(shù) 使用鼠標(biāo)的次數(shù)和下拉菜單的次數(shù) 極小化響應(yīng)時(shí)間 3 盡量顯示提示信息盡量為用戶提供有意義的 及時(shí)反饋信息 4 設(shè)置取消操作用戶難免出錯(cuò) 應(yīng)盡量能使用戶取消其錯(cuò)誤動(dòng)作 32 5 盡量減少要用戶記憶的內(nèi)容不應(yīng)該要求用戶記下某窗口的信息而用于另一窗口中 6 易學(xué)易用為用戶提供聯(lián)機(jī)學(xué)習(xí)手冊(cè) 7 屏幕生動(dòng)活潑屏幕畫面看起來能夠吸引用戶 喚起用戶的注意和興趣 33 例如 對(duì)于大學(xué)教務(wù)管理問題 可以先根據(jù)對(duì)用戶的分析設(shè)計(jì)如下頁圖所示的用戶進(jìn)入系統(tǒng)的屏幕 34 然后 根據(jù)針對(duì)該用戶界面和大多數(shù)面向?qū)ο筌浖_發(fā)環(huán)境所提供的可重用類設(shè)計(jì)相應(yīng)的用戶界面類 設(shè)計(jì)結(jié)果如下頁圖所示 35 圖示 大學(xué)教務(wù)管理問題的部分用戶界面類和問題空間類 36 其中 Window EditField StaticField和Button等類一般可從開發(fā)環(huán)境提供的類庫中通過繼承重用獲得 需要進(jìn)一步做的設(shè)計(jì)工作主要是設(shè)計(jì)有關(guān)與問題空間類和任務(wù)管理類進(jìn)行通訊的操作 例如需要為OKButton類設(shè)計(jì)一個(gè)向問題空間類中的Student類發(fā)送檢驗(yàn)消息的操作 37 三 任務(wù)管理類 11 7設(shè)計(jì)任務(wù)管理子系統(tǒng) 是指那些為實(shí)現(xiàn)對(duì)多操作并發(fā)執(zhí)行的管理而設(shè)計(jì)的類 它是使軟件系統(tǒng)能夠同時(shí)處理多個(gè)并發(fā)行為所需要的類 所謂任務(wù) 就是一個(gè)處理過程 它可能包含不同類的多個(gè)操作的執(zhí)行 任務(wù)管理類的用途之一就是用于管理系統(tǒng)的這種任務(wù) 它的另一個(gè)主要用途是在操作系統(tǒng)級(jí) 運(yùn)行平臺(tái) 上負(fù)責(zé)處理并發(fā) 中斷 調(diào)度等問題 從而使得所設(shè)計(jì)的系統(tǒng)能夠相對(duì)獨(dú)立于運(yùn)行平臺(tái) 當(dāng)需要移植到其它運(yùn)行平臺(tái)上 只需要替換有關(guān)任務(wù)管理類就可以了 38 因此 為了設(shè)計(jì)任務(wù)管理類 首先必須從所設(shè)計(jì)的系統(tǒng)有關(guān)類中找出需要并發(fā)進(jìn)行的操作和那些與特定運(yùn)行平臺(tái)有關(guān)的操作 然后再對(duì)它們進(jìn)行分析設(shè)計(jì)1 確定任務(wù)類型1 確定事件驅(qū)動(dòng)型任務(wù)某些任務(wù)是由事件驅(qū)動(dòng)而執(zhí)行的 這種任務(wù)可能負(fù)責(zé)與設(shè)備的通訊 與一個(gè)窗口或多個(gè)窗口 其它任務(wù) 子系統(tǒng) 其它處理器或其它系統(tǒng)的通訊 39 2 確定時(shí)鐘驅(qū)動(dòng)型任務(wù)這種任務(wù)在特定的時(shí)間被觸發(fā)執(zhí)行某些處理 例如 某些設(shè)備要求周期性地獲得數(shù)據(jù)或控制 某些用戶界面 子系統(tǒng) 任務(wù) 處理器或其它系統(tǒng)也可能需要周期性地通訊 此時(shí)就常用到時(shí)鐘驅(qū)動(dòng)型的任務(wù) 3 確定優(yōu)先任務(wù)及關(guān)鍵任務(wù)優(yōu)先任務(wù)分高優(yōu)先級(jí)和低優(yōu)先級(jí)二種 用來適應(yīng)處理的需要 關(guān)鍵任務(wù)是有關(guān)系統(tǒng)成功或失敗的關(guān)鍵處理 它通常都有嚴(yán)格的可靠性要求 40 4 確定協(xié)調(diào)任務(wù)當(dāng)存在三個(gè)以上的任務(wù)時(shí) 就應(yīng)該考慮增加一個(gè)任務(wù) 用它來協(xié)調(diào)任務(wù) 協(xié)調(diào)任務(wù)的引入當(dāng)然會(huì)增加系統(tǒng)的開銷 但是引入?yún)f(xié)調(diào)任務(wù)有利于封裝任務(wù)之間的協(xié)調(diào)控制 使用狀態(tài)轉(zhuǎn)換矩陣可以描述該任務(wù)的行為 41 2 分析任務(wù)設(shè)計(jì)多任務(wù)系統(tǒng)的主要問題是設(shè)計(jì)人員常常定義太多的任務(wù) 原因是為了自己處理時(shí)的方便 但是這樣做就增大了整個(gè)設(shè)計(jì)的技術(shù)復(fù)雜度 并且不容易理解 因此 在進(jìn)行任務(wù)管理類的具體設(shè)計(jì)前 必須仔細(xì)分析和選擇各個(gè)任務(wù) 盡量使得任務(wù)的數(shù)目降低到最少 42 3 完成設(shè)計(jì)設(shè)計(jì)任務(wù)包括定義任務(wù)的內(nèi)容以及它怎樣協(xié)調(diào)和通訊 1 任務(wù)的內(nèi)容2 怎樣協(xié)調(diào)3 怎樣通訊 43 任務(wù)管理類設(shè)計(jì)模板如右圖所示 44 問題空間類 用戶界面類和任務(wù)管理類之間的基本關(guān)系如下圖所示 任務(wù)管理類對(duì)象從運(yùn)行平臺(tái) 操作系統(tǒng) 接收消息并通過發(fā)送消息創(chuàng)建有關(guān)用戶界面類對(duì)象 用戶界面類對(duì)象根據(jù)從用戶處獲得的信息創(chuàng)建有關(guān)問題空間類對(duì)象并發(fā)送有關(guān)消息給它 如果沒有為系統(tǒng)設(shè)計(jì)任務(wù)管理類 則上述任務(wù)管理類負(fù)責(zé)的有關(guān)工作由用戶界面類負(fù)責(zé)完成 圖示 任務(wù)管理類 用戶界面類和問題空間類及其消息傳送關(guān)系 45 四 數(shù)據(jù)管理類 11 8設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng) 是指那些為實(shí)現(xiàn)對(duì)數(shù)據(jù)進(jìn)行管理而設(shè)計(jì)的類 它是使軟件系統(tǒng)能夠?qū)?duì)象的屬性值進(jìn)行存貯和檢索所需要的類 數(shù)據(jù)管理類用于存貯和檢索對(duì)象的屬性值 可以采用文件模式或關(guān)系數(shù)據(jù)庫模式實(shí)現(xiàn) 設(shè)計(jì)數(shù)據(jù)管理類的目的是為了使得對(duì)對(duì)象屬性值的管理獨(dú)立于各種不同的數(shù)據(jù)管理模式 46 1 數(shù)據(jù)格式設(shè)計(jì)1 文件數(shù)據(jù)格式當(dāng)采用文件存貯管理方式時(shí) 數(shù)據(jù)格式的設(shè)計(jì)就是對(duì)文件記錄結(jié)構(gòu)進(jìn)行設(shè)計(jì) 2 關(guān)系數(shù)據(jù)庫格式當(dāng)采用關(guān)系數(shù)據(jù)庫管理方式時(shí) 數(shù)據(jù)格式的設(shè)計(jì)就是對(duì)關(guān)系表結(jié)構(gòu)進(jìn)行設(shè)計(jì) 47 2 操作設(shè)計(jì)數(shù)據(jù)管理類的操作包括增添數(shù)據(jù)記錄 刪除數(shù)據(jù)記錄 檢索數(shù)據(jù)記錄和更新數(shù)據(jù)記錄等幾種形式 問題空間類可通過這些操作發(fā)送消息給相應(yīng)的數(shù)據(jù)管理類實(shí)現(xiàn)對(duì)數(shù)據(jù)的存貯 刪除 檢索和更新 數(shù)據(jù)管理類設(shè)計(jì)模板如下圖所示 圖示 數(shù)據(jù)管理類設(shè)計(jì)模板 48 為大學(xué)教務(wù)管理問題中的SelectCourse 選課單 類設(shè)計(jì)的一個(gè)數(shù)據(jù)管理類 在SelectCourse類中需要保存的是StudentID CourseID以及分解為兩個(gè)原子變量Year和Semester 學(xué)期 的SelectForCourse等描述性變量 該類通過Write 登記 等操作向相應(yīng)的數(shù)據(jù)管理類SelectCourseManager發(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è)計(jì)和編碼調(diào)試相似 面向?qū)ο髮?shí)現(xiàn)技術(shù)是先以類為單位進(jìn)行操作設(shè)計(jì) 編碼調(diào)試 然后實(shí)現(xiàn)類與類之間的關(guān)聯(lián)定義 并進(jìn)行系統(tǒng)測(cè)試 最后交予用戶使用并根據(jù)使用情況進(jìn)行維護(hù) 在每一個(gè)階段都必須按照有關(guān)規(guī)范編寫相應(yīng)的說明書或報(bào)告 因此 本章主要討論面向?qū)ο髮?shí)現(xiàn)技術(shù)的一些特點(diǎn)和不同于結(jié)構(gòu)化實(shí)現(xiàn)技術(shù) 51 1 實(shí)現(xiàn)語言毫無疑問 面向?qū)ο笤O(shè)計(jì)的實(shí)現(xiàn)最自然的實(shí)現(xiàn)方式是利用面向?qū)ο笳Z言 目前最常用的面向?qū)ο笳Z言是C 其它比較著名的面向?qū)ο笳Z言則還有Smalltalk 面向?qū)ο驪ASCAL JAVA Objective C CommonLispObjectSystem CLOS 等等 52 2 基本實(shí)現(xiàn)手段為了實(shí)現(xiàn)面向?qū)ο蟮脑O(shè)計(jì) 所選用的編碼語言一般應(yīng)包括實(shí)現(xiàn)類定義 對(duì)象創(chuàng)建 結(jié)構(gòu)定義 實(shí)例關(guān)聯(lián)定義 操作調(diào)用和消息發(fā)送 內(nèi)存管理 封裝等基本功能的編碼手段 這里以目前最為流行的C 語言分別對(duì)這些基本功能的實(shí)現(xiàn)手段加以說明 53 1 類定義使用C 對(duì)大學(xué)教務(wù)管理問題中的類Student 學(xué)生 定義如例6 1所示 例12 1類的定義 typedefstruct intmonth intday intyear date Month 月 day 日 year 年enumsexdef M F M 男 F 女enumappdef R S R 注冊(cè) S 選課classStudent protected 導(dǎo)出類可以訪問的數(shù)據(jù)變量 54 charID 8 charName 24 sexdefSex dateBirthday dateEnrollmentDay charDepartment 24 charSpeciality 24 charPassword 6 apptdefApplication 導(dǎo)出類可以訪問的操作appdefGetApplication voidPutApplication voidNote char Msg 55 public 構(gòu)造函數(shù) 必須與類名稱相同Student char InitID 析構(gòu)函數(shù) 必須與類名稱相同 Student 所有類都可以訪問的操作char GetID char GetPassword booleanVerifyPassword voidChangePassword char NewPassword char OldPassword 56 在C 中 數(shù)據(jù)變量和操作都被說明為成員 數(shù)據(jù)變量和操作的名稱不能相同 類的成員必須被說明為公有的 public 保護(hù)的 protectd 或私有的 private 中的一種 其中私有的為缺省值 公有成員可以被任何類的操作訪問 保護(hù)成員只允許類自身及其導(dǎo)出類的操作訪問 私有成員只允許類自身的操作訪問 57 在上述例子中 類Student的所有數(shù)據(jù)變量和幾個(gè)操作被定義為保護(hù)成員 因?yàn)槠鋵?dǎo)出類Undergraduate 本科生 和Graduate 研究生 將要訪問這些成員 類中操作的定義類似于一個(gè)過程或函數(shù)的定義 只是需要把類名作為操作名的前綴 例11 2給出了用C 編碼設(shè)計(jì)的類Student的操作ChangePassword 58 例11 2類操作的定義 voidStudent Changepassword char NewPassword char OldPassword if OldPassword Password Password NewPassword 59 Student Student char InitID ID InitID 與類名稱相同的兩個(gè)操作Student和 Student分別稱為構(gòu)造函數(shù)和析構(gòu)函數(shù) 它們分別用于對(duì)象創(chuàng)建和對(duì)象消除操作 例如類Student的構(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ù)的 其名稱是在類名稱前面加一個(gè)波浪號(hào) Student Student 61 12 2 2對(duì)象創(chuàng)建C 有兩種對(duì)象創(chuàng)建方式 靜態(tài)內(nèi)存分配方式和動(dòng)態(tài)內(nèi)存分配方式 每當(dāng)創(chuàng)建一個(gè)新對(duì)象 就執(zhí)行一次構(gòu)造函數(shù) 例12 5用靜態(tài)內(nèi)存分配方式創(chuàng)建了類Student的學(xué)號(hào)為98109002的對(duì)象studentobj 對(duì)象創(chuàng)建的靜態(tài)內(nèi)存分配方式Studentstudentobj 98109002 62 如果該語句是出現(xiàn)在一個(gè)操作或函數(shù)中 則說明studentobj被定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 思維導(dǎo)圖在法學(xué)概論考試的試題及答案
- 公司風(fēng)險(xiǎn)管理實(shí)務(wù)試題及答案
- VB考試文化背景知識(shí)與試題答案
- 2025年科技更新對(duì)企業(yè)戰(zhàn)略的影響試題及答案
- 公司創(chuàng)新戰(zhàn)略與風(fēng)險(xiǎn)應(yīng)對(duì)效果評(píng)估試題及答案
- 數(shù)據(jù)科學(xué)方法論考試試題及答案
- 關(guān)注軟件設(shè)計(jì)師考試動(dòng)態(tài)的試題及答案
- 管理員考試備考經(jīng)驗(yàn)分享試題及答案
- 風(fēng)險(xiǎn)計(jì)劃與公司戰(zhàn)略發(fā)展的整合試題及答案
- 2025年電子商務(wù)技術(shù)趨勢(shì)試題及答案
- 人力資源管理視角下崗位勝任力素質(zhì)模型的構(gòu)建與優(yōu)化
- 經(jīng)濟(jì)學(xué)中的時(shí)間價(jià)值試題及答案解讀
- 2024年湖北省竹山縣事業(yè)單位公開招聘名筆試題帶答案
- 員工持股協(xié)議書合同
- 酒館入股合同協(xié)議書
- 2025年人保財(cái)險(xiǎn)陜西省分公司招聘(57人)筆試參考題庫附帶答案詳解
- 民法典宣傳進(jìn)企業(yè)課件
- 基于核心素養(yǎng)下的高中數(shù)學(xué)情境教學(xué)研究
- 供熱企業(yè)安全管理制度
- 《阿里巴巴招聘案例》課件
- 應(yīng)聘索道面試題及答案
評(píng)論
0/150
提交評(píng)論