




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1頁(yè),共50頁(yè),2023年,2月20日,星期四面向?qū)ο笤O(shè)計(jì)可分為系統(tǒng)設(shè)計(jì)和類(lèi)(對(duì)象)設(shè)計(jì)。系統(tǒng)設(shè)計(jì)是高層設(shè)計(jì),主要確定實(shí)現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu)。類(lèi)-&-對(duì)象設(shè)計(jì)是低層設(shè)計(jì),主要確定解空間中的類(lèi)、關(guān)聯(lián)、接口形式及實(shí)現(xiàn)服務(wù)的算法;高層設(shè)計(jì)主要確定系統(tǒng)的結(jié)構(gòu)、用戶界面,即用來(lái)構(gòu)造系統(tǒng)的總的模型,并把任務(wù)分配給系統(tǒng)的各個(gè)子系統(tǒng)。第2頁(yè),共50頁(yè),2023年,2月20日,星期四1.面向?qū)ο笤O(shè)計(jì)的設(shè)計(jì)準(zhǔn)則
(1)模塊化模塊化是軟件設(shè)計(jì)的重要準(zhǔn)則。在面向?qū)ο箝_(kāi)發(fā)方法中,將對(duì)象定義為模塊。對(duì)象把數(shù)據(jù)結(jié)構(gòu)和作用在數(shù)據(jù)上的操作(方法)封裝起來(lái)構(gòu)成模塊。對(duì)象是組成系統(tǒng)的基本模塊。(2)抽象
類(lèi)是一種抽象數(shù)據(jù)類(lèi)型,在該數(shù)據(jù)類(lèi)型之上,可以創(chuàng)建對(duì)象(類(lèi)的成員)。類(lèi)包含相似對(duì)象的共同屬性和服務(wù),它對(duì)外定義了公共接口,構(gòu)成了類(lèi)的規(guī)格說(shuō)明(即協(xié)議),供外界合法訪問(wèn)。(3)信息隱藏
在面向?qū)ο蠓椒ㄖ?,?duì)象是屬性和服務(wù)的封裝體,這就實(shí)現(xiàn)了信息隱藏。類(lèi)結(jié)構(gòu)分離了接口與實(shí)現(xiàn),類(lèi)的屬性的表示方法和操作的實(shí)現(xiàn)算法,對(duì)于類(lèi)的用戶來(lái)說(shuō),都應(yīng)該是隱藏的,用戶只能通過(guò)公共接口訪問(wèn)類(lèi)中的屬性。第3頁(yè),共50頁(yè),2023年,2月20日,星期四(4)弱耦合所謂耦合,是指一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連的依賴(lài)關(guān)系。依賴(lài)關(guān)系越多耦合度越強(qiáng),依賴(lài)關(guān)系越少耦合度越弱。在面向?qū)ο蠓椒ㄖ?,?duì)象是最基本的模塊,不同對(duì)象之間相互關(guān)聯(lián)的依賴(lài)關(guān)系表示了耦合度。衡量設(shè)計(jì)優(yōu)良的一個(gè)重要標(biāo)準(zhǔn)就是弱耦合,弱耦合的設(shè)計(jì)中某個(gè)對(duì)象的改變不會(huì)或很少影響到其他對(duì)象。不同對(duì)象之間耦合是不可避免的。兩個(gè)對(duì)象必須相互聯(lián)系相互依賴(lài)時(shí),應(yīng)該通過(guò)類(lèi)的協(xié)議(即公共接口)實(shí)現(xiàn)兩個(gè)對(duì)象相互依賴(lài)(耦合),而不是通過(guò)類(lèi)的具體實(shí)現(xiàn)細(xì)節(jié)來(lái)描述。(5)強(qiáng)內(nèi)聚所謂內(nèi)聚,是一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。結(jié)合得越緊密內(nèi)聚越強(qiáng),結(jié)合得越不緊密內(nèi)聚越弱。強(qiáng)內(nèi)聚也是衡量設(shè)計(jì)優(yōu)良的一個(gè)重要標(biāo)準(zhǔn)。在面向?qū)ο笤O(shè)計(jì)中,內(nèi)聚可分為下述三類(lèi):第4頁(yè),共50頁(yè),2023年,2月20日,星期四1)服務(wù)(操作)內(nèi)聚。一個(gè)服務(wù)應(yīng)該是單一的,即只完成一個(gè)任務(wù)。2)類(lèi)內(nèi)聚。類(lèi)內(nèi)聚要求類(lèi)的屬性和服務(wù)應(yīng)該是高內(nèi)聚的,而且它們應(yīng)該是系統(tǒng)任務(wù)所必需的。一個(gè)類(lèi)應(yīng)該只有一個(gè)功能,如果某個(gè)類(lèi)有多個(gè)功能,通常應(yīng)該把它分解成多個(gè)專(zhuān)用的類(lèi)。3)一般-特殊內(nèi)聚。一般-特殊內(nèi)聚表示:一般-特殊結(jié)構(gòu)符合領(lǐng)域知識(shí)的表示形式,也就是說(shuō),特殊類(lèi)應(yīng)該盡量地繼承一般類(lèi)的屬性和服務(wù)。這樣的一般-特殊結(jié)構(gòu)是高內(nèi)聚的。(6)可重用在面向?qū)ο笤O(shè)計(jì)中,一個(gè)類(lèi)的設(shè)計(jì)應(yīng)該具有通用性,為開(kāi)發(fā)相似的系統(tǒng)提供軟件重用可能。因此,在軟件開(kāi)發(fā)過(guò)程中,為了實(shí)現(xiàn)重用,既要盡量重用已有的類(lèi),又要?jiǎng)?chuàng)建可重用的新類(lèi)。第5頁(yè),共50頁(yè),2023年,2月20日,星期四2.設(shè)計(jì)策略
在使用面向?qū)ο蠓椒▽W(xué)開(kāi)發(fā)軟件的實(shí)踐中,得出了下面一些基于經(jīng)驗(yàn)的啟發(fā)規(guī)則,這些規(guī)則往往能幫助軟件開(kāi)發(fā)人員設(shè)計(jì)出好的方案來(lái),以保證軟件的質(zhì)量。(1)設(shè)計(jì)結(jié)果應(yīng)該清晰易懂(2)一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)(3)設(shè)計(jì)簡(jiǎn)單的類(lèi)(4)設(shè)計(jì)簡(jiǎn)單的協(xié)議(5)設(shè)計(jì)簡(jiǎn)單的服務(wù)(6)減少設(shè)計(jì)變動(dòng)第6頁(yè),共50頁(yè),2023年,2月20日,星期四3.系統(tǒng)分解與組織
面向?qū)ο笤O(shè)計(jì)同過(guò)程設(shè)計(jì)一樣,自頂向下進(jìn)行功能分解。在設(shè)計(jì)比較復(fù)雜的應(yīng)用系統(tǒng)時(shí),將系統(tǒng)分解成若干個(gè)比較小的部分,再分別設(shè)計(jì)每個(gè)部分。這樣既簡(jiǎn)化了應(yīng)用系統(tǒng),又降低了設(shè)計(jì)的難度,并有利于實(shí)現(xiàn)和維護(hù)。系統(tǒng)是根據(jù)功能來(lái)分解的,我們將系統(tǒng)分解的各個(gè)部分(即系統(tǒng)的主要組成部分)稱(chēng)為子系統(tǒng)。
子系統(tǒng)間交互的形式和交互的信息由接口確定,因此,接口應(yīng)該簡(jiǎn)單、明確。第7頁(yè),共50頁(yè),2023年,2月20日,星期四(1)面向?qū)ο笤O(shè)計(jì)的五個(gè)層次、四個(gè)部分
面向?qū)ο笤O(shè)計(jì)模型同樣由主題、類(lèi)-&-對(duì)象、結(jié)構(gòu)、屬性和服務(wù)等五個(gè)層次組成,并且又?jǐn)U充了問(wèn)題域(PDC)、人機(jī)交互(HIC)、任務(wù)管理(TMC)和數(shù)據(jù)管理(DMC)四個(gè)部分。典型的面向?qū)ο笤O(shè)計(jì)模型如圖3.3.23示。第8頁(yè),共50頁(yè),2023年,2月20日,星期四圖3.3.23典型的面向?qū)ο笤O(shè)計(jì)模型第9頁(yè),共50頁(yè),2023年,2月20日,星期四(2)子系統(tǒng)間的交互方式在應(yīng)用系統(tǒng)中,子系統(tǒng)之間的關(guān)系可分為客戶/服務(wù)器關(guān)系和同等伙伴關(guān)系兩種。這兩種關(guān)系對(duì)應(yīng)兩種交互的方式,即客戶/服務(wù)器交互方式和同等伙伴交互方式。通常,系統(tǒng)使用客戶/服務(wù)器關(guān)系,因?yàn)閱蜗蚪换ジ菀桌斫?,也更容易設(shè)計(jì)和修改,而雙向交互相對(duì)困難些。(3)系統(tǒng)組織
將子系統(tǒng)組織成完整的系統(tǒng)有兩種方式,即水平層次組織和垂直塊組織。1)層次組織
層次組織是將子系統(tǒng)按層組織成為一個(gè)層次軟件系統(tǒng),每層是一個(gè)子系統(tǒng)。上層建立在下層的基礎(chǔ)上,下層為上層提供必要的服務(wù)。低層子系統(tǒng)提供服務(wù),相當(dāng)于服務(wù)器,上層子系統(tǒng)使用下層提供的服務(wù),相當(dāng)于客戶。
第10頁(yè),共50頁(yè),2023年,2月20日,星期四2)塊組織
塊組織將系統(tǒng)垂直地分解成若干個(gè)相對(duì)獨(dú)立的、弱耦合的子系統(tǒng),一個(gè)子系統(tǒng)相當(dāng)于一塊,每塊提供一種類(lèi)型的服務(wù)。例如,圖3.3.24示一個(gè)典型應(yīng)用系統(tǒng)的組織結(jié)構(gòu)。(4)設(shè)計(jì)系統(tǒng)的拓?fù)浣Y(jié)構(gòu):構(gòu)成完整系統(tǒng)的拓?fù)浣Y(jié)構(gòu)有:管道型、樹(shù)型、星型等。第11頁(yè),共50頁(yè),2023年,2月20日,星期四[補(bǔ)充]:
概括地說(shuō),面向?qū)ο筌浖_(kāi)發(fā)方法采用面向?qū)ο笤O(shè)計(jì)(OOD)技術(shù)進(jìn)行問(wèn)題解決方案的設(shè)計(jì)工作,它將問(wèn)題的解決方案表述為:類(lèi)+關(guān)聯(lián)的形式,其中,類(lèi)包括問(wèn)題空間類(lèi)、用戶界面類(lèi)、任務(wù)管理類(lèi)和數(shù)據(jù)管理類(lèi),是從設(shè)計(jì)的角度出發(fā)對(duì)問(wèn)題解決方案中的對(duì)象的抽象和描述,關(guān)聯(lián)則用于描述這些類(lèi)和類(lèi)之間的關(guān)系。
因此,面向?qū)ο笤O(shè)計(jì)工作主要包括問(wèn)題空間類(lèi)、用戶界面類(lèi)、任務(wù)管理類(lèi)和數(shù)據(jù)管理類(lèi)的設(shè)計(jì),具體工作內(nèi)容和步驟如圖3.3.25所示。第12頁(yè),共50頁(yè),2023年,2月20日,星期四圖3.3.25面向?qū)ο笤O(shè)計(jì)工作內(nèi)容和步驟第13頁(yè),共50頁(yè),2023年,2月20日,星期四一、問(wèn)題空間類(lèi)是指那些直接從面向?qū)ο蠓治瞿P驮O(shè)計(jì)得到的類(lèi),它是使軟件系統(tǒng)能夠?qū)崿F(xiàn)對(duì)問(wèn)題的求解的最基本的類(lèi),也是面向?qū)ο筌浖到y(tǒng)的核心類(lèi)。利用面向?qū)ο蠓治黾夹g(shù)對(duì)問(wèn)題進(jìn)行了分析描述之后,就可以直接將其結(jié)果用于問(wèn)題空間類(lèi)的設(shè)計(jì),即直接將分析所得到的對(duì)象、對(duì)象與對(duì)象之間的關(guān)聯(lián)確定為類(lèi)以及類(lèi)與類(lèi)之間的關(guān)聯(lián),這些直接從分析結(jié)果得到的類(lèi)就是問(wèn)題空間類(lèi)。以一個(gè)字處理系統(tǒng)為例,如下圖所示:
第14頁(yè),共50頁(yè),2023年,2月20日,星期四圖示:結(jié)構(gòu)化方法設(shè)計(jì)結(jié)果第15頁(yè),共50頁(yè),2023年,2月20日,星期四又例:下圖示以及表1~8所示的是大學(xué)教務(wù)管理問(wèn)題中的問(wèn)題空間類(lèi)。圖示:大學(xué)教務(wù)管理問(wèn)題中的問(wèn)題空間類(lèi)第16頁(yè),共50頁(yè),2023年,2月20日,星期四表5.1Class:Student(學(xué)生)數(shù)據(jù)變量序號(hào)名稱(chēng) 定義 類(lèi)型 中文名稱(chēng) 備注1 IDchar(8)描述型學(xué)號(hào)
2 Namechar(24) 描述型姓名
3 Sex[男,女] 描述型性別 枚舉類(lèi)型4 Birthdaydate 描述型出生日期
5 EnrollmentDaydate 描述型入學(xué)日期
6 Departmentchar(24) 描述型系別
7 Specialitychar(24) 描述型專(zhuān)業(yè)
8 Passwordchar(6) 描述型密碼
9 Application[注冊(cè),選課]描述型申請(qǐng) 枚舉類(lèi)型第17頁(yè),共50頁(yè),2023年,2月20日,星期四操作序號(hào) 名稱(chēng) 接口參數(shù)返回值 中文名稱(chēng) 備注1 GetID() ID 讀入學(xué)號(hào)
GetPassword()Password 讀入密碼
2 VerifyPassword()True/Fasle 檢驗(yàn)
3 GetApplication()Application 詢(xún)問(wèn)
4 PutApplication()NULL 回答
5 Note("message")NULL 通知
6ChangePassword(NewPassword,OldPassword)NULL修改
第18頁(yè),共50頁(yè),2023年,2月20日,星期四表5.2Class:Graduate(研究生)表5.3Class:UnderGraduate(本科生)表5.4Class:RegisterRec(注冊(cè)記錄)表5.5Class:Course(課程)表5.6Class:GraduateCourse(研究生課程)表5.7Class:UnderGraduate(本科生課程)表5.8Class:SelectCourse(選課單)第19頁(yè),共50頁(yè),2023年,2月20日,星期四二、用戶界面類(lèi)是指那些為實(shí)現(xiàn)人機(jī)交互接口而設(shè)計(jì)的類(lèi),它是使軟件系統(tǒng)能夠接收用戶的命令和能夠?yàn)橛脩籼峁┬畔⑺枰念?lèi)。用戶界面類(lèi)是為了使系統(tǒng)能夠與用戶進(jìn)行交互而必須增添設(shè)計(jì)的類(lèi)。在實(shí)際中,一個(gè)軟件系統(tǒng)常常會(huì)因?yàn)槠溆脩艚缑媸沟糜脩舨粷M意而遭到否定或棄之不用。因此用戶界面類(lèi)的設(shè)計(jì)是一項(xiàng)既影響軟件系統(tǒng)前途,又需要做耐心細(xì)致調(diào)查分析的重要工作。盡管在分析過(guò)程中已經(jīng)對(duì)用戶在用戶界面方面進(jìn)行了分析,但是在設(shè)計(jì)過(guò)程中仍然必須繼續(xù)做這項(xiàng)分析工作,必須具體設(shè)計(jì)確定交互作用的時(shí)間、交互方式和交互技術(shù)等。用戶界面類(lèi)的設(shè)計(jì)通??梢圆捎孟到y(tǒng)原型(模型)法進(jìn)行。
第20頁(yè),共50頁(yè),2023年,2月20日,星期四1、分析考察用戶2、設(shè)計(jì)命令層次1)研究用戶交互的意義及準(zhǔn)則如果已建立的交互系統(tǒng)中已有命令層次,則先研究這個(gè)已有的交互界面的意義和準(zhǔn)則。2)建立初始命令層可以以多種方式提供給用戶,如窗口、按鈕、下拉菜單、菜單條、可動(dòng)的圖標(biāo),等等。3)細(xì)化命令層為了細(xì)化命令層,應(yīng)考慮如下幾個(gè)問(wèn)題:(1)排序。在開(kāi)發(fā)命令層時(shí),必須仔細(xì)選擇不同的操作名稱(chēng),并把這些名稱(chēng)按一定要求排序,將最有用的放在前面,或者按習(xí)慣的工作步驟排序。(2)組裝。在操作中尋找組裝結(jié)構(gòu)模式,這有助于在層次中組織和分離操作。第21頁(yè),共50頁(yè),2023年,2月20日,星期四(3)寬度和廣度。由于人的短暫記憶局限,命令層次不宜太廣太深。以3最為合適。(4)極小化。盡量少用組合鍵,極小化用戶的擊鍵次數(shù)。3、完成設(shè)計(jì)
當(dāng)前由于軟件開(kāi)發(fā)工具,特別是可視化開(kāi)發(fā)工具的日益豐富,完成用戶界面的具體設(shè)計(jì)已經(jīng)是一件十分容易的事情了,但是在具體設(shè)計(jì)時(shí)不能忽略以下原則:1)一致性使用一致的術(shù)語(yǔ),一致的步驟和一致的動(dòng)作行為。2)減少步驟極小化擊鍵次數(shù)、使用鼠標(biāo)的次數(shù)和下拉菜單的次數(shù),極小化響應(yīng)時(shí)間。3)盡量顯示提示信息盡量為用戶提供有意義的、及時(shí)反饋信息。4)設(shè)置取消操作用戶難免出錯(cuò),應(yīng)盡量能使用戶取消其錯(cuò)誤動(dòng)作。第22頁(yè),共50頁(yè),2023年,2月20日,星期四5)盡量減少要用戶記憶的內(nèi)容不應(yīng)該要求用戶記下某窗口的信息而用于另一窗口中。6)易學(xué)易用為用戶提供聯(lián)機(jī)學(xué)習(xí)手冊(cè)。7)屏幕生動(dòng)活潑屏幕畫(huà)面看起來(lái)能夠吸引用戶,喚起用戶的注意和興趣。例如,對(duì)于大學(xué)教務(wù)管理問(wèn)題,可以先根據(jù)對(duì)用戶的分析設(shè)計(jì)如下頁(yè)圖所示的用戶進(jìn)入系統(tǒng)的屏幕。第23頁(yè),共50頁(yè),2023年,2月20日,星期四圖示:用戶進(jìn)入系統(tǒng)屏幕界面
然后,根據(jù)針對(duì)該用戶界面和大多數(shù)面向?qū)ο筌浖_(kāi)發(fā)環(huán)境所提供的可重用類(lèi)設(shè)計(jì)相應(yīng)的用戶界面類(lèi),設(shè)計(jì)結(jié)果如下頁(yè)圖所示。第24頁(yè),共50頁(yè),2023年,2月20日,星期四圖示:大學(xué)教務(wù)管理問(wèn)題的部分用戶界面類(lèi)和問(wèn)題空間類(lèi)第25頁(yè),共50頁(yè),2023年,2月20日,星期四
其中,Window、EditField、StaticField和Button等類(lèi)一般可從開(kāi)發(fā)環(huán)境提供的類(lèi)庫(kù)中通過(guò)繼承重用獲得,需要進(jìn)一步做的設(shè)計(jì)工作主要是設(shè)計(jì)有關(guān)與問(wèn)題空間類(lèi)和任務(wù)管理類(lèi)進(jìn)行通訊的操作。例如需要為OKButton類(lèi)設(shè)計(jì)一個(gè)向問(wèn)題空間類(lèi)中的Student類(lèi)發(fā)送檢驗(yàn)消息的操作。第26頁(yè),共50頁(yè),2023年,2月20日,星期四三、任務(wù)管理類(lèi)是指那些為實(shí)現(xiàn)對(duì)多操作并發(fā)執(zhí)行的管理而設(shè)計(jì)的類(lèi),它是使軟件系統(tǒng)能夠同時(shí)處理多個(gè)并發(fā)行為所需要的類(lèi)。所謂任務(wù),就是一個(gè)處理過(guò)程,它可能包含不同類(lèi)的多個(gè)操作的執(zhí)行。任務(wù)管理類(lèi)的用途之一就是用于管理系統(tǒng)的這種任務(wù),它的另一個(gè)主要用途是在操作系統(tǒng)級(jí)(運(yùn)行平臺(tái))上負(fù)責(zé)處理并發(fā)、中斷、調(diào)度等問(wèn)題,從而使得所設(shè)計(jì)的系統(tǒng)能夠相對(duì)獨(dú)立于運(yùn)行平臺(tái),當(dāng)需要移植到其它運(yùn)行平臺(tái)上,只需要替換有關(guān)任務(wù)管理類(lèi)就可以了。因此,為了設(shè)計(jì)任務(wù)管理類(lèi),首先必須從所設(shè)計(jì)的系統(tǒng)有關(guān)類(lèi)中找出需要并發(fā)進(jìn)行的操作和那些與特定運(yùn)行平臺(tái)有關(guān)的操作,然后再對(duì)它們進(jìn)行分析設(shè)計(jì)1、確定任務(wù)類(lèi)型1)確定事件驅(qū)動(dòng)型任務(wù)第27頁(yè),共50頁(yè),2023年,2月20日,星期四
某些任務(wù)是由事件驅(qū)動(dòng)而執(zhí)行的。這種任務(wù)可能負(fù)責(zé)與設(shè)備的通訊,與一個(gè)窗口或多個(gè)窗口、其它任務(wù)、子系統(tǒng)、其它處理器或其它系統(tǒng)的通訊。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ù)及臨界任務(wù)優(yōu)先任務(wù)分高優(yōu)先級(jí)和低優(yōu)先級(jí)二種,用來(lái)適應(yīng)處理的需要。臨界任務(wù)是有關(guān)系統(tǒng)成功或失敗的臨界處理,它尤其涉及嚴(yán)格的可靠性約束。4)確定協(xié)調(diào)任務(wù)當(dāng)存在三個(gè)以上的任務(wù)時(shí),就應(yīng)該考慮增加一個(gè)任務(wù),用它來(lái)協(xié)調(diào)任務(wù)。協(xié)調(diào)任務(wù)的引入當(dāng)然會(huì)增加系統(tǒng)的開(kāi)銷(xiāo),但是引入?yún)f(xié)調(diào)任務(wù)有利于封裝任務(wù)之間的協(xié)調(diào)控制。使用狀態(tài)轉(zhuǎn)換矩陣可以描述該任務(wù)的行為。第28頁(yè),共50頁(yè),2023年,2月20日,星期四2、分析任務(wù)設(shè)計(jì)多任務(wù)系統(tǒng)的主要問(wèn)題是設(shè)計(jì)人員常常定義太多的任務(wù)。原因是為了自己處理時(shí)的方便,但是這樣做就增大了整個(gè)設(shè)計(jì)的技術(shù)復(fù)雜度,并且不容易理解。因此,在進(jìn)行任務(wù)管理類(lèi)的具體設(shè)計(jì)前,必須仔細(xì)分析和選擇各個(gè)任務(wù),盡量使得任務(wù)的數(shù)目降低到最少。3、完成設(shè)計(jì)設(shè)計(jì)任務(wù)包括定義任務(wù)的內(nèi)容以及它怎樣協(xié)調(diào)和通訊。1)任務(wù)的內(nèi)容2)怎樣協(xié)調(diào)3)怎樣通訊第29頁(yè),共50頁(yè),2023年,2月20日,星期四任務(wù)管理類(lèi)設(shè)計(jì)模板如右圖所示:第30頁(yè),共50頁(yè),2023年,2月20日,星期四問(wèn)題空間類(lèi)、用戶界面類(lèi)和任務(wù)管理類(lèi)之間的基本關(guān)系如下圖所示,任務(wù)管理類(lèi)對(duì)象從運(yùn)行平臺(tái)(操作系統(tǒng))接收消息并通過(guò)發(fā)送消息創(chuàng)建有關(guān)用戶界面類(lèi)對(duì)象,用戶界面類(lèi)對(duì)象根據(jù)從用戶處獲得的信息創(chuàng)建有關(guān)問(wèn)題空間類(lèi)對(duì)象并發(fā)送有關(guān)消息給它。如果沒(méi)有為系統(tǒng)設(shè)計(jì)任務(wù)管理類(lèi),則上述任務(wù)管理類(lèi)負(fù)責(zé)的有關(guān)工作由用戶界面類(lèi)負(fù)責(zé)完成。
圖示:任務(wù)管理類(lèi)、用戶界面類(lèi)和問(wèn)題空間類(lèi)及其消息傳送關(guān)系
第31頁(yè),共50頁(yè),2023年,2月20日,星期四四、數(shù)據(jù)管理類(lèi)是指那些為實(shí)現(xiàn)對(duì)數(shù)據(jù)進(jìn)行管理而設(shè)計(jì)的類(lèi),它是使軟件系統(tǒng)能夠?qū)?duì)象的屬性值進(jìn)行存貯和檢索所需要的類(lèi)。數(shù)據(jù)管理類(lèi)用于存貯和檢索對(duì)象的屬性值,可以采用文件模式或關(guān)系數(shù)據(jù)庫(kù)模式實(shí)現(xiàn)。設(shè)計(jì)數(shù)據(jù)管理類(lèi)的目的是為了使得對(duì)對(duì)象屬性值的管理獨(dú)立于各種不同的數(shù)據(jù)管理模式。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ù)庫(kù)格式當(dāng)采用關(guān)系數(shù)據(jù)庫(kù)管理方式時(shí),數(shù)據(jù)格式的設(shè)計(jì)就是對(duì)關(guān)系表結(jié)構(gòu)進(jìn)行設(shè)計(jì)。第32頁(yè),共50頁(yè),2023年,2月20日,星期四2、操作設(shè)計(jì)
數(shù)據(jù)管理類(lèi)的操作包括增添數(shù)據(jù)記錄、刪除數(shù)據(jù)記錄、檢索數(shù)據(jù)記錄和更新數(shù)據(jù)記錄等幾種形式,問(wèn)題空間類(lèi)可通過(guò)這些操作發(fā)送消息給相應(yīng)的數(shù)據(jù)管理類(lèi)實(shí)現(xiàn)對(duì)數(shù)據(jù)的存貯、刪除、檢索和更新。數(shù)據(jù)管理類(lèi)設(shè)計(jì)模板如下圖所示。圖示:數(shù)據(jù)管理類(lèi)設(shè)計(jì)模板第33頁(yè),共50頁(yè),2023年,2月20日,星期四下頁(yè)圖示是為大學(xué)教務(wù)管理問(wèn)題中的SelectCourse(選課單)類(lèi)設(shè)計(jì)的一個(gè)數(shù)據(jù)管理類(lèi)。在SelectCourse類(lèi)中需要保存的是StudentID、CourseID以及分解為兩個(gè)原子變量Year和Semester的SelectForCourse等描述性變量,該類(lèi)通過(guò)Write(登記)等操作向相應(yīng)的數(shù)據(jù)管理類(lèi)SelectCourseManager發(fā)送Add(增添)、Update(更新)等消息。第34頁(yè),共50頁(yè),2023年,2月20日,星期四圖示:大學(xué)教務(wù)管理問(wèn)題中相應(yīng)于SelectCourse類(lèi)的數(shù)據(jù)管理第35頁(yè),共50頁(yè),2023年,2月20日,星期四面向?qū)ο髮?shí)現(xiàn)技術(shù)
與結(jié)構(gòu)化實(shí)現(xiàn)技術(shù)中先以模塊為單位進(jìn)行過(guò)程設(shè)計(jì)和編碼調(diào)試相似,面向?qū)ο髮?shí)現(xiàn)技術(shù)是先以類(lèi)為單位進(jìn)行操作設(shè)計(jì)、編碼調(diào)試;然后實(shí)現(xiàn)類(lèi)與類(lèi)之間的關(guān)聯(lián)定義,并進(jìn)行系統(tǒng)測(cè)試;最后交予用戶使用并根據(jù)使用情況進(jìn)行維護(hù)。在每一個(gè)階段都必須按照有關(guān)規(guī)范編寫(xiě)相應(yīng)的說(shuō)明書(shū)或報(bào)告。因此,本章主要討論面向?qū)ο髮?shí)現(xiàn)技術(shù)的一些特點(diǎn)和不同于結(jié)構(gòu)化實(shí)現(xiàn)技術(shù)。1、實(shí)現(xiàn)語(yǔ)言毫無(wú)疑問(wèn),面向?qū)ο笤O(shè)計(jì)的實(shí)現(xiàn)最自然的實(shí)現(xiàn)方式是利用面向?qū)ο笳Z(yǔ)言。目前最常用的面向?qū)ο笳Z(yǔ)言是C++,其它比較著名的面向?qū)ο笳Z(yǔ)言則還有Smalltalk、面向?qū)ο驪ASCAL,JAVA、Objective-C,CommonLispObjectSystem(CLOS),等等。第36頁(yè),共50頁(yè),2023年,2月20日,星期四2、基本實(shí)現(xiàn)手段為了實(shí)現(xiàn)面向?qū)ο蟮脑O(shè)計(jì),所選用的編碼語(yǔ)言一般應(yīng)包括實(shí)現(xiàn)類(lèi)定義、對(duì)象創(chuàng)建、結(jié)構(gòu)定義、實(shí)例關(guān)聯(lián)定義、操作調(diào)用和消息發(fā)送、內(nèi)存管理、封裝等基本功能的編碼手段。這里以目前最為流行的C++語(yǔ)言分別對(duì)這些基本功能的實(shí)現(xiàn)手段加以說(shuō)明。1類(lèi)定義使用C++對(duì)大學(xué)教務(wù)管理問(wèn)題中的類(lèi)Student(學(xué)生)定義如例6.1所示:例6.1類(lèi)的定義typedefstruct{intmonth;intday;intyear;}date;//Month-月;day-日;year-年enumsexdef{M,F};//M-男;F-女enumappdef{R,S};//R-注冊(cè);S-選課classStudent{protected://導(dǎo)出類(lèi)可以訪問(wèn)的數(shù)據(jù)變量第37頁(yè),共50頁(yè),2023年,2月20日,星期四charID[8];charName[24];sexdefSex;dateBirthday;dateEnrollmentDay;charDepartment[24];charSpeciality[24];charPassword[6];apptdefApplication;//導(dǎo)出類(lèi)可以訪問(wèn)的操作appdefGetApplication();voidPutApplication();voidNote(char*Msg);public://構(gòu)造函數(shù),必須與類(lèi)名稱(chēng)相同Student(char*InitID);//析構(gòu)函數(shù),必須與類(lèi)名稱(chēng)相同~Student();第38頁(yè),共50頁(yè),2023年,2月20日,星期四//所有類(lèi)都可以訪問(wèn)的操作char*GetID();char*GetPassword();booleanVerifyPassword();voidChangePassword(char*NewPassword,char*OldPassword);};在C++中,數(shù)據(jù)變量和操作都被說(shuō)明為成員,數(shù)據(jù)變量和操作的名稱(chēng)不能相同。類(lèi)的成員必須被說(shuō)明為公有的(public)、保護(hù)的(protectd)或私有的(private)中的一種,其中私有的為缺省值。公有成員可以被任何類(lèi)的操作訪問(wèn);保護(hù)成員只允許類(lèi)自身及其導(dǎo)出類(lèi)的操作訪問(wèn);私有成員只允許類(lèi)自身的操作訪問(wèn)。在上述例子中,類(lèi)Student的所有數(shù)據(jù)變量和幾個(gè)操作被定義為保護(hù)成員,因?yàn)槠鋵?dǎo)出類(lèi)Undergraduate(本科生)和Graduate(研究生)將要訪問(wèn)這些成員。類(lèi)中操作的定義類(lèi)似于一個(gè)過(guò)程或函數(shù)的定義,只是需要把類(lèi)名作為操作名的前綴。例6.2給出了用C++編碼設(shè)計(jì)的類(lèi)Student的操作ChangePassword。第39頁(yè),共50頁(yè),2023年,2月20日,星期四例6.2類(lèi)操作的定義voidStudent::Changepassword(char*NewPassword,char*OldPassword);{if(OldPassword==Password){Password=NewPassword;}}與類(lèi)名稱(chēng)相同的兩個(gè)操作Student和~Student分別稱(chēng)為構(gòu)造函數(shù)和析構(gòu)函數(shù),它們分別用于對(duì)象創(chuàng)建和對(duì)象消除操作。例如類(lèi)Student的構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義分別如例6.3和6.4所示。例6.3類(lèi)構(gòu)造函數(shù)的定義Student::Student(char*InitID){ID=InitID;}第40頁(yè),共50頁(yè),2023年,2月20日,星期四例6.4類(lèi)析構(gòu)函數(shù)的定義Student::~Student(){//}析構(gòu)函數(shù)是不帶參數(shù)的,其名稱(chēng)是在類(lèi)名稱(chēng)前面加一個(gè)波浪號(hào)“~”。6.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ù)。例6.5用靜態(tài)內(nèi)存分配方式創(chuàng)建了類(lèi)Student的學(xué)號(hào)為98109002的對(duì)象studentobj。例6.5對(duì)象創(chuàng)建的靜態(tài)內(nèi)存分配方式Studentstudentobj("98109002");第41頁(yè),共50頁(yè),2023年,2月20日,星期四
如果該語(yǔ)句是出現(xiàn)在一個(gè)操作或函數(shù)中,則說(shuō)明studentobj被定義為局部變量,當(dāng)操作或函數(shù)執(zhí)行完畢退出時(shí),該對(duì)象將被自動(dòng)消除,所占用的內(nèi)存被釋放,釋放內(nèi)存時(shí)將執(zhí)行一次析構(gòu)函數(shù)。如果該語(yǔ)句是將studentobj定義為一個(gè)全局變量,則只有系統(tǒng)退出后對(duì)象studentobj才會(huì)被消除。采用動(dòng)態(tài)內(nèi)存分配方式創(chuàng)建對(duì)象時(shí)需要借用C++的new操作符進(jìn)行。new操作符為新對(duì)象分配內(nèi)存并且返回它的一個(gè)指針,指針存放在指針變量中。new操作符可以包括構(gòu)造函數(shù)中的參數(shù),如例6.6所示。例6.6對(duì)象創(chuàng)建的動(dòng)態(tài)內(nèi)存分配方式Student*studentobj=newStudent("98109002")動(dòng)態(tài)對(duì)象所占的內(nèi)存必須使用C++的delete操作符來(lái)釋放。delet
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年全自動(dòng)變焦照相機(jī)項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年變頻器柜體系統(tǒng)項(xiàng)目資金籌措計(jì)劃書(shū)
- 2025年河南省三門(mén)峽市單招職業(yè)適應(yīng)性測(cè)試題庫(kù)匯編
- 2025年湖北省荊門(mén)市單招職業(yè)傾向性測(cè)試題庫(kù)匯編
- 2025年黑龍江商業(yè)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)一套
- 兒童樂(lè)園裝修合同
- 2025年度安全培訓(xùn)與操作規(guī)范服務(wù)協(xié)議
- 2025年度員工勞動(dòng)合同終止及生活困難補(bǔ)助協(xié)議
- 2025陜西省安全員C證考試(專(zhuān)職安全員)題庫(kù)附答案
- 2025年度房屋贈(zèng)與及物業(yè)管理權(quán)轉(zhuǎn)移合同
- 中國(guó)-各省市地圖可編輯課件
- (兒科學(xué)課件)腎病綜合征
- 光纜線路工程段終版施工圖
- 2023年最新的郭氏宗祠的對(duì)聯(lián)大全
- 礦井年度災(zāi)害預(yù)防和處理計(jì)劃
- 畢業(yè)論文-基于Java Web的模擬駕??荚囅到y(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 駱駝祥子1一24章批注
- 新部編人教版四年級(jí)下冊(cè)道德與法治全冊(cè)教案(教學(xué)設(shè)計(jì))
- 物業(yè)服務(wù)企業(yè)市場(chǎng)拓展戰(zhàn)略規(guī)劃課件
- 進(jìn)制轉(zhuǎn)換教學(xué)設(shè)計(jì)
- 垂直度和跳動(dòng)形位公差間的關(guān)系及取代應(yīng)用下
評(píng)論
0/150
提交評(píng)論