面向?qū)ο蟪绦蛟O(shè)計概述_第1頁
面向?qū)ο蟪绦蛟O(shè)計概述_第2頁
面向?qū)ο蟪绦蛟O(shè)計概述_第3頁
面向?qū)ο蟪绦蛟O(shè)計概述_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、5第1章 Error! No text of specified style in document.面向?qū)ο蟪绦蛟O(shè)計概述1什么是結(jié)構(gòu)化程序設(shè)計方法?這種方法有哪些優(yōu)點和缺點?【解答】結(jié)構(gòu)化程序設(shè)計方法是指20世紀(jì)60年代開始出現(xiàn)的高級語言程序設(shè)計方法,由于采用了數(shù)據(jù)結(jié)構(gòu)化、語句結(jié)構(gòu)化、數(shù)據(jù)抽象和過程抽象等概念,使程序設(shè)計在符合客觀事物與邏輯的基礎(chǔ)上更進(jìn)了一步。結(jié)構(gòu)化程序設(shè)計的思路是:自頂向下、逐步求精。程序結(jié)構(gòu)由具有一定功能的若干獨立的基本模塊(單元)組成,各模塊之間形成一個樹狀結(jié)構(gòu),模塊之間的關(guān)系比較簡單,其功能相對獨立,模塊化通過子程序的方式實現(xiàn)。結(jié)構(gòu)化程序設(shè)計方法使高級語言程序設(shè)計開始

2、變得普及,并促進(jìn)了計算機(jī)技術(shù)的深入應(yīng)用。雖然結(jié)構(gòu)化程序設(shè)計方法采用了功能抽象、模塊分解與組合,以及自頂向下、逐步求精的方法,能有效地將各種復(fù)雜的任務(wù)分解為一系列相對容易實現(xiàn)的子任務(wù),有利于軟件開發(fā)和維護(hù);但與面向?qū)ο蟪绦蛟O(shè)計方法相比,結(jié)構(gòu)化程序設(shè)計存在的主要問題是,程序的數(shù)據(jù)和對數(shù)據(jù)的操作相互分離,若數(shù)據(jù)結(jié)構(gòu)改變,程序的大部分甚至所有相關(guān)的處理過程都要進(jìn)行修改。因此,對于開發(fā)大型程序具有一定的難度,軟件的可重用性差,維護(hù)工作量大,不完全符合人類認(rèn)識世界的客觀規(guī)律。2面向?qū)ο蟪绦蛟O(shè)計有哪些重要特點?【解答】軟件設(shè)計的目的是為了解決日常生活中存在的各種實際問題,面向?qū)ο蟪绦蛟O(shè)計與以往各種程序設(shè)計方

3、法的根本區(qū)別是程序設(shè)計的思維方法的不同。它主要具有如下重要特點:(1)面向?qū)ο蟪绦蛟O(shè)計實現(xiàn)了較直接地描述客觀世界中存在的事物(即對象)及事物之間的相互關(guān)系,它所強(qiáng)調(diào)的基本原則是直接面對客觀事物本身進(jìn)行抽象,并在此基礎(chǔ)上進(jìn)行軟件開發(fā),將人類的思維方式與表達(dá)方式直接應(yīng)用在軟件設(shè)計中。(2)面向?qū)ο蟮某绦蛟O(shè)計將客觀事物看作具有屬性和行為的對象,通過對客觀事物進(jìn)行抽象來尋找同一類對象的共同屬性(靜態(tài)特征)和行為(動態(tài)特征),并在此基礎(chǔ)上形成類。(3)面向?qū)ο蟮某绦蛟O(shè)計將數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,提高了數(shù)據(jù)的安全性和隱蔽性。(4)面向?qū)ο蟮某绦蛟O(shè)計通過類的繼承與派生機(jī)制以及多態(tài)性特性,提高了軟件代碼

4、的可重用性,因而大大縮減了軟件開發(fā)的相關(guān)費用及軟件開發(fā)周期,并有效地提高了軟件產(chǎn)品的質(zhì)量。(5)面向?qū)ο蟪绦蛟O(shè)計的抽象性和封裝特性,使對象以外的事物不能隨意獲取對象的內(nèi)部屬性,有效地避免了外部錯誤對內(nèi)部所產(chǎn)生的影響,減輕了軟件開發(fā)過程中查錯的工作量,減小了排錯的難度。(6)面向?qū)ο蟪绦蛟O(shè)計較直觀地反映了客觀世界的真實情況,使軟件設(shè)計人員能夠?qū)⑷祟愓J(rèn)識事物規(guī)律所采用的一般思維方法移植到軟件設(shè)計中。3面向?qū)ο笈c面向過程程序設(shè)計有哪些不同點?【解答】面向過程的程序設(shè)計方法將客觀事物中本質(zhì)上密切相關(guān)、相互依賴的數(shù)據(jù)和對數(shù)據(jù)的操作相互分離,這種實質(zhì)上的依賴與形式上的分離使得大型程序既難以編寫,也難以調(diào)試

5、、修改和維護(hù),代碼的可重用性和共享性差。而面向?qū)ο蟪绦蛟O(shè)計方法是一種以對象為基礎(chǔ),以事件或消息來驅(qū)動對象執(zhí)行相應(yīng)處理的程序設(shè)計方法。它將數(shù)據(jù)及對數(shù)據(jù)的操作封裝在一起,作為一個相互依存、不可分離的整體對象;它采用數(shù)據(jù)抽象和信息隱蔽技術(shù),將這個整體抽象成一種新的數(shù)據(jù)類型類。類中的大多數(shù)數(shù)據(jù),只能通過本類方法進(jìn)行操作和處理。面向?qū)ο蟪绦蛟O(shè)計以數(shù)據(jù)為中心而不是以功能為中心來描述系統(tǒng),因而非常適合于大型應(yīng)用程序與系統(tǒng)程序的開發(fā)。在程序結(jié)構(gòu)上,面向?qū)ο蟪绦蚺c面向過程程序也有很大的不同。面向過程的程序主要由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)組成,程序的基本單位是函數(shù),程序的執(zhí)行順序也是確定的。而面向?qū)ο蟪绦蛴深惖?/p>

6、定義和類的使用兩部分組成,程序的基本單位是類,在主程序內(nèi)定義對象,并確定對象之間消息的傳遞規(guī)律,程序中的所有操作都是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)的,對象接到消息后,通過消息處理函數(shù)完成相應(yīng)的操作。4什么是面向?qū)ο蠓椒ǖ姆庋b性?它有何優(yōu)缺點?【解答】封裝性指將對象的屬性和行為代碼封裝在對象的內(nèi)部,形成一個獨立的單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。封裝性是面向?qū)ο蠓椒ǖ囊粋€重要原則,C+面向?qū)ο蠓椒ǖ姆庋b特性包含以下兩層含義:第一層含義是將對象的全部屬性和行為封裝在對象內(nèi)部,形成一個不可分割的獨立單位。對象的屬性值(公有屬性值除外)只能由這個對象的行為來讀取和修改。第二層含義是“信息隱蔽”,即盡可能隱蔽

7、對象的內(nèi)部細(xì)節(jié),對外形成一道屏障,只保留有限的對外接口與外部發(fā)生聯(lián)系。面向?qū)ο蠓椒ǖ姆庋b性具有以下特點:(1)封裝性使對象以外的事物不能隨意獲取對象的內(nèi)部屬性,有效地避免了外部錯誤對它產(chǎn)生的影響,大大減輕了軟件開發(fā)過程中查錯的工作量,減小了排錯的難度。(2)封裝性使得當(dāng)程序需要修改對象內(nèi)部的數(shù)據(jù)時,減少了因為內(nèi)部修改對外部的影響。(3)封裝性使對象的使用者與設(shè)計者可以分開,使用者不必知道對象行為實現(xiàn)的細(xì)節(jié),而只使用設(shè)計者提供的外部接口即可。(4)封裝性事實上隱蔽了程序設(shè)計的復(fù)雜性,提高了代碼重用性,降低了軟件開發(fā)的難度。(5)面向?qū)ο蟪绦蛟O(shè)計方法的信息隱蔽作用體現(xiàn)了自然界中事物的相對獨立性,程

8、序設(shè)計者與使用者只需關(guān)心其對外提供的接口,而不必過分注意其內(nèi)部細(xì)節(jié),即主要關(guān)注能做什么,如何提供這些服務(wù)等。5面向?qū)ο蟪绦蛟O(shè)計為什么要應(yīng)用繼承機(jī)制?【解答】在面向?qū)ο蟪绦蛟O(shè)計中,根據(jù)既有類(父類)派生出新類(子類)的現(xiàn)象稱為類的繼承機(jī)制,亦稱為繼承性。面向?qū)ο蠓椒ǖ睦^承性是聯(lián)結(jié)類與類的一種層次模型。繼承是面向?qū)ο蟪绦蛟O(shè)計能夠提高軟件開發(fā)效率的重要原因之一。繼承意味著派生類中無須重新定義在父類中已經(jīng)定義的屬性和行為,而是自動地、隱含地?fù)碛衅涓割惖娜繉傩耘c行為。繼承機(jī)制允許和鼓勵類的重用,派生類既具有自己新定義的屬性和行為,又具有繼承下來的屬性和行為。當(dāng)派生類又被它更下層的子類繼承時,它繼承的及

9、自身定義的屬性和行為又被下一級子類繼承下去。繼承是可以傳遞的,符合自然界中特殊與一般的關(guān)系。繼承性具有重要的實際意義,它簡化了人們對事物的認(rèn)識和描述。比如我們認(rèn)識了飛行器的特征之后,再考慮飛機(jī)、飛船和彈道時,由于它們都具有飛行器的共性,于是可以認(rèn)為它理所當(dāng)然地具有飛行器的一般本質(zhì)特征,從而只需把精力用于發(fā)現(xiàn)和描述飛機(jī)、飛船和導(dǎo)彈獨有的特征。面向?qū)ο蟪绦蛟O(shè)計中的繼承性是對客觀世界的直接反映。通過類的繼承,能夠?qū)崿F(xiàn)對問題的深入抽象描述,反映人類認(rèn)識問題的發(fā)展過程。6什么是面向?qū)ο蟪绦蛟O(shè)計中的多態(tài)性?【解答】面向?qū)ο蟪绦蛟O(shè)計的多態(tài)性指父類中定義的屬性或行為,被派生類繼承之后,可以具有不同的數(shù)據(jù)類型或

10、表現(xiàn)出不同的行為特性。如類中的同名函數(shù)可以對應(yīng)多個具有相似功能的不同函數(shù),可使用相同的調(diào)用方式來調(diào)用這些具有不同功能的同名 函數(shù)。多態(tài)性使得同一個屬性或行為(如函數(shù))在父類及其各派生類中具有不同的語義,面向?qū)ο蟮亩鄳B(tài)特性使軟件開發(fā)更科學(xué)、更方便和更符合人類的思維習(xí)慣,能有效地提高軟件開發(fā)效率,縮短開發(fā)周期,提高軟件可靠性,使所開發(fā)的軟件更健壯。7什么是運行時多態(tài)?C+語言是如何實現(xiàn)運行時多態(tài)的?【解答】運行時多態(tài)是指,在程序的運行階段才根據(jù)程序運行中產(chǎn)生的信息確定需要調(diào)用哪個同名的函數(shù)。在C+中,運行時多態(tài)是通過繼承和虛函數(shù)來實現(xiàn)的。8什么是面向?qū)ο笾械南??一條消息由哪幾部分組成?【解答】在

11、面向?qū)ο蟪绦蛟O(shè)計中,消息是描述事件發(fā)生的信息,是對象之間發(fā)出的行為請求。事件一般由多個消息組成。在面向?qū)ο蠓椒ㄖ?,消息是向某個對象提出執(zhí)行該對象具有的特定服務(wù)的申請,不同對象之間通過發(fā)送消息向?qū)Ψ教岢龇?wù)請求,接受消息的對象主動完成所請求的服務(wù)。通常一條消息由接受消息的對象、消息名稱和若干消息參數(shù)三部分組成。面向?qū)ο笾械南C(jī)制為不同對象之間提供了一個動態(tài)聯(lián)系的途徑,使它們的行為能互相配合,構(gòu)成一個有機(jī)的運行系統(tǒng)。9為什么說C+是混合型面向?qū)ο蟪绦蛟O(shè)計語言?【解答】C+是美國Bell實驗室于20世紀(jì)80年代在C語言的基礎(chǔ)上成功開發(fā)出來的,是目前已經(jīng)得到廣泛應(yīng)用的混合型面向?qū)ο蟪绦蛟O(shè)計語言。C+

12、既可以用于結(jié)化程序設(shè)計,又可以用于面向?qū)ο蟪绦蛟O(shè)計,因此是一種混合型面向?qū)ο蟪绦蛟O(shè)計語言。C+保留了C語言的全部優(yōu)點,兼容C語言的語法,彌補(bǔ)了C語言的缺陷,且C程序不經(jīng)修改可以直接在C+環(huán)境中使用。同時,C+還增加了面向?qū)ο蟮姆椒ㄅc機(jī)制,全面支持面向?qū)ο蟪绦蛟O(shè)計方法。10C+支持多態(tài)性主要表現(xiàn)在哪些方面?【解答】多態(tài)性指在一般類中定義的屬性或行為,被派生類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。C+的多態(tài)性分為編譯時多態(tài)和運行時多態(tài)。編譯時多態(tài)是指在程序的編譯階段由編譯系統(tǒng)根據(jù)操作數(shù)或返回值不同,確定需要調(diào)用哪個同名的函數(shù)。運行時多態(tài)是指在程序的運行階段才根據(jù)程序運行中產(chǎn)生的信息,

13、確定需要調(diào)用哪個同名的函數(shù)。這些同名函數(shù)雖然名稱相同但卻具有不同的功能,因此將產(chǎn)生不同的操作。在C+中,編譯時多態(tài)是通過函數(shù)重載和運算符重載實現(xiàn)的,運行時多態(tài)是通過繼承和虛函數(shù)來實現(xiàn)的。11面向?qū)ο蟮能浖こ贪男┲饕獌?nèi)容?【解答】面向?qū)ο筌浖_發(fā)是目前軟件開發(fā)的最新方法和程序設(shè)計的最新成果,面向?qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用,它主要包括以下內(nèi)容: 面向?qū)ο蠓治觯∣OA); 面向?qū)ο笤O(shè)計(OOD); 面向?qū)ο缶幊蹋∣OP); 面向?qū)ο鬁y試(OOT); 面向?qū)ο筌浖S護(hù)(OOSM)。12目前常用的面向?qū)ο蟪绦蛟O(shè)計語言有哪些?各有哪些特點?【解答】面向?qū)ο蟪绦蛟O(shè)計語言主要包

14、括以下幾種: Simula 67語言; Smalltalk語言; CLU語言; Ada語言; Modula-2語言; LOOPS語言; Flavors語言; CLOS語言; Visual Basic等可視化面向?qū)ο笳Z言; C+語言; Java語言。Simula 67語言產(chǎn)生于20世紀(jì)60年代,具有類和對象的概念,被認(rèn)為是最早具有面向?qū)ο蟾拍畹恼Z言。Smalltalk語言是美國Xerox Palo Alto研究中心于20世紀(jì)70年代初推出的面向?qū)ο蟪绦蛟O(shè)計工具,它完整地體現(xiàn)并進(jìn)一步豐富了面向?qū)ο蟮母拍?,被認(rèn)為是世界上第一個真正面向?qū)ο蟪绦蛟O(shè)計語言。CLU、Ada、Modula-2都或多或少地引入

15、了面向?qū)ο蟮母拍?,LOOPS、Flavors和CLOS是與人工智能語言相結(jié)合形成的面向?qū)ο蟪绦蛟O(shè)計語言。Visual Basic是Microsoft于1991年在BASIC語言的基礎(chǔ)上推出的可視化面向?qū)ο缶幊陶Z言。Visual Basic的產(chǎn)生標(biāo)志著軟件技術(shù)一個新時代的開始。在Visual Basic之后,相繼產(chǎn)生了Visual C+、Visual J+、Visual FoxPro、Borland Delphi及Power Builder等眾多可視化程序語言。C+語言由C語言發(fā)展而來,是一種混合型面向?qū)ο蟪绦蛟O(shè)計語言。Java語言是適合網(wǎng)絡(luò)應(yīng)用的面向?qū)ο蟪绦蛟O(shè)計語言。13什么是.NET?【解答

16、】.NET即Microsoft.NET,是Microsoft于2000年推出的一個新的軟件開發(fā)平臺,是Microsoft為應(yīng)對網(wǎng)絡(luò)信息時代的一個重要戰(zhàn)略,它定義了一種公用語言子集(CLS),是一種為符合其規(guī)范的語言與類庫之間提供無縫集成的混合語言。與以往的Visual Studio 6.0版相比,.NET包含了許多新的編程思想,它統(tǒng)一了編程的類庫,提供了對下一代網(wǎng)絡(luò)通信標(biāo)準(zhǔn)可擴(kuò)展置標(biāo)語言XML的完全支持,功能十分強(qiáng)大,使程序員能夠快速創(chuàng)建下一代面向任何設(shè)備并與任何平臺集成的Internet應(yīng)用程序,因而使軟件設(shè)計開發(fā)變得更容易、更簡單。Microsoft在其軟件中添加了手寫和語音識別的功能,讓

17、人們能夠與計算機(jī)進(jìn)行更好的交流。與Microsoft的其他產(chǎn)品一樣,.NET與Windows平臺高效集成,其運行庫與操作系統(tǒng)已融為一體,.NET再現(xiàn)了一個現(xiàn)代化的、功能強(qiáng)大的集成開發(fā)環(huán)境。.NET是軟件技術(shù)的一次革命,它是一種面向網(wǎng)絡(luò)、支持各種用戶終端的開發(fā)平臺,旨在從根本上改變軟件的開發(fā)與使用方式。.NET為使用者與軟件開發(fā)人員提供了功能強(qiáng)大、種類豐富的管理與開發(fā)工具,將Basic、Java、C、C+等語言集成到一個統(tǒng)一的程序框架上,即這些工具都是.NET框架提供的服務(wù)。2002年推出的Visual Studio.NET是.NET的核心開發(fā)工具,包括了Microsoft提供的各種開發(fā)語言,并增加了對新一代計算機(jī)語言Visual C#的支持。.NET平

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論