出版時(shí)間:2009-6 出版社:中國(guó)廣播電視出版社 作者:徐品,李紹彬,藍(lán)善禎 編著 頁數(shù):261
內(nèi)容概要
“軟件設(shè)計(jì)”是學(xué)習(xí)如何設(shè)計(jì)一個(gè)軟件,是“軟件工程’’中的重要一環(huán)。但是要說清楚如何設(shè)計(jì)一個(gè)軟件卻不是一件很容易的事。在應(yīng)用軟件方面軟件的類型實(shí)在太多了.按開發(fā)規(guī)模分類,有個(gè)人、3人左右的小團(tuán)隊(duì)、5-10人的中等團(tuán)隊(duì)、企業(yè)式團(tuán)隊(duì)(幾十人)等;按網(wǎng)絡(luò)方式分類,有單機(jī)、C/S(客戶機(jī)/服務(wù)器)、B/S(瀏覽器/服務(wù)器)等類型;按項(xiàng)目來源分類,則有自創(chuàng)自用型、科研型、內(nèi)部使用型、商業(yè)型等;按適用范圍可分為獨(dú)家訂做、通用型、行業(yè)型,等等。由于各種類型軟件的要求不同,實(shí)現(xiàn)的目標(biāo)不同,對(duì)軟件開發(fā)的質(zhì)量不同,當(dāng)然,編寫方式也是不同的。軟件設(shè)計(jì)課程通常會(huì)告訴你編制軟件所要遵循的原則,軟件開發(fā)需要經(jīng)歷哪些工程。但不能期望學(xué)完了軟件設(shè)計(jì),什么軟件都能設(shè)計(jì)了。應(yīng)該說,通常軟件設(shè)計(jì)這個(gè)課程屬于方法論范疇,而不是如同電路設(shè)計(jì)、程序語言設(shè)計(jì)那樣讓你學(xué)會(huì)一項(xiàng)技能?! 『芏嘧x者期望通過軟件設(shè)計(jì)課程的學(xué)習(xí),就能學(xué)會(huì)如何去設(shè)計(jì)一個(gè)軟件,但事實(shí)上并不那么理想。現(xiàn)在,很多軟件設(shè)計(jì)的論著都致力于對(duì)軟件開發(fā)過程的總結(jié),力求在方法論上找出軟件設(shè)計(jì)的規(guī)律,用于指導(dǎo)學(xué)習(xí)者進(jìn)行軟件設(shè)計(jì)。這方面最重要的成果應(yīng)該是UML(統(tǒng)一建模語言)。這些抽象的法則和設(shè)計(jì)方法無疑是非常重要的,在本書中也有專門的介紹。但如果對(duì)一個(gè)沒有太多的軟件開發(fā)經(jīng)驗(yàn)的大學(xué)生或研究生,尤其是非計(jì)算機(jī)專業(yè)的學(xué)生來說,這些理論實(shí)在是太抽象了,以至于很多學(xué)完軟件設(shè)計(jì)的學(xué)生感覺沒有實(shí)質(zhì)性的收獲。這些書本上的軟件設(shè)計(jì)的知識(shí)也許要等到從事軟件開發(fā)兩三年以后才有體會(huì),如果那時(shí)還記得這些知識(shí)的話?! 〉牵髮W(xué)習(xí)者一定要等到積累了一定經(jīng)驗(yàn)以后再來學(xué)習(xí)軟件設(shè)計(jì)的方法是不現(xiàn)買的。根據(jù)作者多年的軟件開發(fā)經(jīng)驗(yàn),并通過幾年的教學(xué)實(shí)踐,我們認(rèn)為,對(duì)于沒有足夠編程經(jīng)驗(yàn)的讀者來說,軟件設(shè)計(jì)課程也是可以學(xué)習(xí)的;但在學(xué)習(xí)抽象的軟件設(shè)計(jì)方法之前還是要學(xué)一些基本的軟件設(shè)計(jì)技巧,讓學(xué)習(xí)者積累一定的經(jīng)驗(yàn),然后再去理解抽象的方法論?! ”緯闹饕獙?duì)象是學(xué)過C++語言但沒有太多開發(fā)經(jīng)驗(yàn)的學(xué)生,特別是非計(jì)算機(jī)專業(yè)的學(xué)生??勺鳛榇髮W(xué)四年級(jí)或新入學(xué)的研究生學(xué)習(xí)軟件設(shè)計(jì)的教材?! ”緯炙膫€(gè)部分,共11章。本書采用以實(shí)例為主,力求將抽象的設(shè)計(jì)方法融入到具體程序?qū)崿F(xiàn)中,讓讀者從實(shí)例中學(xué)習(xí)軟件設(shè)計(jì)的方法。本書所采用的程序語言是C++,開發(fā)工具是VC++,軟件設(shè)計(jì)實(shí)例是單機(jī)運(yùn)行的繪圖軟件?! 〉谝徊糠质恰俺绦蛟O(shè)計(jì)基礎(chǔ)知識(shí)”,是由第1、2兩章組成。主要是C++語言和數(shù)據(jù)結(jié)構(gòu)的知識(shí)提要,供那些C++基礎(chǔ)不太好,或?qū)W得不夠深入的學(xué)生復(fù)習(xí)和深入學(xué)習(xí)用。其中著重介紹運(yùn)算符重載、多態(tài)性、模板、線性表等概念。如果對(duì)這方面很熟的學(xué)生,則可以跳過或粗略瀏覽一遍即可?! 〉诙糠质恰癕FC編程技術(shù)”,是由第3、4、5三章組成。主要介紹MFC程序調(diào)試方法、基本原理及基本的開發(fā)技術(shù)。使讀者對(duì)MFC程序有一個(gè)比較深入的了解。MFC程序結(jié)構(gòu)提供了一個(gè)很好的軟件設(shè)計(jì)范本,我們?cè)诹私馑木幊碳夹g(shù)的同時(shí),也會(huì)對(duì)MFC程序結(jié)構(gòu)有一個(gè)比較深刻的印象,這對(duì)軟件設(shè)計(jì)的學(xué)習(xí)是非常有好處的?! 〉谌糠质恰败浖_發(fā)實(shí)例”,是由第6、7、8三章組成。這部分將引導(dǎo)讀者開發(fā)一個(gè)繪圖軟件系統(tǒng)。該軟件雖然很小,但其中包含的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)的管理、程序流程等對(duì)軟件設(shè)計(jì)的學(xué)習(xí)者都非常具有借鑒作用。 第四部分是“軟件工程與軟件設(shè)計(jì)”,是由第9、10、11三章組成。這部分將結(jié)合前面程序的例子,介紹軟件工程的概念和軟件設(shè)計(jì)的方法。后面還著重介紹了UML統(tǒng)一建模語言。最后還結(jié)合開發(fā)實(shí)例給出了UML的設(shè)計(jì)方法。從一個(gè)具體的開發(fā)實(shí)例中獲得軟件設(shè)計(jì)的思路,從而能夠理解軟件設(shè)計(jì)的理論。這就是本書所要追求的目標(biāo)。
書籍目錄
第一部分 程序設(shè)計(jì)基礎(chǔ)知識(shí) 第1章 C++語言提要 1.1 概述 1.2 類與對(duì)象 1.2.1 類的構(gòu)造函數(shù) 1.2.2 拷貝構(gòu)造函數(shù)被調(diào)用的場(chǎng)合 1.2.3 帶有指針變量的類 1.2.4 關(guān)于類的繼承問題 1.3 變量與函數(shù) 1.3.1 指針與引用 1.3.2 靜態(tài)變量 1.3.3 函數(shù)參數(shù) 1.3.4 const的用法 1.4 運(yùn)算符重載 1.4.1 將運(yùn)算符理解為函數(shù) 1.4.2 不同類之間的運(yùn)算 1.4.3 用友元定義的運(yùn)算符 1.4.4 其他運(yùn)算符的定義 1.5 多態(tài)性 1.5.1 一個(gè)多態(tài)性的例子 1.5.2 動(dòng)態(tài)綁定原理 1.5.3 關(guān)于虛函數(shù)的進(jìn)一步探討 1.6 模板 1.6.1 用模板定義的函數(shù) 1.6.2 用模板定義的類 1.6.3 非類型模板參數(shù) 思考題 習(xí)題 第2章 數(shù)據(jù)結(jié)構(gòu)提要 2.1 概述 2.2 順序存儲(chǔ)方式:數(shù)組 2.2.1 二維數(shù)組的物理結(jié)構(gòu) 2.2.2 關(guān)于數(shù)組的類 2.3 鏈?zhǔn)酱鎯?chǔ)方式:鏈表 2.3.1 鏈表的物理結(jié)構(gòu) 2.3.2 尾部添加新結(jié)點(diǎn) 2.3.3 刪除結(jié)點(diǎn) 2.3.4 插入新結(jié)點(diǎn) 2.4 線性表特例:?! ? 2.4.1 棧的基本概念 2.4.2 用鏈表方式實(shí)現(xiàn)棧的操作 2.5 線性表特例:循環(huán)隊(duì)列 2.5.1 隊(duì)列的基本概念 2.5.2 循環(huán)隊(duì)列的實(shí)現(xiàn) 思考題 習(xí)題第二部分 MFC編程技術(shù) 第3章 VC++簡(jiǎn)介 3.1 概述 3.2 MFC基本知識(shí) 3.2.1 MFC的數(shù)據(jù)類型的表示 3.2.2 匈牙利變量命名法 3.2.3 幾種常用的工具類 3.3 MFC應(yīng)用程序框架 3.3.1 與應(yīng)用程序有關(guān)的層次結(jié)構(gòu) 3.3.2 層次結(jié)構(gòu)中的主要類介紹 3.3.3 簡(jiǎn)單應(yīng)用程序舉例 3.4 程序調(diào)試的方法 3.4.1 代碼跟蹤與斷言 3.4.2 Assert Valid與Dump 思考題 習(xí)題 第4章 MFC程序的工作原理 4.1 消息處理機(jī)制 1.1.1 MFC程序入口 4.1.2 消息與消息循環(huán) 4.1.3 消息的傳遞 4.1.4 消息映射 4.2 運(yùn)行期識(shí)別 4.2.1 運(yùn)行期——RUNTIME_CLASS 4.2.2 動(dòng)態(tài)創(chuàng)建——DYNCREATE 4.2.3 類型識(shí)別——Is Kind of 4.3 串行化 4.3.1 文件的數(shù)據(jù)讀取方式 4.3.2 C Archive的數(shù)據(jù)讀取與寫入方式 4.3.3 串行化函數(shù) 思考題 習(xí)題 第5章 MFC程序的開發(fā)技術(shù) 5.1 動(dòng)態(tài)鏈接庫(kù)與工程管理 5.1.1 動(dòng)態(tài)鏈接庫(kù)的基本概念 5.1.2 一個(gè)簡(jiǎn)單的DLL 5.1.3 DLL的調(diào)用方式 5.1.4 建立有動(dòng)態(tài)庫(kù)的工程 5.2 消息發(fā)送與接收 5.2.1 消息的發(fā)送與接收 5.2.2 自定義消息塊 5.2.3 與其他應(yīng)用程序通信 5.3 串行化文件的保存與讀取 5.3.1 讓類支持串行化 5.3.2 DOC中的串行化 5.3.3 串行化到文件 5.4 注冊(cè)表 5.4.1 注冊(cè)表的基本操作 5.4.2 設(shè)置文件關(guān)聯(lián) 5.5 異常處理 5.5.1 異常處理 5.5.2 自己設(shè)計(jì)的異常處理 思考題 習(xí)題第三部分 軟件開發(fā)實(shí)例 第6章 圖像法繪圖 6.1 CDC類與繪圖 6.1.1 繪圖類 6.1.2 繪圖設(shè)備類 6.1.3 用CDC繪制簡(jiǎn)單圖形 6.2 簡(jiǎn)單的圖像法繪圖 6.2.1 加入一個(gè)繪圖菜單 6.2.2 簡(jiǎn)單的圖像法繪圖實(shí)現(xiàn) 6.2.3 彩色繪圖 6.3 圖形繪制的橡皮條算法 6.3.1 “橡皮條”的基本原理 6.3.2 如何在程序中實(shí)現(xiàn)橡皮條 6.4 OnDraw()與圖像保持 6.4.1 視圖類的OnDraw函數(shù) 6.4.2 圖像保持 6.5 圖像法的撤銷與重復(fù)(UNDO/REDO) 6.6 類似MSPAINT的界面設(shè)計(jì) 6.6.1 狀態(tài)欄 6.6.2 繪圖工具欄 6.6.3 顏色工具欄 思考題 習(xí)題 第7章 簡(jiǎn)單的矢量法繪圖軟件設(shè)計(jì) 7.1 圖形元素類 7.1.1 圖形元素基類 7.1.2 直線類 7.1.3 矩形類 7.1.4 橢圓類 7.2 實(shí)現(xiàn)矢量繪圖 7.2.1 LBUTFONDOWN的消息響應(yīng)函數(shù) 7.2.2 MOUSEMOVE的消息響應(yīng)函數(shù) 7.2.3 LBUTTONUP的消息響應(yīng)函數(shù) 7.3 矢量繪圖系統(tǒng)的管理 7.3.1 利用MFC鏈表管理圖形元素對(duì)象 7.3.2 系統(tǒng)的管理類 7.4 矢量法的撤銷與重復(fù)(UNDO/REDO) 7.4.1 設(shè)計(jì)Redo鏈表 7.4.2 菜單中響應(yīng)撤銷與重復(fù)的消息 7.5 動(dòng)態(tài)庫(kù)與程序的模塊化 7.5.1 建立動(dòng)態(tài)庫(kù)工程Shape Dll 7.5.2 在My Draw中使用動(dòng)態(tài)庫(kù) 思考題 習(xí)題 第8章 較完善的矢量法繪圖軟件設(shè)計(jì) 8.1 串行化與文件讀寫 8.1.1 如何使類可串行化 8.1.2 在DOC中實(shí)現(xiàn)串行化 8.2 圖元拾取技術(shù) 8.2.1 選中圖元 8.2.2 移動(dòng)圖元 8.2.3 修改界面程序,實(shí)現(xiàn)選中和移動(dòng)效果 8.2.4 拉伸圖元 8.3 圖元編組技術(shù) 8.3.1 子圖類的組織 8.3.2 圖形元素管理類編組功能 8.3.3 彈出式菜單 8.4 操作鏈表 8.4.1 操作基類的組織 8.4.2 移動(dòng)、拉伸等操作類的組織 8.4.3 修改圖元管理類的Undo/Redo 8.5 總結(jié) 思考題 習(xí)題第四部分 軟件工程與軟件設(shè)計(jì) 第9章 軟件工程的基本知識(shí) 9.1 概述 9.1.1 軟件工程的誕生 9.1.2 軟件的開發(fā)過程與建?! ?.2 可行性研究與需求分析 9.2.1 可行性研究 9.2.2 需求分析 9.3 概要設(shè)計(jì) 9.3.1 概要設(shè)計(jì)概述 9.3.2 概要設(shè)計(jì)方法 9.3.3 概要設(shè)計(jì)過程 9.4 詳細(xì)設(shè)計(jì)與編碼 9.4.1 詳細(xì)設(shè)計(jì) 9.4.2 編碼實(shí)現(xiàn) 9.5 軟件測(cè)試 9.5.1 軟件測(cè)試原則 9.5.2 軟件測(cè)試的基本方法 9.5.3 軟件測(cè)試的復(fù)雜性與經(jīng)濟(jì)性 9.6 模塊的耦合與內(nèi)聚 9.6.1 耦合 9.6.2 內(nèi)聚 9.6.3 劃分模塊的準(zhǔn)則 9.7 程序的正確性與健壯性 9.7.1 軟件的正確性 9.7.2 軟件的健壯性 思考題 習(xí)題 第10章 統(tǒng)一建模語言UML 10.1 概述 10.1.1 UML的主要特點(diǎn) 10.1.2 UML在現(xiàn)代軟件工程中的重要作用 10.2 UML的主要內(nèi)容 10.2.1 用例圖 10.2.2 類圖 10.2.3 對(duì)象圖 10.2.4 狀態(tài)圖 10.2.5 順序圖 10.2.6 協(xié)作圖 10.2.7 活動(dòng)圖 10.2.8 構(gòu)件圖 10.2.9 部署圖 思考題 習(xí)題 第11章 畫筆程序設(shè)計(jì) 11.1 開發(fā)背景 11.2 理解需求 11.2.1 繪制功能 11.2.2 圖形編輯功能 11.2.3 保存功能 11.3 分析與設(shè)計(jì) 11.3.1 用例分析 11.3.2 領(lǐng)域分析 11.3.3 業(yè)務(wù)過程分析(活動(dòng)圖) 11.3.4 交互分析 11.3.5 概要設(shè)計(jì) 11.3.6 詳細(xì)設(shè)計(jì) 11.3.7 用戶界面設(shè)計(jì) 11.4 編碼與實(shí)現(xiàn) 11.5 測(cè)試與部署 11.6 小結(jié)參考文獻(xiàn)
章節(jié)摘錄
第1章C++語言提要 1.1概述 讓我們簡(jiǎn)單回顧一下計(jì)算機(jī)語言的發(fā)展歷程。第一個(gè)階段是匯編語言,這個(gè)面向機(jī)器的語言。匯編語言解決了用便于理解的縮寫字母來代替二進(jìn)制的機(jī)器碼的問題。匯編的每一條語句對(duì)應(yīng)機(jī)器的一條指令,便于執(zhí)行但不便于編寫和閱讀。第二階段是面向過程的語言。這時(shí)候所解決的問題是將指令過程函數(shù)化,以及運(yùn)算過程高級(jí)化(采用人類容易理解的四則運(yùn)算等運(yùn)算方式,并引進(jìn)了與具體機(jī)器無關(guān)的+、-、*、/等運(yùn)算符)。這種改進(jìn)使得程序過程清晰明了,便于閱讀和編寫。但當(dāng)程序過于龐大時(shí),代碼的重復(fù)率提高,數(shù)據(jù)和函數(shù)得不到有效的保護(hù),代碼再利用不方便等缺點(diǎn)也暴露出來,于是出現(xiàn)了第三階段的面向?qū)ο蟮恼Z言。面向?qū)ο蟮恼Z言將面向過程語言中雜亂的數(shù)據(jù)和函數(shù),整齊地包裝成一個(gè)個(gè)自我完備的對(duì)象,提高了代碼的可讀性、程序的健壯性以及代碼的可重用性。時(shí)至今日,盡管計(jì)算機(jī)語言還在不斷地發(fā)展,面向?qū)ο蟮某绦蛟O(shè)計(jì)方法一直是現(xiàn)代計(jì)算機(jī)語言的一個(gè)基本理念之一。從20世紀(jì)90年代發(fā)展起來的面向組件的技術(shù)就是基于面向?qū)ο蠹夹g(shù)發(fā)展出來的軟件設(shè)計(jì)的新方法?! ∶嫦?qū)ο笳Z言的最主要的特點(diǎn)是封裝、繼承和多態(tài)性,稱為面向?qū)ο笏枷氲娜?。作為面向?qū)ο笳Z言的代表,C++語言一方面以完全兼容的方式牽手C語言,另一方面,又全方位地實(shí)現(xiàn)了面向?qū)ο蟮乃枷搿.?dāng)應(yīng)用軟件發(fā)展到一定規(guī)模,如果沒有面向?qū)ο蟮恼Z言是很難構(gòu)建程序的。當(dāng)回顧C(jī)++的全貌,我們應(yīng)該認(rèn)識(shí)到,從程序設(shè)計(jì)的角度來看,其實(shí)C++與C語言是完全不同的兩種語言。C++更注重設(shè)計(jì),而不是過程。因此,在程序設(shè)計(jì)思路上,C++語言與C語言有著很大的不同。比如編寫一個(gè)圖書管理程序,用C語言的思路,針對(duì)每一個(gè)功能(圖書錄入、檢索、借閱等)編制函數(shù)。如果系統(tǒng)龐大、功能復(fù)雜,會(huì)導(dǎo)致程序可讀性差、代碼重復(fù)性高、不易修改等問題。C++按照對(duì)象的方式進(jìn)行管理,整體上可讀性好,又具有代碼重用、升級(jí)方便等特點(diǎn),可使軟件設(shè)計(jì)人員在更高的層次上管理程序?! ”菊虏淮蛩闳娼榻BC++的知識(shí),只是用一些實(shí)例來復(fù)習(xí)一下C++的主要概念,并對(duì)C++某些難點(diǎn)進(jìn)行梳理。對(duì)于從未學(xué)過C++的讀者,我們建議先學(xué)一遍C++再看本章?! ?/pre>圖書封面
評(píng)論、評(píng)分、閱讀與下載
- 還沒讀過(61)
- 勉強(qiáng)可看(444)
- 一般般(758)
- 內(nèi)容豐富(3143)
- 強(qiáng)力推薦(257)
應(yīng)用軟件設(shè)計(jì)教程 PDF格式下載