第一篇:面向?qū)ο蠹夹g(shù)引論(復(fù)習(xí)題帶術(shù)語(yǔ)題答案)
一、概念與術(shù)語(yǔ)
1.對(duì)象:(1)從現(xiàn)實(shí)世界:?jiǎn)栴}的概念和抽象的或具有明確邊界和意義的事物
(2)從數(shù)據(jù)世界:一組數(shù)據(jù)以施加在這組數(shù)據(jù)上的一組操作
(3)從系統(tǒng)觀點(diǎn):對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位,一個(gè)對(duì)象是由一組屬性和對(duì)整個(gè)屬性進(jìn)行操作的一組服務(wù)構(gòu)成的。(P19)
2.持久對(duì)象:生存期可以超越程序的執(zhí)行時(shí)間而長(zhǎng)期存在的對(duì)象。(P24)
2.主動(dòng)對(duì)象(3種解釋?zhuān)海?)一個(gè)能夠啟動(dòng)消息傳遞的對(duì)象。(2)一個(gè)能為其他對(duì)象提供服務(wù)的對(duì)象,能被拷貝成代理,并且需要并發(fā)控制。(3)其方法(操作)由自身狀態(tài)的改變而激活。(P25)
3.被動(dòng)對(duì)象:其內(nèi)部的操作需要通過(guò)外部消息驅(qū)動(dòng)才能執(zhí)行的對(duì)象。(P25)
4.類(lèi):一組具有相同性質(zhì)(屬性和操作)的對(duì)象的抽象。(P20)
5.主動(dòng)類(lèi):主動(dòng)類(lèi)的對(duì)象至少擁有一個(gè)進(jìn)程或線(xiàn)程,因此它能夠自主執(zhí)行(P65)
6.接口:描述一個(gè)類(lèi)或構(gòu)件的一個(gè)服務(wù)的操作集(P64)
7.用況:用況是對(duì)業(yè)務(wù)過(guò)程所包含的一組動(dòng)作序列的描述,系統(tǒng)執(zhí)行這些動(dòng)作將產(chǎn)生一個(gè)對(duì)特定的參與者有價(jià)值且可觀察的結(jié)果。(P42)
8.協(xié)作:協(xié)作定義了一個(gè)交互,它是由一組共同工作以提供某協(xié)作行為的角色和其他元素構(gòu)成的一個(gè)群體,這些協(xié)作行為大于所有元素的各自行為的綜合(P64)
9.構(gòu)件:構(gòu)件是系統(tǒng)中物理的、可替代的部件,它遵循且提供一組接口的實(shí)現(xiàn)。(P65)
10.節(jié)點(diǎn):節(jié)點(diǎn)也是物理的,是在系統(tǒng)運(yùn)行時(shí)存在的物理元素,它表示了一種可計(jì)算的資源,通常至少有一些記憶能力和處理能力。(P65)
11.一般類(lèi)和12.特殊類(lèi):如果類(lèi)A具有類(lèi)B的全部屬性和服務(wù)(操作),而且具有自己特有的某些屬性和服務(wù),則類(lèi)A叫做類(lèi)B的特殊類(lèi),B叫做A的一般類(lèi)。(P22)
13.關(guān)聯(lián)(關(guān)系):事物(類(lèi))之間的一種結(jié)構(gòu)關(guān)系,或者說(shuō)是對(duì)象之間連接的抽象,用來(lái)描述對(duì)象之間的相互作用(P67)
14.關(guān)聯(lián)類(lèi):關(guān)聯(lián)類(lèi)是一種具有關(guān)聯(lián)特性和類(lèi)特性的建模元素,可以將其看出是具有類(lèi)特性的關(guān)聯(lián),或者具有管理特征的類(lèi)(P116)
15.依賴(lài)(關(guān)系):依賴(lài)是兩個(gè)事物之間的一種語(yǔ)義關(guān)系,其中的一個(gè)事物的改變會(huì)影響另一個(gè)事物,反之未必(P106)
16.泛化(關(guān)系):泛化是一種“特殊/一般”關(guān)系,即特殊事物和一般事物之間的關(guān)系。(P108)
17.實(shí)現(xiàn)(關(guān)系):類(lèi)元之間的語(yǔ)義關(guān)系(P16)
18.鏈和鏈屬性:對(duì)象之間的關(guān)聯(lián)或相互作用表現(xiàn)出不同的類(lèi)的對(duì)象的實(shí)例之間的實(shí)際的或概念上的聯(lián)系,稱(chēng)為鏈。鏈屬性:??(P110)
19.聚合:聚合用來(lái)表示事物時(shí)間的“整體/部分”關(guān)系,“整體”事物是一個(gè)較大的事物,它是由多個(gè)”部分“事物組成的。(P113-114)
20.問(wèn)題域:是指特定應(yīng)用系統(tǒng)的應(yīng)用領(lǐng)域,即在現(xiàn)實(shí)世界中由該系統(tǒng)進(jìn)行處理的業(yè)務(wù)范圍。(P47)
21.系統(tǒng)責(zé)任:指系統(tǒng)應(yīng)該具備的職能。(P47)
22.消息:消息定義為向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求(P23和P127)
23.交互:交互是發(fā)生在對(duì)象之間后對(duì)象內(nèi)部的消息傳遞行為(P66)
24.事件:一個(gè)觸發(fā)行為成為一個(gè)事件,換句話(huà)說(shuō),所謂事件是指特定時(shí)刻內(nèi)發(fā)生的動(dòng)作。(P139)
25.事件流:(P84)
26.狀態(tài):指在對(duì)象的生命期中的一個(gè)條件或狀況(通過(guò)屬性值體現(xiàn)),在此期間,對(duì)象將滿(mǎn)足某些條件、執(zhí)行某些活動(dòng)或等待某些事件。(p141)
27.狀態(tài)機(jī):狀態(tài)機(jī)描述了一個(gè)對(duì)象或一個(gè)交互在生命期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列,即描述其狀態(tài)變遷。(P66)
28.封裝:封裝是對(duì)擁有結(jié)構(gòu)和行為的一個(gè)對(duì)象的元素進(jìn)行劃分的過(guò)程,封裝完成抽象的契約接口和對(duì)象實(shí)施的分離(P28)
29.繼承:特殊類(lèi)擁有一般類(lèi)的全部屬性和服務(wù)(操作),稱(chēng)為特殊類(lèi)對(duì)一般類(lèi)的繼承(P29)多態(tài):在一般類(lèi)中定義的屬性被特殊類(lèi)繼承之后,可以具有不同的數(shù)據(jù)類(lèi)型;同理,一般類(lèi)中定義的操作,可以在特殊類(lèi)中具有不同的實(shí)現(xiàn)方法。(P31)
31.抽象:抽象即指通過(guò)思考進(jìn)行分離的行為。另一種解釋?zhuān)罕硎灸呈挛锏谋举|(zhì)特征(P27)
32.角色:當(dāng)一個(gè)類(lèi)位于關(guān)聯(lián)的某一端時(shí),該類(lèi)(的某些實(shí)例)就在這個(gè)關(guān)系中扮演了特定的角色。(這個(gè)算??)(P111)
33.限定詞(修飾關(guān)聯(lián)):限定詞是關(guān)聯(lián)的一個(gè)特定的屬性,它的值劃分了一個(gè)關(guān)聯(lián)與一個(gè)對(duì)象相關(guān)的對(duì)象集。(p116)
34.UML的規(guī)則(命名、范圍、可見(jiàn)性、完整性、執(zhí)行):P70-P71太多了~不想打~
35.UML的公共機(jī)制(詳述、修飾、通用劃分、擴(kuò)展機(jī)制(構(gòu)造型、標(biāo)記值、約束))
36.OOPL:面向?qū)ο蟮木幊陶Z(yǔ)言,OOD:面向?qū)ο笤O(shè)計(jì)范式,OOA:面向?qū)ο蠓治龇椒?/p>
37.準(zhǔn)則包括標(biāo)準(zhǔn)與原則,模塊化設(shè)計(jì)的標(biāo)準(zhǔn)包括:可分解性、組合性、可理解性、連續(xù)性、保護(hù)性;設(shè)計(jì)上應(yīng)遵循的原則為:語(yǔ)言模塊單元、接口很少、小接口、顯示接口、信息隱蔽等。
38.面向?qū)ο蟮乃膫€(gè)基本要素:面向?qū)ο笙到y(tǒng)是由對(duì)象組成的、組成系統(tǒng)的對(duì)象抽象成類(lèi)、類(lèi)之間存在泛化關(guān)系,此種關(guān)系支持繼承、對(duì)象之間通過(guò)消息獲取對(duì)方的服務(wù)。
39.應(yīng)用開(kāi)發(fā)過(guò)程六個(gè)階段:需求描述、分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、維護(hù)。
40.UML對(duì)軟件密集型系統(tǒng)的制品進(jìn)行下述工作:可視化、詳述、構(gòu)造、文檔化。41.UML三大建模元素:事物、關(guān)系、圖,事物分為:角色、實(shí)現(xiàn)結(jié)構(gòu)。結(jié)構(gòu)事物、行為事物、分組事物、注釋事物,結(jié)構(gòu)事10.簡(jiǎn)述描述類(lèi)的基本特征(名稱(chēng)、屬性等)并舉例物分為:類(lèi)、接口、協(xié)作、用況、主動(dòng)類(lèi)、構(gòu)件、節(jié)說(shuō)明之。點(diǎn)。名稱(chēng):一個(gè)字符串;屬性:已被命名的類(lèi)的42.提交一個(gè)應(yīng)用系統(tǒng)的過(guò)程包括:計(jì)劃和細(xì)化、構(gòu)造、特性;操作:一個(gè)服務(wù)的實(shí)現(xiàn),該服務(wù)可以由類(lèi)的任實(shí)施。何對(duì)象,甚至其他類(lèi)的對(duì)象所請(qǐng)求,以影響其行為; 職責(zé):類(lèi)的契約或責(zé)任。
二、思考題 11.為什么“繼承”可以簡(jiǎn)化對(duì)問(wèn)題的認(rèn)識(shí)? 這是因?yàn)樵诜治鰡?wèn)題時(shí),運(yùn)用繼承手段至少1.為什么應(yīng)用對(duì)象技術(shù)可以改變軟件制造(生產(chǎn))可以從數(shù)量上減少必須理解和分析的不同情況。方式? 由人工集約方式改變成資源集約方式,由重復(fù)性12.列舉引起需求變化的主要因素,面向?qū)ο蠓椒ㄈ绾螒?yīng)對(duì)需求的不斷變化? 的編程勞動(dòng)變成基于組件的系統(tǒng)組裝,從而帶來(lái)軟件生產(chǎn)問(wèn)題域本身在系統(tǒng)開(kāi)發(fā)過(guò)程中發(fā)生變化、用戶(hù)因效率的大幅度提高。素、競(jìng)爭(zhēng)因素、經(jīng)費(fèi)因素、技術(shù)支持。2.試述建模的重要性,為什么建??梢越档拖到y(tǒng)實(shí)凍結(jié)需求法、以系統(tǒng)中最穩(wěn)定的部分作為系統(tǒng)的基本單位現(xiàn)的復(fù)雜度。(對(duì)象)。建模是開(kāi)發(fā)優(yōu)秀軟件所有活動(dòng)的核心部分,其目的是把所要設(shè)計(jì)的結(jié)構(gòu)和系統(tǒng)的行為溝通起來(lái),并對(duì)系統(tǒng)13.簡(jiǎn)述軟件維護(hù)的主要工作,并說(shuō)明其重要性。主要工作:對(duì)系統(tǒng)潛在的錯(cuò)誤進(jìn)行檢測(cè)和改的體系結(jié)構(gòu)進(jìn)行可視化和控制。建模是為了更好的理解正正;不斷地面對(duì)用戶(hù)的新要求以及為適應(yīng)新環(huán)境對(duì)系在構(gòu)造的系統(tǒng),并經(jīng)常提供簡(jiǎn)化和復(fù)用的機(jī)會(huì)。建模還可統(tǒng)進(jìn)行改進(jìn)與增強(qiáng)。以管理風(fēng)險(xiǎn)。一個(gè)成功的軟件組織有很多成功的因素,其中共同的一點(diǎn)就是對(duì)建模的采用。模型可以提高系統(tǒng)的可測(cè)試性。提高可交流性。增強(qiáng)開(kāi)發(fā)過(guò)程的可視性,使得分析和設(shè)計(jì)思路、設(shè)計(jì)過(guò)程可視化。降低實(shí)現(xiàn)的復(fù)雜度。通過(guò)將復(fù)雜系統(tǒng)的重要部分分解成一次能理解與處理的多個(gè)子部分,可以降低實(shí)現(xiàn)的復(fù)雜性。人對(duì)復(fù)雜問(wèn)題的理解能力是有限的,通過(guò)建模,縮小所研究問(wèn)題的范圍,一次只著重研究它的一個(gè)方面,這就是所謂的“分而治之”“各個(gè)擊破”。3.為什么面向?qū)ο蠓椒茌^好地管理復(fù)雜性并增強(qiáng)伸縮性。管理復(fù)雜性的一個(gè)好辦法就是“分而治之”?!胺帧本褪菍?duì)應(yīng)用領(lǐng)域的分解,面向?qū)ο蠓椒◤?qiáng)調(diào)以客觀世界的事物為基礎(chǔ),把某一領(lǐng)域分割成各種對(duì)象,這顯然比自頂向下進(jìn)行功能分解更自然、合理。“治”的基本方法就是:采用封裝技術(shù)對(duì)被分割的事物進(jìn)行包裝,以簡(jiǎn)化接口、減少事物之間不必要的聯(lián)系。利用事物之間的泛化管子構(gòu)造繼承機(jī)制以獲得重用??捎眯院涂蓴U(kuò)展性意味著復(fù)雜系統(tǒng)可以由簡(jiǎn)單系統(tǒng)組合而成,并且復(fù)雜系統(tǒng)可以采用“迭代”方式,逐步增量形成。基于對(duì)象的分塊技術(shù)也有助于解決過(guò)程的伸縮性問(wèn)題。4.何謂“軟件復(fù)用”,為什么說(shuō)面向?qū)ο蠹夹g(shù)對(duì)“軟件復(fù)用”提供了卓有成效的支持? 軟件重用是將已有軟件的各種有關(guān)知識(shí)用于建立新的軟件,以縮減軟件開(kāi)發(fā)和維護(hù)的花費(fèi)。包括分析模型、設(shè)計(jì)模型、代碼以及測(cè)試用例、測(cè)試信息等等的復(fù)用。面向?qū)ο蠹夹g(shù)使軟件重用技術(shù)更加完善和規(guī)范,對(duì)象的重要特性。:抽象、封裝、繼承和多態(tài)都從不同角度支持軟件重用:抽象使得對(duì)象組件更具一般化,也即充分考慮到對(duì)象自身的性質(zhì)、性能和應(yīng)用環(huán)境的復(fù)雜性等多方面的要求,以此獲得通用化和標(biāo)準(zhǔn)化方面的保證。封裝允許開(kāi)發(fā)人員將對(duì)象視為“黑匣子”,只需通過(guò)界面去理解、引用和操作對(duì)象,而不必關(guān)心其實(shí)現(xiàn)細(xì)節(jié)。繼承使得基于類(lèi)的抽象層次和泛化結(jié)構(gòu)的代碼重用成為可能,也即通過(guò)泛化關(guān)系使得特殊類(lèi)可以共享一般類(lèi)的性質(zhì)。5.“用況驅(qū)動(dòng)的、迭代式的、增量”的開(kāi)發(fā)方法的要點(diǎn)、優(yōu)點(diǎn)、時(shí)間盒。要點(diǎn):①軟件開(kāi)發(fā)過(guò)程要經(jīng)歷若干個(gè)開(kāi)發(fā)周期,每個(gè)周期都包含:分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等活動(dòng)。②在經(jīng)過(guò)一個(gè)初步的計(jì)劃和細(xì)化階段后,開(kāi)發(fā)進(jìn)入由一系列開(kāi)發(fā)周期組成的系統(tǒng)構(gòu)造階段,所以迭代主要發(fā)生在構(gòu)造階段,當(dāng)然也包含部分實(shí)施,因此嚴(yán)格講,構(gòu)造發(fā)生在構(gòu)造及實(shí)施階段。③在每個(gè)開(kāi)發(fā)周期中,通過(guò)增加新的功能使系統(tǒng)得以擴(kuò)充。④每個(gè)開(kāi)發(fā)周期只針對(duì)比較小的一部分需求,它要經(jīng)歷分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等活動(dòng)。每個(gè)開(kāi)發(fā)周期完成后,系統(tǒng)都獲得一定程度的擴(kuò)充。開(kāi)發(fā)周期一般是以用況為單位組織的。優(yōu)點(diǎn):①因?yàn)槊總€(gè)開(kāi)發(fā)周期只針對(duì)比較小的一部分需求,所以就可以比較好的解決由于一個(gè)開(kāi)發(fā)過(guò)程太龐大、復(fù)雜使得開(kāi)發(fā)人員無(wú)從下手的問(wèn)題,也即能夠比較有效地管理復(fù)雜性。②因?yàn)槊總€(gè)開(kāi)發(fā)周期只快速實(shí)現(xiàn)系統(tǒng)的一小部分,所以在開(kāi)發(fā)過(guò)程的早期就能夠獲得反饋信息。用戶(hù)的反饋信息越早越好,盡早聽(tīng)到和采納用戶(hù)的意見(jiàn),可以少犯錯(cuò)誤。時(shí)間盒即給開(kāi)發(fā)周期限定時(shí)間,開(kāi)發(fā)周期中的所用工作都必須在這個(gè)時(shí)間內(nèi)完成。6.“計(jì)劃和細(xì)化”階段的主要工作和主要活動(dòng)。主要工作:初期概念的形成、為做出各種項(xiàng)目選擇所進(jìn)行的調(diào)查研究、需求的規(guī)格化描述等。主要活動(dòng):定義計(jì)劃草案、編制初步調(diào)查報(bào)告、定義需求、在術(shù)語(yǔ)表中記錄術(shù)語(yǔ)、實(shí)現(xiàn)原型、定義用況、定義概念模型草案、定義系統(tǒng)結(jié)構(gòu)草案、精華計(jì)劃。7.“構(gòu)造階段”的主要工作和主要活動(dòng)。構(gòu)造階段包括一系列重復(fù)的開(kāi)發(fā)周期,每個(gè)開(kāi)發(fā)周期主要工作:精華計(jì)劃、同步制品、分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試等。在這些開(kāi)發(fā)周期中,系統(tǒng)得到了擴(kuò)展和完善。構(gòu)造階段的最終目標(biāo)是得到一個(gè)能正確符合需求的軟件系統(tǒng)。8.何謂鏈屬性,試述鏈屬性不應(yīng)置入關(guān)聯(lián)兩端的某一對(duì)象類(lèi)中作為其屬性的理由,請(qǐng)舉例說(shuō)明之。由于關(guān)聯(lián)特性與存在關(guān)聯(lián)關(guān)系的兩個(gè)類(lèi)有關(guān),因此建模時(shí)經(jīng)常會(huì)將這些屬性隨意地置入某一個(gè)類(lèi)中,當(dāng)成類(lèi)的屬性。關(guān)聯(lián)的特性是與被關(guān)聯(lián)的兩個(gè)或多個(gè)類(lèi)有關(guān)的那些屬性,這些屬性不是從屬于單個(gè)類(lèi)的,因而不應(yīng)該隨意置入某個(gè)類(lèi)中。9.系統(tǒng)分析階段如何識(shí)別類(lèi)和排除虛假類(lèi)?(分別簡(jiǎn)述語(yǔ)法分析法和現(xiàn)實(shí)分析法的要點(diǎn))。現(xiàn)實(shí)分析法:確定問(wèn)題陳述所涉及的哪些活動(dòng)是與需求密切相關(guān)的,分析這些活動(dòng)涉及到哪些具體的事物、概念、過(guò)程,遵循哪些規(guī)則等,它們都可能是系統(tǒng)內(nèi)部的對(duì)象類(lèi)。語(yǔ)法分析發(fā):在問(wèn)題陳述中,對(duì)象類(lèi)通常對(duì)應(yīng)于名詞或名詞詞組,因此從問(wèn)題陳述中找出所有的名詞或名詞詞組,就得到大多數(shù)的候選類(lèi),運(yùn)用排除法可以排除虛假的類(lèi),就獲得確定的類(lèi)組。虛假類(lèi):冗余類(lèi)、無(wú)關(guān)類(lèi)、模糊類(lèi)、屬性、操作、
第二篇:面向?qū)ο蠹夹g(shù)引論(復(fù)習(xí)題)[參考解答]
《面向?qū)ο蠹夹g(shù)引論》復(fù)習(xí)題
一、概念與術(shù)語(yǔ)
1.對(duì)象:
在現(xiàn)實(shí)世界中,對(duì)象定義為:?jiǎn)栴}的概念和抽象的或具有明確邊界和意義的事物;在數(shù)據(jù)世界中,對(duì)象定義為:一組數(shù)據(jù)以及施加于這組數(shù)據(jù)上的一組操作;
從系統(tǒng)的觀點(diǎn)出發(fā),我們可以給對(duì)象作如下定義:對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位(單元),一個(gè)對(duì)象是由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)構(gòu)成的。
2.持久對(duì)象:
生存期可以超越程序的執(zhí)行時(shí)間而長(zhǎng)期存在的對(duì)象稱(chēng)為持久對(duì)象。換句話(huà)說(shuō):一個(gè)對(duì)象在程序運(yùn)行結(jié)束后仍繼續(xù)存在,則稱(chēng)該對(duì)象是持久的。
2.主動(dòng)對(duì)象:
主動(dòng)對(duì)象是一組屬性和一組操作(服務(wù))的封裝體,其中至少有一個(gè)操作不需要接收消息就能主動(dòng)執(zhí)行(稱(chēng)為主動(dòng)服務(wù))。
3.被動(dòng)對(duì)象:
被動(dòng)對(duì)象(Passive object)是指其內(nèi)部的操作需要通過(guò)外部消息驅(qū)動(dòng)才能執(zhí)行的對(duì)象??梢钥闯霰粍?dòng)對(duì)象必須工作在消息驅(qū)動(dòng)環(huán)境中。
4.類(lèi):
定義1一組具有相同性質(zhì)(屬性和操作)的對(duì)象的抽象。
定義2類(lèi)是對(duì)一組具有相同屬性、操作、關(guān)系和語(yǔ)義的對(duì)象的描述。
定義3具有相同屬性和容許操作的一組對(duì)象的一般描述稱(chēng)為類(lèi)。
5.主動(dòng)類(lèi):
主動(dòng)類(lèi)的對(duì)象至少擁有一個(gè)進(jìn)程或線(xiàn)程,因此它能夠自主執(zhí)行(能夠啟動(dòng)控制活動(dòng))。注意:主動(dòng)類(lèi)的對(duì)象所描述的元素的行為與其他元素的行為并發(fā),這是它與一般類(lèi)的唯一區(qū)別。
6.接口:
接口是描述一個(gè)類(lèi)或構(gòu)件的一個(gè)服務(wù)的操作集。因此,接口描述元素的外部可見(jiàn)行為。接口描述了一組操作的規(guī)格,而不是操作的實(shí)現(xiàn)。圖形上,用一個(gè)帶有名稱(chēng)的圓表示接口。
7.用況:
用況是對(duì)一組動(dòng)作序列的描述,系統(tǒng)執(zhí)行這些動(dòng)作將產(chǎn)生一個(gè)對(duì)特定的參與者有價(jià)值而且可觀察的結(jié)果。用況用于對(duì)系統(tǒng)語(yǔ)境和系統(tǒng)需求建模。圖形上,用一個(gè)包含名稱(chēng)的實(shí)線(xiàn)橢圓表示用況。
8.協(xié)作:
協(xié)作定義了一個(gè)交互,它是由一組共同工作以提供某協(xié)作行為的角色和其他元素構(gòu)成的一個(gè)群體,這些協(xié)作行為大于所有元素的各自行為的綜合。因此協(xié)作有結(jié)構(gòu)、行為和維度。圖形上,用一個(gè)僅包含名稱(chēng)(協(xié)作名)的虛線(xiàn)橢圓表示協(xié)作。
9.構(gòu)件:
構(gòu)件是系統(tǒng)中物理的、可替代的部件,它遵循且提供一組接口的實(shí)現(xiàn)。構(gòu)件是物理的、可替代的部件。
10.節(jié)點(diǎn):
節(jié)點(diǎn)也是物理的,是在系統(tǒng)運(yùn)行時(shí)存在的物理元素,它表示了一種可計(jì)算的資源,通常至少有一些記憶能力和處理能力。
11.一般類(lèi) /12.特殊類(lèi):
如果類(lèi)A具有類(lèi)B的全部屬性和服務(wù),而且具有自己特有的某些屬性和服務(wù),則類(lèi)A叫做類(lèi)B的特殊類(lèi),類(lèi)B叫做的類(lèi)A的一般類(lèi)。兩者之間的關(guān)系稱(chēng)為“泛化”??梢钥闯鲆话?/p>
類(lèi)具有父類(lèi)的特征,而特殊類(lèi)具有子類(lèi)的特征,特殊類(lèi)可以共享一般類(lèi)的性質(zhì)。
13.關(guān)聯(lián)(關(guān)系)
關(guān)聯(lián)是對(duì)象之間連接(鏈)的抽象,用來(lái)描述對(duì)象之間的相互作用。
14.關(guān)聯(lián)類(lèi):
關(guān)聯(lián)類(lèi)是一種具有關(guān)聯(lián)特性和類(lèi)特性的建模元素,可以將關(guān)聯(lián)類(lèi)看成是具有類(lèi)特性的關(guān)聯(lián),或是具有關(guān)聯(lián)特性的類(lèi)。
15.依賴(lài)(關(guān)系):
依賴(lài)是兩個(gè)事物之間的一種語(yǔ)義關(guān)系,其中一個(gè)事物(獨(dú)立事物)的改變會(huì)影響另一事物(依賴(lài)事物)的語(yǔ)義。
16.泛化(關(guān)系):
泛化是事物(類(lèi))之間的一種一般/特殊關(guān)系,也即一般事物(一般類(lèi))和特殊事物(特殊類(lèi))之間的關(guān)系。
17.實(shí)現(xiàn)(關(guān)系):
是類(lèi)元之間的語(yǔ)義關(guān)系。
18.鏈和鏈屬性:
關(guān)聯(lián)或相互作用表現(xiàn)出不同的類(lèi)的對(duì)象實(shí)例之間的實(shí)際的或概括上的聯(lián)系,稱(chēng)為“鏈”;
19.聚合:
聚合用來(lái)表示事物之間的“整體/部分”關(guān)系,“整體”事物是一個(gè)較大的事物,它是由多個(gè)“部分”事物(較小的事物)組成的。
20.問(wèn)題域:
問(wèn)題域是指特定應(yīng)用系統(tǒng)的應(yīng)用領(lǐng)域,即在現(xiàn)實(shí)世界中由該系統(tǒng)進(jìn)行處理的業(yè)務(wù)范圍。
21.系統(tǒng)責(zé)任:
系統(tǒng)責(zé)任是指系統(tǒng)應(yīng)該具備的職能,通俗地講,即系統(tǒng)除能做什么之外,還應(yīng)該作些什么。
22.消息:
在面向?qū)ο笳Z(yǔ)境中,消息定義為向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求(要求對(duì)象執(zhí)行它其中的一個(gè)操作的請(qǐng)求)。
23.交互:
交互是發(fā)生在對(duì)象之間或?qū)ο髢?nèi)部的消息傳遞行為,它由在特定語(yǔ)境中共同完成一定任務(wù)的一組對(duì)象之間交換的消息組成。
24.事件:
25.事件流:
26.狀態(tài):
27.狀態(tài)機(jī):
狀態(tài)機(jī)描述了一個(gè)對(duì)象或一個(gè)交互的生命內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列,即描述其狀態(tài)變遷。
28.封裝:
封裝是對(duì)擁有結(jié)構(gòu)和行為的一個(gè)抽象(對(duì)象)的元素進(jìn)行劃分的過(guò)程,封裝完成抽象的契約接口和對(duì)象實(shí)施的分離。
29.繼承:
特殊類(lèi)擁有一般類(lèi)的全部屬性和服務(wù)(操作),稱(chēng)作特殊類(lèi)對(duì)一般類(lèi)的繼承。多態(tài):
同一屬性或操作在一般類(lèi)和各個(gè)特殊類(lèi)中具有不同的意義。
31.抽象:
即指通過(guò)思考進(jìn)行分離的行為(CED).思考就是對(duì)事物性質(zhì)進(jìn)行觀察與分析,而分離則是對(duì)分析結(jié)果中的一些細(xì)節(jié)的剝離,從而得到事物的最基本的性質(zhì)。
32.角色:
角色是關(guān)聯(lián)中(靠近它的)一端的類(lèi)對(duì)另一端的類(lèi)呈現(xiàn)的職責(zé),可以說(shuō)角色是關(guān)聯(lián)的作用者。
33.限定詞(修飾關(guān)聯(lián))
限定詞是關(guān)聯(lián)的一個(gè)特定的屬性(而不是工作臺(tái)或工件的屬性,其實(shí)該屬性與工作臺(tái)及工件都有關(guān),是使二者發(fā)生關(guān)聯(lián)的數(shù)據(jù)之一),它的值劃分了通過(guò)一個(gè)關(guān)聯(lián)與一個(gè)對(duì)象相關(guān)的對(duì)象集。
34.UML的規(guī)則(命名、范圍、可見(jiàn)性等):
1)命名:給事物、關(guān)系和圖等建模元素命名。
2)范圍:給一個(gè)名稱(chēng)以特定含義的語(yǔ)境。
3)可見(jiàn)性:表示元素的名稱(chēng)如何被其他元素看到和使用。
4)完整性:保證事物正確、一致地相互聯(lián)系,體現(xiàn)事物之間的合理性和一致性。5)執(zhí)行:運(yùn)行或模擬動(dòng)態(tài)模型的含義是什么。
35.UML的公共機(jī)制(詳述、修飾、擴(kuò)展機(jī)制(構(gòu)造型、標(biāo)記值、約束)):
1)詳述:詳述是對(duì)UML圖形符號(hào)的補(bǔ)充,對(duì)圖形表示法的每一部分(圖形符號(hào))都可以附上一個(gè)詳述,該詳述提供了對(duì)構(gòu)造塊的語(yǔ)法和語(yǔ)義的文字?jǐn)⑹觥?/p>
2)修飾:修飾是附加到元素的基本表示法上的文字或圖形項(xiàng),用于對(duì)元素規(guī)格說(shuō)明的細(xì)節(jié)進(jìn)行可視化。
3)通用劃分:方法一:對(duì)類(lèi)和對(duì)象的劃分;方法二:接口和實(shí)現(xiàn)的分離。
4)擴(kuò)展機(jī)制 :三種機(jī)制來(lái)擴(kuò)展語(yǔ)言的語(yǔ)法和語(yǔ)義,分別是:構(gòu)造型(表示新的建模元素)、標(biāo)記值(表示新的額建模元素屬性)和約束(表示新的建模元素語(yǔ)言)。
二、思考題
1.為什么應(yīng)用對(duì)象技術(shù)可以改變軟件制造(生產(chǎn))方式?
2.試述建模的重要性,為什么建??梢越档拖到y(tǒng)實(shí)現(xiàn)的復(fù)雜度。
3.為什么面向?qū)ο蠓椒茌^好地管理復(fù)雜性并增強(qiáng)伸縮性。
4.何謂“軟件復(fù)用”,為什么說(shuō)面向?qū)ο蠹夹g(shù)對(duì)“軟件復(fù)用”提供了卓有成效的支持?
5.“用況驅(qū)動(dòng)的、迭代式的、增量”的開(kāi)發(fā)方法的要點(diǎn)、優(yōu)點(diǎn)、時(shí)間盒。
6.UML的三大建模元素(事物、關(guān)系、圖)、各種結(jié)構(gòu)事物的定義和用途。
7.“計(jì)劃和細(xì)化”階段的主要工作和主要活動(dòng)。
8.“構(gòu)造階段”的主要工作和主要活動(dòng)。
9.面向?qū)ο笥心男┮??為什么說(shuō)“封裝”是其最重要的要素?
10.何謂鏈屬性,試述鏈屬性不應(yīng)置入關(guān)聯(lián)兩端的某一對(duì)象類(lèi)中作為其屬性的理由,請(qǐng)舉例說(shuō)明之。
11.系統(tǒng)分析階段如何識(shí)別類(lèi)和排除虛假類(lèi)?(分別簡(jiǎn)述語(yǔ)法分析法和現(xiàn)實(shí)分析法的要點(diǎn))。
12.系統(tǒng)分析階段如何識(shí)別關(guān)聯(lián)和排除虛假關(guān)聯(lián)?(分別簡(jiǎn)述語(yǔ)法分析法和現(xiàn)實(shí)分析法的要點(diǎn))。
13.簡(jiǎn)述描述類(lèi)的基本特征(名稱(chēng)、屬性等)并舉例說(shuō)明之。
14.軟件維護(hù)的主要工作是什么,為什么說(shuō)每一次維護(hù)可能又是一個(gè)較小的應(yīng)用開(kāi)發(fā)過(guò)程?
15.為什么“繼承”可以簡(jiǎn)化對(duì)問(wèn)題的認(rèn)識(shí)?
16.面向?qū)ο笙到y(tǒng)中通常存在著持久對(duì)象、主動(dòng)對(duì)象、和被動(dòng)對(duì)象等三種對(duì)象,給出這三種對(duì)象的定義,并舉例說(shuō)明之。
17.解釋“多態(tài)性”的基本含義,為什么“多態(tài)性”的實(shí)際應(yīng)用必須建立在類(lèi)的一般化層次結(jié)構(gòu)上?
18.列舉引起需求變化的主要因素,面向?qū)ο蠓椒ㄈ绾螒?yīng)對(duì)需求的不斷變化?
19.何謂“多態(tài)性”,試舉例說(shuō)明“多態(tài)性”的應(yīng)用。
20.簡(jiǎn)述軟件維護(hù)的主要工作,并說(shuō)明其重要性。
三、設(shè)計(jì)部分
1.根據(jù)給定的領(lǐng)域和場(chǎng)景寫(xiě)出問(wèn)題陳述、建立用況模型,針對(duì)指定的用況,寫(xiě)出事件流。
2.設(shè)計(jì)為詞匯建模的類(lèi)圖、為數(shù)據(jù)庫(kù)建模的類(lèi)圖、為簡(jiǎn)單協(xié)作建模的類(lèi)圖。
3.按時(shí)間順序?qū)刂屏鹘P偷牟襟E,以指定用況作為交互語(yǔ)境設(shè)計(jì)順序圖。
4.按對(duì)象組織對(duì)控制流建模型的步驟,以指定用況作為交互語(yǔ)境設(shè)計(jì)協(xié)作圖。
5.對(duì)對(duì)象的生命期建模的策略和步驟,為指定類(lèi)設(shè)計(jì)狀態(tài)圖。
第三篇:9、軟件工程面向?qū)ο蠓椒▽W(xué)引論總結(jié)
1. 面向?qū)ο蠓椒▽W(xué)的定義和對(duì)象方法學(xué)的要點(diǎn)。
面向?qū)ο蠓椒ò褦?shù)據(jù)和行為看成同等重要,它是一種以數(shù)據(jù)為主線(xiàn),把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來(lái)的方法。面向?qū)ο蠓椒▽W(xué)具有下述4個(gè)要點(diǎn)。
(1)把對(duì)象(object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。面向?qū)ο蟪绦蚴怯蓪?duì)象組成的,程序中任何元素都是對(duì)象,復(fù)雜對(duì)象由比較簡(jiǎn)單的對(duì)象組合而成。
(2)把所有對(duì)象都劃分成類(lèi)(class)。每個(gè)類(lèi)都定義了一組數(shù)據(jù)和一組操作,類(lèi)是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。
(3)按照父類(lèi)(或稱(chēng)為基類(lèi))與子類(lèi)(或稱(chēng)為派生類(lèi))的關(guān)系,把若干個(gè)相關(guān)類(lèi)組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱(chēng)為類(lèi)等級(jí))。在類(lèi)等級(jí)中,下層派生類(lèi)自動(dòng)擁有上層基類(lèi)中定義的數(shù)據(jù)和操作,這種現(xiàn)象稱(chēng)為繼承。
(4)對(duì)象彼此間僅能通過(guò)發(fā)送消息互相聯(lián)系。
也就是說(shuō),對(duì)象的所有私有信息都被封裝在該對(duì)象內(nèi),不能從外界直接訪問(wèn),這就是通常所說(shuō)的封裝性。
2. 面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)是:(1)與人類(lèi)習(xí)慣的思維方法一致(2)穩(wěn)定性好(3)可重用性好
(4)較易開(kāi)發(fā)大型軟件產(chǎn)品(5)可維護(hù)性好
3. 對(duì)象的概念,對(duì)象的特點(diǎn)?
對(duì)象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個(gè)封裝體有可以惟一地標(biāo)識(shí)它的名字,而且向外界提供一組服務(wù)(即公有的操作)。特點(diǎn):
① 以數(shù)據(jù)為中心。不設(shè)置與數(shù)據(jù)無(wú)關(guān)的操作;
② Object主動(dòng)處理而不被動(dòng)地等待被處理,外部只能通過(guò)message請(qǐng)求操作;
③ 實(shí)現(xiàn)了數(shù)據(jù)封裝。具有黑盒性:外部操作時(shí),無(wú)須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法; ④ 具有并行性:不同object各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過(guò)傳遞message完成通信;
⑤ 模塊獨(dú)立性好:內(nèi)聚強(qiáng)(①)、耦合松(③ ④)
4. 類(lèi)、實(shí)例、消息、方法、屬性、封裝、繼承、多態(tài)性、重載的定義。
類(lèi):是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。
實(shí)例:是由某個(gè)特定的類(lèi)所描述的一個(gè)具體的對(duì)象。
消息:是要求某個(gè)對(duì)象執(zhí)行在定義它的那個(gè)類(lèi)中所定義的某個(gè)操作的規(guī)格說(shuō)明。
方法:是對(duì)象所能執(zhí)行的操作,也就是類(lèi)中所定義的服務(wù)。
屬性:是類(lèi)中所定義的數(shù)據(jù)。
5. 模型的概念,面向?qū)ο蠼5母拍?。要建立哪些模型?/p>
所謂模型,就是為了理解事物而對(duì)事物做出的一種抽象,是對(duì)事物一種無(wú)歧義的書(shū)面描述。建立三種模型:
① 描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對(duì)象模型(object model).② 描述系統(tǒng)控制結(jié)構(gòu)的動(dòng)態(tài)模型(dynamic model).③ 描述系統(tǒng)功能的功能模型(function model).6. 對(duì)象模型是表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的數(shù)據(jù)性質(zhì)。類(lèi)圖是描述類(lèi)及類(lèi)與類(lèi)之間的靜態(tài)關(guān)系。包括定義類(lèi)、定義屬性、定義服務(wù)。7. 表示關(guān)系的符號(hào):類(lèi)與類(lèi)之間通常有關(guān)聯(lián)(Association)、泛化(Generalization)、聚合(Aggregation)、組合(Composition)、依賴(lài)(Dependency)等關(guān)系。
8. 動(dòng)態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對(duì)象模型中的對(duì)象的合法變化序列
關(guān)聯(lián) 泛化 聚合 組合 依賴(lài)
9.Association
Generalization
Aggregation
Composition
Dependency
動(dòng)態(tài)模型三要素:
① 事件(event):引發(fā) object 狀態(tài)改變的控制信息(瞬時(shí))。② 狀態(tài)(status):即 object 的 attributes 所處的情形(可持續(xù))。③ 行為(action): Object 要達(dá)到某種 status 所做的操作(耗時(shí))。10.功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,因此更直接地反映了用戶(hù)對(duì)目標(biāo)系統(tǒng)的需求。功能模型由一組數(shù)據(jù)流圖組成。
在面向?qū)ο蠓椒▽W(xué)中,數(shù)據(jù)流圖遠(yuǎn)不如在結(jié)構(gòu)分析、設(shè)計(jì)方法中那樣重要。11.UML提供的用例圖也是進(jìn)行需求分析和建立功能模型的強(qiáng)有力工具。在UML中把用用例圖建立起來(lái)的系統(tǒng)模型稱(chēng)為用例模型。
用例模型描述的是外部行為者(actor)所理解的系統(tǒng)功能。用例模型的建立是系統(tǒng)開(kāi)發(fā)者和用戶(hù)反復(fù)討論的結(jié)果,它描述了開(kāi)發(fā)者和用戶(hù)對(duì)需求規(guī)格所達(dá)成的共識(shí)。
第四篇:面向?qū)ο蟪绦蛟O(shè)計(jì)教程 答案
面向?qū)ο蟪绦蛟O(shè)計(jì)教程(C++語(yǔ)言描述)題解與課程設(shè)計(jì)指導(dǎo)
第1章
面向?qū)ο蟪绦蛟O(shè)計(jì)概論
一、名詞解釋 抽象封裝消息 【問(wèn)題解答】
面向?qū)ο蠓椒ㄖ械某橄笫侵笇?duì)具體問(wèn)題(對(duì)象)進(jìn)行概括,抽出一類(lèi)對(duì)象的公共性質(zhì)并加以描述的過(guò)程。
面向?qū)ο蠓椒ㄖ械姆庋b就是把抽象出來(lái)的對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。
消息是面向?qū)ο蟪绦蛟O(shè)計(jì)用來(lái)描述對(duì)象之間通信的機(jī)制。一個(gè)消息就是一個(gè)對(duì)象要求另一個(gè)對(duì)象實(shí)施某種操作的一個(gè)請(qǐng)求。
二、填空題(1)目前有面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)方法和面向?qū)ο蟮某绦蛟O(shè)計(jì)方法兩種重要的程序設(shè)計(jì)方法。
(2)結(jié)構(gòu)化程序設(shè)計(jì)方法中的模塊由順序、選擇和循環(huán)3種基本結(jié)構(gòu)組成。(3)在結(jié)構(gòu)化程序設(shè)計(jì)方法中,程序可表示為程序=數(shù)據(jù)結(jié)構(gòu)+算法; 而面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,程序可表示為程序=對(duì)象+消息。(4)結(jié)構(gòu)化程序設(shè)計(jì)方法中的基本模塊是過(guò)程; 而面向?qū)ο蟪绦蛟O(shè)計(jì)方法中的基本模塊是類(lèi)。
(5)面向?qū)ο蟪绦蛟O(shè)計(jì)方法具有抽象性、封裝性、繼承性和多態(tài)性等特點(diǎn)。
三、選擇題(至少選一個(gè),可以多選)
(1)面向?qū)ο蟪绦蛟O(shè)計(jì)著重于(B)的設(shè)計(jì)。A.對(duì)象B.類(lèi)C.算法D.數(shù)據(jù)(2)面向?qū)ο蟪绦蛟O(shè)計(jì)中,把對(duì)象的屬性和行為組織在同一個(gè)模塊內(nèi)的機(jī)制叫做(C)。
A.抽象 B.繼承 C.封裝 D.多態(tài)
(3)在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類(lèi)通過(guò)(D)與外界發(fā)生關(guān)系。A.對(duì)象 B.類(lèi) C.消息 D.接口
(4)面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象與對(duì)象之間的通信機(jī)制是(C)。A.對(duì)象 B.類(lèi) C.消息 D.接口
(5)關(guān)于C++與C語(yǔ)言的關(guān)系的描述中,(D)是錯(cuò)誤的。A.C語(yǔ)言是C++的一個(gè)子集 B.C語(yǔ)言與C++是兼容的
C.C++對(duì)C語(yǔ)言進(jìn)行了一些改進(jìn) D.C++和C語(yǔ)言都是面向?qū)ο蟮?/p>
【結(jié)果分析】
C語(yǔ)言是面向過(guò)程的。C++語(yǔ)言是一種經(jīng)過(guò)改進(jìn)的更為優(yōu)化的C語(yǔ)言,是一種混合型語(yǔ)言,既面向過(guò)程也面向?qū)ο蟆?/p>
(6)面向?qū)ο蟮某绦蛟O(shè)計(jì)將數(shù)據(jù)結(jié)構(gòu)與(A)放在一起,作為一個(gè)相互依存、不可分割的整體來(lái)處理。A.算法 B.信息 C.數(shù)據(jù)隱藏 D.數(shù)據(jù)抽象(7)下面(A)不是面向?qū)ο笙到y(tǒng)所包含的要素。
A.重載 B.對(duì)象 C.類(lèi) D.繼承 【結(jié)果分析】
面向?qū)ο?對(duì)象+類(lèi)+繼承+消息+多態(tài)(8)下面說(shuō)法正確的是(BC)。
A.將數(shù)據(jù)結(jié)構(gòu)和算法置于同一個(gè)函數(shù)內(nèi),即為數(shù)據(jù)封裝 B.一個(gè)類(lèi)通過(guò)繼承可以獲得另一個(gè)類(lèi)的特性
C.面向?qū)ο笠蟪绦騿T集中于事物的本質(zhì)特征,用抽象的觀點(diǎn)看待程序 D.同一消息為不同的對(duì)象接受時(shí),產(chǎn)生的行為是一樣的,這稱(chēng)為一致性 【結(jié)果分析】
面向?qū)ο蟪绦蛟O(shè)計(jì)方法具有抽象性、封裝性、繼承性和多態(tài)性等特點(diǎn)。將數(shù)據(jù)結(jié)構(gòu)和算法置于同一個(gè)類(lèi)內(nèi),即為數(shù)據(jù)封裝。同一消息為不同的對(duì)象接受時(shí),產(chǎn)生的行為可能是不一樣的,這稱(chēng)為多態(tài)性。(9)下面說(shuō)法正確的是(AD)。
A.對(duì)象是計(jì)算機(jī)內(nèi)存中的一塊區(qū)域,它可以存放代碼和數(shù)據(jù) B.對(duì)象實(shí)際是功能相對(duì)獨(dú)立的一段程序
C.各個(gè)對(duì)象間的數(shù)據(jù)可以共享是對(duì)象的一大優(yōu)點(diǎn)
D.在面向?qū)ο蟮某绦蛑校瑢?duì)象之間只能通過(guò)消息相互通信 【結(jié)果分析】
對(duì)象是計(jì)算機(jī)內(nèi)存中的一塊區(qū)域。在對(duì)象中,不但存有數(shù)據(jù),而且存有代碼,使得每個(gè)對(duì)象在功能上相互之間保持相對(duì)獨(dú)立。對(duì)象之間存在各種聯(lián)系,但它們之間只能通過(guò)消息進(jìn)行通信。
四、判斷題
(1)在高級(jí)程序設(shè)計(jì)語(yǔ)言中,一般用類(lèi)來(lái)實(shí)現(xiàn)對(duì)象,類(lèi)是具有相同屬性和行為的一組對(duì)象的集合,它是創(chuàng)建對(duì)象的模板。(√)
(2)C++語(yǔ)言只支持面向?qū)ο蠹夹g(shù)的抽象性、封裝性、繼承性等特性,而不支持多態(tài)性。(×)【結(jié)果分析】
C++語(yǔ)言不僅支持面向?qū)ο蠹夹g(shù)的抽象性、封裝性、繼承性等特性,而且支持多態(tài)性。
(3)面向?qū)ο蟪绦蛟O(shè)計(jì)中的消息應(yīng)該包含“如何做”的信息。(×)【結(jié)果分析】
消息是面向?qū)ο蟪绦蛟O(shè)計(jì)用來(lái)描述對(duì)象之間通信的機(jī)制。向?qū)ο蟆鞍l(fā)送消息”只需告訴對(duì)象做什么,對(duì)象根據(jù)這個(gè)消息決定如何做。(4)一個(gè)消息只能產(chǎn)生特定的響應(yīng)效果。(×)【結(jié)果分析】
當(dāng)一個(gè)對(duì)象發(fā)出消息時(shí),由于接收對(duì)象的類(lèi)型可能不同,所以,它們可能做出不同的反應(yīng)。這樣,一個(gè)消息可以產(chǎn)生不同的響應(yīng)效果,這種現(xiàn)象叫做多態(tài)。(5)類(lèi)的設(shè)計(jì)和類(lèi)的繼承機(jī)制實(shí)現(xiàn)了軟件模塊的可重用性。(√)(6)C++語(yǔ)言和Java語(yǔ)言均不是一個(gè)純正的面向?qū)ο蟮某绦蛟O(shè)計(jì)的語(yǔ)言。(×)【結(jié)果分析】
Java語(yǔ)言是一個(gè)純正的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。(7)學(xué)習(xí)C++語(yǔ)言是學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計(jì)方法的唯一途徑。(×)【結(jié)果分析】
程序設(shè)計(jì)方法是獨(dú)立于具體程序設(shè)計(jì)語(yǔ)言的一種技術(shù),學(xué)習(xí)C++語(yǔ)言是學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)方法的重要途徑之一。
(8)在C++語(yǔ)言中,類(lèi)是支持?jǐn)?shù)據(jù)封裝的工具。(√)
五、簡(jiǎn)答題
(1)什么是結(jié)構(gòu)化程序設(shè)計(jì)方法?它有哪些優(yōu)點(diǎn)和缺點(diǎn)? 【問(wèn)題解答】
結(jié)構(gòu)化程序設(shè)計(jì)方法著眼于系統(tǒng)要實(shí)現(xiàn)的功能,從系統(tǒng)的輸入輸出出發(fā),分析系統(tǒng)要做哪些事情,進(jìn)而考慮如何做這些事情,自頂向下地對(duì)系統(tǒng)的功能進(jìn)行分解,來(lái)建立系統(tǒng)的功能結(jié)構(gòu)和相應(yīng)的程序模塊結(jié)構(gòu),有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開(kāi)發(fā)和維護(hù)。隨著程序規(guī)模與復(fù)雜性的增長(zhǎng),這種面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)方法存在明顯的不足之處。首先是數(shù)據(jù)安全性問(wèn)題。由于數(shù)據(jù)被每個(gè)模塊所共用,因此是不安全的,一旦出錯(cuò),很難查明原因。其次是可維護(hù)性及可重用性差。它把數(shù)據(jù)結(jié)構(gòu)和算法分離為相互獨(dú)立的實(shí)體,一旦數(shù)據(jù)結(jié)構(gòu)需要改變時(shí),常常要涉及整個(gè)程序,修改工作量極大并容易產(chǎn)生新的錯(cuò)誤。每一種相對(duì)于老問(wèn)題的新方法都要帶來(lái)額外的開(kāi)銷(xiāo)。另外,圖形用戶(hù)界面的應(yīng)用程序,很難用過(guò)程來(lái)描述和實(shí)現(xiàn),開(kāi)發(fā)和維護(hù)也都很困難。
(2)什么是面向?qū)ο蟪绦蛟O(shè)計(jì)方法?它有哪些優(yōu)點(diǎn)? 【問(wèn)題解答】
面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中,將程序設(shè)計(jì)為一組相互協(xié)作的對(duì)象而不是一組相互協(xié)作的函數(shù)。在程序中,屬性用數(shù)據(jù)表示,用來(lái)描述對(duì)象靜態(tài)特征; 行為用程序代碼實(shí)現(xiàn),用來(lái)描述對(duì)象動(dòng)態(tài)特征??梢?jiàn),在面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中,對(duì)象是數(shù)據(jù)結(jié)構(gòu)和算法的封裝體。對(duì)象之間存在各種聯(lián)系,它們之間通過(guò)消息進(jìn)行通信。程序可表示為:
程序=對(duì)象+消息
在面向?qū)ο蟪绦蛟O(shè)計(jì)中應(yīng)著重于類(lèi)的設(shè)計(jì)。類(lèi)正是面向?qū)ο笳Z(yǔ)言的基本程序模塊,通過(guò)類(lèi)的設(shè)計(jì)來(lái)完成實(shí)體的建模任務(wù)。類(lèi)通過(guò)一個(gè)簡(jiǎn)單的外部接口與外界發(fā)生關(guān)系。一個(gè)類(lèi)中的操作不會(huì)處理到另一個(gè)類(lèi)中的數(shù)據(jù),這樣程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。程序的執(zhí)行取決于事件發(fā)生的順序,由順序產(chǎn)生的消息來(lái)驅(qū)動(dòng)程序的執(zhí)行。不必預(yù)先確定消息產(chǎn)生的順序,更符合客觀世界的實(shí)際。并且面向?qū)ο蟪绦蛟O(shè)計(jì)方法提供了軟件重用、解決大問(wèn)題和復(fù)雜問(wèn)題的有效途徑,具有抽象性、封裝性、繼承性和多態(tài)性等特點(diǎn)。
(3)結(jié)構(gòu)化程序設(shè)計(jì)方法與面向?qū)ο蟪绦蛟O(shè)計(jì)方法在對(duì)待數(shù)據(jù)結(jié)構(gòu)和算法關(guān)系上有 什么不同? 【問(wèn)題解答】
結(jié)構(gòu)化程序設(shè)計(jì)方法中,把數(shù)據(jù)結(jié)構(gòu)和算法分離為相互獨(dú)立的實(shí)體; 而在面向?qū)ο蟪绦蛟O(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)和算法封裝在一起,結(jié)合成一個(gè)獨(dú)立的單位,即對(duì)象,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。對(duì)象的私有屬性只能由這個(gè)對(duì)象的行為來(lái)讀取和修改,與外部的聯(lián)系通過(guò)公有行為充當(dāng)外部接口。第 2 章
從C到C++
面向?qū)ο蟪绦蛟O(shè)計(jì)教程(C++語(yǔ)言描述)題解與課程設(shè)計(jì)指導(dǎo)
第2章 從C到 C++
一、名詞解釋
引用內(nèi)聯(lián)函數(shù)重載函數(shù) 【問(wèn)題解答】
所謂引用就是給對(duì)象取一個(gè)別名,使用該別名可以存取該對(duì)象。換句話(huà)說(shuō)是使新對(duì)象和原對(duì)象共用一個(gè)地址。
內(nèi)聯(lián)函數(shù)是使用inline關(guān)鍵字聲明的函數(shù)。
重載函數(shù)指在同一個(gè)作用域內(nèi)名字相同而參數(shù)不同的函數(shù)。重載函數(shù)通常用來(lái)對(duì)具有相似行為而數(shù)據(jù)類(lèi)型或數(shù)據(jù)個(gè)數(shù)不同的操作提供—個(gè)通用的名稱(chēng)。
二、填空題
(1)一般情況下,用C++語(yǔ)言編寫(xiě)的程序是由函數(shù)加上類(lèi)組成的。(2)C++有兩種注釋符號(hào),一種是//,另一種是 /*??*/。
(3)使用C++風(fēng)格的輸入輸出,在程序中必須包含頭文件“iostream”。(4)cin是預(yù)定義的標(biāo)準(zhǔn)輸入流對(duì)象,>>是輸入操作符,也稱(chēng)提取運(yùn)算符。(5)cout是預(yù)定義的標(biāo)準(zhǔn)輸出流對(duì)象,<<是輸出操作符,也稱(chēng)插入運(yùn)算符。(6)指針的值是它所指向那個(gè)對(duì)象的地址值。指針的類(lèi)型是它所指向?qū)ο蟮念?lèi)型。指針的內(nèi)容便是它所指向?qū)ο蟮闹怠?/p>
(7)C++使用運(yùn)算符&來(lái)定義一個(gè)引用,對(duì)引用的存取都是對(duì)它所引用的對(duì)象的存取。(8)當(dāng)一個(gè)函數(shù)調(diào)用出現(xiàn)在函數(shù)定義之前時(shí),必須先用函數(shù)原型對(duì)函數(shù)進(jìn)行聲明。
(9)C++有值傳遞和引用傳遞兩種參數(shù)傳遞機(jī)制。(10)使用關(guān)鍵字inline聲明的函數(shù)稱(chēng)為內(nèi)聯(lián)函數(shù)。(11)運(yùn)算符new用于進(jìn)行動(dòng)態(tài)內(nèi)存分配,運(yùn)算符delete用于釋放動(dòng)態(tài)分配的內(nèi)存。
(12)下面程序的輸出結(jié)果為x=10,y=10;
x=100,y=100。
#include
using namespace std;
int main()
{
int x=10,&y=x;
cout<<“x=”< int *p=&y; *p=100; cout<<“x=”< return 0; } 三、選擇題(至少選一個(gè),可以多選) (1)在整型指針變量p2、p3的定義中,錯(cuò)誤的是(A)。A.int p1,*p2,p3;B.int*p2,p1,*p3;C.int p1,*p2=&p1,*p3;D.int*p2,p1,*p3=&p1;【結(jié)果分析】 指針定義的具體格式如下所示: <類(lèi)型> *<指針名1>,*<指針名2>,?; (2)若有定義“double xx=3.14,*pp=&xx; ”,則*pp等價(jià)于(A.&xxB.*xxC.3.14D.xx 【結(jié)果分析】 pp指向xx所在的內(nèi)存單元,這樣*pp和xx等價(jià)。(3)下面對(duì)引用的描述中(C)是錯(cuò)誤的。A.引用是某個(gè)變量或?qū)ο蟮膭e名 B.建立引用時(shí),要對(duì)它初始化)。C C.對(duì)引用初始化可以使用任意類(lèi)型的變量 D.引用與其代表的對(duì)象具有相同的地址 【結(jié)果分析】 所謂引用就是給對(duì)象取一個(gè)別名,使用該別名可以存取該對(duì)象,所以對(duì)引用初始化必須使用同類(lèi)型的變量。 (4)函數(shù)沒(méi)有返回值的時(shí)候,應(yīng)該選擇(A)的函數(shù)類(lèi)型。A.void B.int C.不確定 D.float(5)在函數(shù)的定義格式中,下面各組成部分中,(D)是可以省略的。A.函數(shù)名 B.函數(shù)體 C.返回值類(lèi)型 D.函數(shù)參數(shù) 【結(jié)果分析】 函數(shù)的定義可以缺省形式參數(shù),此時(shí)稱(chēng)為無(wú)參函數(shù)。 (6)對(duì)重載的函數(shù)來(lái)說(shuō),下面敘述不正確的是(D)。A.參數(shù)的類(lèi)型不同 B.參數(shù)的順序不同 C.參數(shù)的個(gè)數(shù)不同 D.參數(shù)的個(gè)數(shù)、類(lèi)型、順序都相同,但函數(shù)的返回值類(lèi)型不同 【結(jié)果分析】 對(duì)重載的函數(shù)來(lái)說(shuō),編譯系統(tǒng)將根據(jù)函數(shù)參數(shù)的類(lèi)型和個(gè)數(shù)來(lái)判斷使用哪一個(gè)函數(shù),所以重載函數(shù)參數(shù)的個(gè)數(shù)、類(lèi)型、順序不能都相同。 (7)下列有關(guān)設(shè)置函數(shù)參數(shù)默認(rèn)值的描述中,(D)是正確的。A.對(duì)設(shè)置函數(shù)參數(shù)默認(rèn)值的順序沒(méi)有任何規(guī)定 B.函數(shù)具有一個(gè)參數(shù)時(shí)不能設(shè)置默認(rèn)值 C.默認(rèn)參數(shù)要設(shè)置在函數(shù)的原型中,而不能設(shè)置在函數(shù)的定義語(yǔ)句中 D.設(shè)置默認(rèn)參數(shù)可使用表達(dá)式,但表達(dá)式中不可用局部變量 【結(jié)果分析】 在C++中,在函數(shù)原型中可以為一個(gè)或多個(gè)參數(shù)指定默認(rèn)值。對(duì)函數(shù)參數(shù)設(shè)置默認(rèn)值要注意以下幾點(diǎn)?!羧魶](méi)有聲明函數(shù)原型,參數(shù)的默認(rèn)值可在函數(shù)定義的頭部進(jìn)行設(shè)置,否則必須在函數(shù)原型中進(jìn)行設(shè)置。 ◆在一個(gè)指定了默認(rèn)值的參數(shù)右邊不能出現(xiàn)沒(méi)有指定默認(rèn)值的參數(shù)。◆設(shè)置默認(rèn)參數(shù)可使用表達(dá)式,但表達(dá)式中不可用局部變量。(8)下面說(shuō)法正確的是(BC)。A.所有的函數(shù)都可以說(shuō)明為內(nèi)聯(lián)函數(shù) B.具有循環(huán)語(yǔ)句、switch語(yǔ)句的函數(shù)不能說(shuō)明為內(nèi)聯(lián)函數(shù) C.使用內(nèi)聯(lián)函數(shù),可以加快程序執(zhí)行的速度,但會(huì)增加程序代碼的大小 D.使用內(nèi)聯(lián)函數(shù),可以減小程序代碼大小,但使程序執(zhí)行的速度減慢 【結(jié)果分析】 內(nèi)聯(lián)函數(shù)主要是解決程序的運(yùn)行效率問(wèn)題。在程序編譯時(shí),編譯系統(tǒng)將程序中出現(xiàn)內(nèi)聯(lián)函數(shù)調(diào)用的地方用函數(shù)體進(jìn)行替換,進(jìn)而減少了程序運(yùn)行的時(shí)間,但會(huì)增加程序代碼的大小。它是以空間換取時(shí)間,因此內(nèi)聯(lián)函數(shù)適用于功能不太復(fù)雜,但要求被頻繁調(diào)用的函數(shù)。 (9)一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,應(yīng)選用(A)。A.內(nèi)聯(lián)函數(shù) B.重載函數(shù) C.遞歸函數(shù) D.嵌套函數(shù)(10)C++對(duì)C語(yǔ)言做了很多改進(jìn),下列描述中使得C語(yǔ)言發(fā)生了質(zhì)變,即從面向過(guò)程變成面向?qū)ο蟮氖牵―)。A.增加了一些新的運(yùn)算符 B.允許函數(shù)重載,并允許設(shè)置默認(rèn)參數(shù) C.規(guī)定函數(shù)說(shuō)明必須用原型 D.引進(jìn)了類(lèi)和對(duì)象的概念 【結(jié)果分析】 面向?qū)ο?對(duì)象+類(lèi)+繼承+消息+多態(tài) 四、判斷題 (1)C++程序中,不得使用沒(méi)有定義或說(shuō)明的變量。(√)(2)使用const說(shuō)明常量時(shí),可以不必指出類(lèi)型。(×)【結(jié)果分析】 如果用const 定義的是一個(gè)整型常量,則類(lèi)型說(shuō)明符int可以省略。(3)引用被創(chuàng)建時(shí)可以用任意變量進(jìn)行初始化。(×)【結(jié)果分析】 對(duì)引用初始化必須使用同類(lèi)型的變量。 (4)一個(gè)返回引用的調(diào)用函數(shù)可以作為左值。(√)(5)函數(shù)可以沒(méi)有參數(shù),也可以沒(méi)有返回值。(√)(6)沒(méi)有參數(shù)的兩個(gè)函數(shù)是不能重載的。(√)(7)函數(shù)可設(shè)置默認(rèn)參數(shù),但不允許將一個(gè)函數(shù)的所有參數(shù)都設(shè)置為默認(rèn)參數(shù)。(×) 【結(jié)果分析】 函數(shù)可設(shè)置默認(rèn)參數(shù),且允許將一個(gè)函數(shù)的所有參數(shù)都設(shè)置為默認(rèn)參數(shù)。(8)運(yùn)算符new分配的空間由運(yùn)算符delete釋放。(√) 五、簡(jiǎn)答題 (1)名字空間的用途是什么? 【問(wèn)題解答】 名字空間用來(lái)防止命名的沖突。(2)引用有何用處? 【問(wèn)題解答】 除了獨(dú)立引用外,在C++程序中,引用的主要用途是用作函數(shù)參數(shù)和函數(shù)的返回值。 (3)比較值調(diào)用和引用調(diào)用的相同點(diǎn)與不同點(diǎn)。【問(wèn)題解答】 在值調(diào)用機(jī)制中,作為實(shí)參的表達(dá)式的值被復(fù)制到由對(duì)應(yīng)的形參名所標(biāo)識(shí)的一個(gè)對(duì)象中,作為形參的初始值。函數(shù)體對(duì)形參的訪問(wèn)、修改都是在這個(gè)標(biāo)識(shí)對(duì)象上操作的,與實(shí)參無(wú)關(guān),即數(shù)據(jù)的傳遞是單向的。 使用引用作函數(shù)的形參時(shí),調(diào)用函數(shù)的實(shí)參要用變量名。實(shí)參傳遞給形參,相當(dāng)于在被調(diào)用函數(shù)中使用了實(shí)參的別名。于是,在被調(diào)用函數(shù)中對(duì)形參的操作實(shí)質(zhì)是對(duì)實(shí)參的直接操作,即數(shù)據(jù)的傳遞是雙向的。(4)內(nèi)聯(lián)函數(shù)有什么作用?它有哪些特點(diǎn)? 【問(wèn)題解答】 內(nèi)聯(lián)函數(shù)是使用inline關(guān)鍵字聲明的函數(shù)。在程序編譯時(shí),編譯系統(tǒng)將程序中出現(xiàn)內(nèi)聯(lián)函數(shù)調(diào)用的地方用函數(shù)體進(jìn)行替換,進(jìn)而減少了程序運(yùn)行的時(shí)間。使用內(nèi)聯(lián)函數(shù)應(yīng)注意以下幾點(diǎn)?!暨f歸函數(shù)不能定義為內(nèi)聯(lián)函數(shù)。 ◆內(nèi)聯(lián)函數(shù)一般適合于不含有switch和while等復(fù)雜的結(jié)構(gòu)且只有1~5條語(yǔ)句的小函數(shù),否則編譯系統(tǒng)將該函數(shù)視為普通函數(shù)。 ◆內(nèi)聯(lián)函數(shù)只能先定義后使用,否則編譯系統(tǒng)也將該函數(shù)視為普通函數(shù)。◆對(duì)內(nèi)聯(lián)函數(shù)也不能進(jìn)行異常接口聲明。(5)函數(shù)原型中的參數(shù)名與函數(shù)定義中的參數(shù)名以及函數(shù)調(diào)用中的參數(shù)名必須一致嗎? 【問(wèn)題解答】 不必一致。所有的參數(shù)是根據(jù)位置和類(lèi)型而不是名字來(lái)區(qū)分的。(6)重載函數(shù)時(shí)通過(guò)什么來(lái)區(qū)分? 【問(wèn)題解答】 編譯系統(tǒng)將根據(jù)函數(shù)參數(shù)的類(lèi)型和個(gè)數(shù)來(lái)判斷使用哪一個(gè)函數(shù)。 六、程序分析題(寫(xiě)出程序的輸出結(jié)果,并分析結(jié)果) #include using namespace std; int main() { int num=50; int& ref=num; ref=ref+10; cout<<“num=”< num=num+40; cout<<“ref=”< return 0;} 【輸出結(jié)果】 num=60 ref=100 【問(wèn)題分析】 本題主要考查引用的含義?!窘Y(jié)果分析】 程序首先定義一個(gè)int類(lèi)型的對(duì)象num,并給它賦初始值50。然后又定義了一個(gè)int類(lèi)型的引用ref,并將它和num相聯(lián)系。這樣,無(wú)論是對(duì)num還是對(duì)ref進(jìn)行操作,實(shí)際上都是對(duì)那個(gè)一開(kāi)始放著50的物理單元的內(nèi)容進(jìn)行操作。 七、程序設(shè)計(jì)題 寫(xiě)出一個(gè)完整的C++程序,使用系統(tǒng)函數(shù)pow(x,y)計(jì)算xy的值,注意包含頭文件cmath?!締?wèn)題分析】 本題主要考查簡(jiǎn)單的輸入輸出和標(biāo)準(zhǔn)庫(kù)函數(shù)的調(diào)用方法?!窘忸}思路】 ① 由于要用到系統(tǒng)函數(shù)pow(x,y),所以要包含頭文件cmath。 ② 要計(jì)算xy的值,首先必須知道x和y的值。為了程序的通用性,最好通過(guò)交互的方式輸入x和y的值。【參考程序】 // xt2_1.cpp #include #include using namespace std; int main() { float x,y; cout<<“please input 2 floats to x,y:”; cin>>x>>y; float z=pow(x,y); cout<<“pow(”< return 0;} 【輸出結(jié)果】 please input 2 floats to x,y:3.1 2 pow(3.1,2)=9.61 第 3 章 類(lèi)與對(duì)象 面向?qū)ο蟪绦蛟O(shè)計(jì)教程(C++語(yǔ)言描述)題解與課程設(shè)計(jì)指導(dǎo) 第3章 類(lèi) 與 對(duì) 象 一、填空題(1)類(lèi)定義中關(guān)鍵字private、public和protected以后的成員的訪問(wèn)權(quán)限分別是私有、公有和保護(hù)。如果沒(méi)有使用關(guān)鍵字,則所有成員默認(rèn)定義為private權(quán)限。具有public訪問(wèn)權(quán)限的數(shù)據(jù)成員才能被不屬于該類(lèi)的函數(shù)所直接訪問(wèn)。(2)定義成員函數(shù)時(shí),運(yùn)算符“∷”是作用域運(yùn)算符,“MyClass∷”用于表明其后的成員函數(shù)是在“MyClass類(lèi)”中說(shuō)明的。 (3)在程序運(yùn)行時(shí),通過(guò)為對(duì)象分配內(nèi)存來(lái)創(chuàng)建對(duì)象。在創(chuàng)建對(duì)象時(shí),使用類(lèi)作為樣板,故稱(chēng)對(duì)象為類(lèi)的實(shí)例。 (4)假定Dc是一個(gè)類(lèi),則執(zhí)行“Dc a[10],b(2)”語(yǔ)句時(shí),系統(tǒng)自動(dòng)調(diào)用該類(lèi)構(gòu)造函數(shù)的次數(shù)為11?!窘Y(jié)果分析】 創(chuàng)建10個(gè)數(shù)組元素需調(diào)用構(gòu)造函數(shù)10次,創(chuàng)建對(duì)象b需調(diào)用構(gòu)造函數(shù)1次,所以系統(tǒng)自動(dòng)調(diào)用該類(lèi)構(gòu)造函數(shù)的總次數(shù)為11。 (5)對(duì)于任意一個(gè)類(lèi),析構(gòu)函數(shù)的個(gè)數(shù)最多為1個(gè)。 (6)delete運(yùn)算符通常用于實(shí)現(xiàn)釋放該類(lèi)對(duì)象中指針成員所指向的動(dòng)態(tài)存儲(chǔ)空間的任務(wù)。(7)C++程序的內(nèi)存格局通常分為4個(gè)區(qū): 數(shù)據(jù)區(qū)、代碼區(qū)、棧區(qū)和堆區(qū)。(8)數(shù)據(jù)定義為全局變量,破壞了數(shù)據(jù)的 封裝性; 較好的解決辦法是將所要共享的數(shù)據(jù)定義為類(lèi)的 靜態(tài)成員。 (9)靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)可由 任意訪問(wèn)權(quán)限許可的函數(shù)訪問(wèn)。(10)友元函數(shù)和 友元類(lèi)統(tǒng)稱(chēng)為友元。(11)友元的正確使用能提高程序的效率,但破壞了類(lèi)的封裝性和數(shù)據(jù)的隱蔽性。(12)若需要把一個(gè)類(lèi)A定義為一個(gè)類(lèi)B的友元類(lèi),則應(yīng)在類(lèi)B的定義中加入一條語(yǔ)句: friend class A。 二、選擇題(至少選一個(gè),可以多選)(1)以下不屬于類(lèi)訪問(wèn)權(quán)限的是(B)。A.public B.staticC.protectedD.private 【結(jié)果分析】 類(lèi)的訪問(wèn)權(quán)限有public、protected 和private。(2)有關(guān)類(lèi)的說(shuō)法不正確的是(BC)。A.類(lèi)是一種用戶(hù)自定義的數(shù)據(jù)類(lèi)型 B.只有類(lèi)的成員函數(shù)才能訪問(wèn)類(lèi)的私有數(shù)據(jù)成員 C.在類(lèi)中,如不做權(quán)限說(shuō)明,所有的數(shù)據(jù)成員都是公有的 D.在類(lèi)中,如不做權(quán)限說(shuō)明,所有的數(shù)據(jù)成員都是私有的 【結(jié)果分析】 類(lèi)是一種用戶(hù)自定義的數(shù)據(jù)類(lèi)型,類(lèi)中成員均具有一種訪問(wèn)權(quán)限。關(guān)鍵字public、protected 和private以后的成員的訪問(wèn)權(quán)限分別是公有、保護(hù)和私有的,所有成員默認(rèn)定義為private的。 私有成員是被隱藏的數(shù)據(jù),只有該類(lèi)的成員函數(shù)或友元函數(shù)才可以訪問(wèn)它。(3)在類(lèi)定義的外部,可以被任意函數(shù)訪問(wèn)的成員有(C)。A.所有類(lèi)成員 B.private或protected的類(lèi)成員 C.public的類(lèi)成員 D.public或private的類(lèi)成員 【結(jié)果分析】 類(lèi)是一種用戶(hù)自定義的數(shù)據(jù)類(lèi)型,類(lèi)中成員均具有一種訪問(wèn)權(quán)限。公有成員定義了類(lèi)的外部接口。私有成員是被隱藏的數(shù)據(jù),只有該類(lèi)的成員函數(shù)或友元函數(shù)才可以引用它。保護(hù)成員具有公有成員和私有成員的雙重性質(zhì),可以被該類(lèi)或派生類(lèi)的成員函數(shù)或友元函數(shù)引用??梢?jiàn)在類(lèi)定義的外部,可以被任意函數(shù)訪問(wèn)的成員是public的類(lèi)成員。 (4)關(guān)于類(lèi)和對(duì)象的說(shuō)法(C)是錯(cuò)誤的。A.對(duì)象是類(lèi)的一個(gè)實(shí)例 B.任何一個(gè)對(duì)象只能屬于一個(gè)具體的類(lèi) C.一個(gè)類(lèi)只能有一個(gè)對(duì)象 D.類(lèi)與對(duì)象的關(guān)系和數(shù)據(jù)類(lèi)型與變量的關(guān)系相似 【結(jié)果分析】 C++語(yǔ)言的類(lèi)就是一種用戶(hù)自己定義的數(shù)據(jù)類(lèi)型,類(lèi)和對(duì)象的關(guān)系就相當(dāng)于基本數(shù)據(jù)類(lèi)型與它的變量的關(guān)系,所以任何一個(gè)對(duì)象只能屬于一個(gè)具體的類(lèi),但一個(gè)類(lèi)可以有多個(gè)對(duì)象。(5)設(shè)MClass是一個(gè)類(lèi),dd是它的一個(gè)對(duì)象,pp是指向dd的指針,cc是dd的引用,則對(duì)成員的訪問(wèn),對(duì)象dd可以通過(guò)(B)進(jìn)行,指針pp可以通過(guò)(D)進(jìn)行,引用cc可以通過(guò)(B)進(jìn)行。 A.∷ B..C.& D.->(6)關(guān)于成員函數(shù)的說(shuō)法中不正確的是(C)。A.成員函數(shù)可以無(wú)返回值 B.成員函數(shù)可以重載 C.成員函數(shù)一定是內(nèi)聯(lián)函數(shù) D.成員函數(shù)可以設(shè)定參數(shù)的默認(rèn)值 【結(jié)果分析】 與普通函數(shù)不同的是,成員函數(shù)是屬于某個(gè)類(lèi)的。成員函數(shù)的實(shí)現(xiàn),可以放在類(lèi)體內(nèi),也可以放在類(lèi)體外。在類(lèi)體外實(shí)現(xiàn)的成員函數(shù)不再是內(nèi)聯(lián)函數(shù)。(7)下面對(duì)構(gòu)造函數(shù)的不正確描述是(B)。A.系統(tǒng)可以提供默認(rèn)的構(gòu)造函數(shù) B.構(gòu)造函數(shù)可以有參數(shù),所以也可以有返回值 C.構(gòu)造函數(shù)可以重載 D.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù) 【結(jié)果分析】 構(gòu)造函數(shù)不能指定返回類(lèi)型,即使是void類(lèi)型也不可以,當(dāng)然不可能有返回值。(8)假定A是一個(gè)類(lèi),那么執(zhí)行語(yǔ)句“A a,b(3),*p; ”調(diào)用了(B)次構(gòu)造函數(shù)。 A.1 B.2 C.3 D.4 【結(jié)果分析】 聲明指針是不會(huì)調(diào)用構(gòu)造函數(shù)的。 (9)下面對(duì)析構(gòu)函數(shù)的正確描述是(AC)。A.系統(tǒng)可以提供默認(rèn)的析構(gòu)函數(shù) B.析構(gòu)函數(shù)必須由用戶(hù)定義 C.析構(gòu)函數(shù)沒(méi)有參數(shù) D.析構(gòu)函數(shù)可以設(shè)置默認(rèn)參數(shù) 【結(jié)果分析】 析構(gòu)函數(shù)的作用是在對(duì)象消失時(shí)執(zhí)行一項(xiàng)清理任務(wù)。如果一個(gè)類(lèi)中沒(méi)有定義析構(gòu)函數(shù),系統(tǒng)將自動(dòng)生成一個(gè)默認(rèn)析構(gòu)函數(shù)。析構(gòu)函數(shù)沒(méi)有參數(shù),當(dāng)然不可能設(shè)置默認(rèn)參數(shù)。 (10)類(lèi)的析構(gòu)函數(shù)是(D)時(shí)被調(diào)用的。 A.類(lèi)創(chuàng)建 B.創(chuàng)建對(duì)象 C.引用對(duì)象 D.釋放對(duì)象 (11)創(chuàng)建一個(gè)類(lèi)的對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用(B); 撤銷(xiāo)對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用(C)。 A.成員函數(shù) B.構(gòu)造函數(shù) C.析構(gòu)函數(shù) D.復(fù)制構(gòu)造函數(shù)(12)通常拷貝構(gòu)造函數(shù)的參數(shù)是(C)。 A.某個(gè)對(duì)象名 B.某個(gè)對(duì)象的成員名 C.某個(gè)對(duì)象的引用名 D.某個(gè)對(duì)象的指針名(13)關(guān)于this指針的說(shuō)法正確的是(B)。 A.this指針必須顯式說(shuō)明B.當(dāng)創(chuàng)建一個(gè)對(duì)象后,this指針就指向該對(duì)象 C.成員函數(shù)擁有this指針D.靜態(tài)成員函數(shù)擁有this指針?!窘Y(jié)果分析】 this指針是由C++編譯器自動(dòng)產(chǎn)生且較常用的一個(gè)隱含對(duì)象指針,它不能被顯式聲明。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),this指針就初始化指向該對(duì)象。但只有非靜態(tài)成員函數(shù)才擁有this指針,并通過(guò)該指針來(lái)處理對(duì)象。(14)下列關(guān)于子對(duì)象的描述中,(B)是錯(cuò)誤的。A.子對(duì)象是類(lèi)的一種數(shù)據(jù)成員,它是另一個(gè)類(lèi)的對(duì)象 B.子對(duì)象可以是自身類(lèi)的對(duì)象 C.對(duì)子對(duì)象的初始化要包含在該類(lèi)的構(gòu)造函數(shù)中 D.一個(gè)類(lèi)中能含有多個(gè)子對(duì)象作其成員 【結(jié)果分析】 子對(duì)象不可以是自身類(lèi)的對(duì)象。 (15)對(duì)new運(yùn)算符的下列描述中,(B)是錯(cuò)誤的。A.它可以動(dòng)態(tài)創(chuàng)建對(duì)象和對(duì)象數(shù)組 B.用它創(chuàng)建對(duì)象數(shù)組時(shí)必須指定初始值 C.用它創(chuàng)建對(duì)象時(shí)要調(diào)用構(gòu)造函數(shù) D.用它創(chuàng)建的對(duì)象數(shù)組可以使用運(yùn)算符delete來(lái)一次釋放 【結(jié)果分析】 使用運(yùn)算符new創(chuàng)建對(duì)象數(shù)組的格式如下: new <類(lèi)型說(shuō)明符> [<算術(shù)表達(dá)式>] 其中,<算術(shù)表達(dá)式>給出數(shù)組的大小,后面不能再跟構(gòu)造函數(shù)參數(shù),所以用它創(chuàng)建對(duì)象數(shù)組時(shí)不能指定初始值。 (16)對(duì)delete運(yùn)算符的下列描述中,(D)是錯(cuò)誤的。A.用它可以釋放用new運(yùn)算符創(chuàng)建的對(duì)象和對(duì)象數(shù)組 B.用它釋放一個(gè)對(duì)象時(shí),它作用于一個(gè)new所返回的指針 C.用它釋放一個(gè)對(duì)象數(shù)組時(shí),它作用的指針名前須加下標(biāo)運(yùn)算符[ ] D.用它可一次釋放用new運(yùn)算符創(chuàng)建的多個(gè)對(duì)象 【結(jié)果分析】 用delete一次只能釋放用new創(chuàng)建的1個(gè)對(duì)象,但可釋放一個(gè)對(duì)象數(shù)組。(17)關(guān)于靜態(tài)數(shù)據(jù)成員,下面敘述不正確的是(C)。A.使用靜態(tài)數(shù)據(jù)成員,實(shí)際上是為了消除全局變量 B.可以使用“對(duì)象名.靜態(tài)成員”或者“類(lèi)名∷靜態(tài)成員”來(lái)訪問(wèn)靜態(tài)數(shù)據(jù)成員 C.靜態(tài)數(shù)據(jù)成員只能在靜態(tài)成員函數(shù)中引用 D.所有對(duì)象的靜態(tài)數(shù)據(jù)成員占用同一內(nèi)存單元 【結(jié)果分析】 靜態(tài)數(shù)據(jù)成員可以在靜態(tài)成員函數(shù)中引用,也可以在非靜態(tài)成員函數(shù)中引用。(18)對(duì)靜態(tài)數(shù)據(jù)成員的不正確描述是(CD)。A.靜態(tài)成員不屬于對(duì)象,是類(lèi)的共享成員 B.靜態(tài)數(shù)據(jù)成員要在類(lèi)外定義和初始化 C.調(diào)用靜態(tài)成員函數(shù)時(shí)要通過(guò)類(lèi)或?qū)ο蠹せ?,所以靜態(tài)成員函數(shù)擁有this指針 D.只有靜態(tài)成員函數(shù)可以操作靜態(tài)數(shù)據(jù)成員 【結(jié)果分析】 this指針是一個(gè)局部量,局部于某個(gè)對(duì)象,而靜態(tài)成員函數(shù)是屬于整個(gè)類(lèi)而不是某個(gè)對(duì)象,它沒(méi)有this指針。靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù)均可操作靜態(tài)數(shù)據(jù)成員。 (19)下面的選項(xiàng)中,靜態(tài)成員函數(shù)不能直接訪問(wèn)的是(D)。A.靜態(tài)數(shù)據(jù)成員 B.靜態(tài)成員函數(shù) C.類(lèi)以外的函數(shù)和數(shù)據(jù) D.非靜態(tài)數(shù)據(jù)成員 【結(jié)果分析】 由于靜態(tài)成員函數(shù)沒(méi)有this指針,它只能直接訪問(wèn)該類(lèi)的靜態(tài)數(shù)據(jù)成員、靜態(tài)成員函數(shù)和類(lèi)以外的函數(shù)和數(shù)據(jù),訪問(wèn)類(lèi)中的非靜態(tài)數(shù)據(jù)成員必須通過(guò)參數(shù)傳遞方式得到對(duì)象名,然后通過(guò)對(duì)象名來(lái)訪問(wèn)。 (20)在類(lèi)的定義中,引入友元的原因是(A)。 A.提高效率 B.深化使用類(lèi)的封裝性 C.提高程序的可讀性 D.提高數(shù)據(jù)的隱蔽性 【結(jié)果分析】 友元的作用主要是為了提高效率和方便編程,但友元破壞了類(lèi)的封裝性和隱蔽性,使用時(shí)要權(quán)衡利弊。 (21)友元類(lèi)的聲明方法是(A)。 A.friend class<類(lèi)名>; B.youyuan class<類(lèi)名>; C.class friend<類(lèi)名>; D.friends class<類(lèi)名>;(22)下面對(duì)友元的錯(cuò)誤描述是(D)。A.關(guān)鍵字friend用于聲明友元 B.一個(gè)類(lèi)中的成員函數(shù)可以是另一個(gè)類(lèi)的友元 C.友元函數(shù)訪問(wèn)對(duì)象的成員不受訪問(wèn)特性影響 D.友元函數(shù)通過(guò)this指針訪問(wèn)對(duì)象成員 【結(jié)果分析】 友元函數(shù)是一個(gè)放在類(lèi)中的普通函數(shù),它沒(méi)有this指針。(23)下面選項(xiàng)中,(C)不是類(lèi)的成員函數(shù)。 A.構(gòu)造函數(shù) B.析構(gòu)函數(shù) C.友元函數(shù) D.拷貝構(gòu)造函數(shù) 三、簡(jiǎn)答題 (1)類(lèi)與對(duì)象有什么關(guān)系? 【問(wèn)題解答】 類(lèi)是一種用戶(hù)自己定義的數(shù)據(jù)類(lèi)型,和其他數(shù)據(jù)類(lèi)型不同的是,組成這種類(lèi)型的不僅可以有數(shù)據(jù),而且可以有對(duì)數(shù)據(jù)進(jìn)行操作的函數(shù)。程序員可以使用這個(gè)新類(lèi)型在程序中聲明新的變量,具有類(lèi)類(lèi)型的變量稱(chēng)為對(duì)象。創(chuàng)建對(duì)象時(shí),類(lèi)被用做樣板,對(duì)象稱(chēng)為類(lèi)的實(shí)例。 (2)類(lèi)定義的一般形式是什么?其成員有哪幾種訪問(wèn)權(quán)限? 【問(wèn)題解答】 定義類(lèi)一般形式為: class類(lèi)名{ public: <公有數(shù)據(jù)和函數(shù)> protected: <保護(hù)數(shù)據(jù)和函數(shù)> private: <私有數(shù)據(jù)和函數(shù)> }; 訪問(wèn)權(quán)限共有3種: 分別是公有(public)、保護(hù)(protected)和私有(private)。(3)類(lèi)的實(shí)例化是指創(chuàng)建類(lèi)的對(duì)象還是定義類(lèi)? 【問(wèn)題解答】 指創(chuàng)建類(lèi)的對(duì)象。 (4)什么是this指針?它的主要作用是什么? 【問(wèn)題解答】 this指針是C++語(yǔ)言為成員函數(shù)提供的一個(gè)隱含對(duì)象指針,它不能被顯式聲明。this指針是一個(gè)局部量,局部于某個(gè)對(duì)象。不同的對(duì)象調(diào)用同一個(gè)成員函數(shù)時(shí),編譯器根據(jù)this指針來(lái)確定應(yīng)該引用哪一個(gè)對(duì)象的數(shù)據(jù)成員。(5)什么叫做拷貝構(gòu)造函數(shù)?拷貝構(gòu)造函數(shù)何時(shí)被調(diào)用? 【問(wèn)題解答】 拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),它的作用是用一個(gè)已經(jīng)存在的對(duì)象去初始化另一個(gè)對(duì)象。為了保證所引用的對(duì)象不被修改,通常把引用參數(shù)聲明為const參數(shù)。 在以下3種情況下,拷貝構(gòu)造函數(shù)都會(huì)被自動(dòng)調(diào)用: ◆當(dāng)用類(lèi)的一個(gè)對(duì)象去初始化該類(lèi)的另一個(gè)對(duì)象時(shí); ◆當(dāng)函數(shù)的形參是類(lèi)的對(duì)象,進(jìn)行形參和實(shí)參結(jié)合時(shí); ◆當(dāng)函數(shù)的返回值是類(lèi)的對(duì)象,函數(shù)執(zhí)行完成返回調(diào)用者時(shí)。 四、程序分析題(寫(xiě)出程序的輸出結(jié)果,并分析結(jié)果)(1) #include using namespace std; class Test { private: int num;public: Test();// 默認(rèn)構(gòu)造函數(shù) Test(int n);// 帶一個(gè)參數(shù)構(gòu)造函數(shù) }; Test∷Test() { cout<<“Init defa”< num=0;} Test∷Test(int n) { cout<<“Init”<<“ ”< num=n;} int main() { Test x[2];// 語(yǔ)句1 Test y(15);// 語(yǔ)句2 return 0;} 【輸出結(jié)果】 Init defa Init defa Init 15 【問(wèn)題分析】 本題主要考查構(gòu)造函數(shù)的調(diào)用時(shí)機(jī)和構(gòu)造函數(shù)的匹配問(wèn)題?!疽c(diǎn)提示】 構(gòu)造函數(shù)在創(chuàng)建對(duì)象時(shí)被自動(dòng)調(diào)用,具體調(diào)用哪個(gè)構(gòu)造函數(shù)將由編譯系統(tǒng)根據(jù)重載函數(shù)的匹配原則來(lái)確定。【結(jié)果分析】 ① 程序聲明了2個(gè)對(duì)象x和y,類(lèi)中有2個(gè)構(gòu)造函數(shù)。 ② 程序首先執(zhí)行語(yǔ)句1,創(chuàng)建對(duì)象x,調(diào)用默認(rèn)構(gòu)造函數(shù)。由于對(duì)象x是對(duì)象數(shù)組,每個(gè)數(shù)組元素被創(chuàng)建時(shí)都要調(diào)用構(gòu)造函數(shù),所以默認(rèn)構(gòu)造函數(shù)被調(diào)用了2次,輸出第1、2行結(jié)果。程序接著執(zhí)行語(yǔ)句2,創(chuàng)建對(duì)象y,調(diào)用帶一個(gè)參數(shù)的構(gòu)造函數(shù),輸出第3行結(jié)果。(2) #include using namespace std; class Xx { private: int num; public: Xx(int x){num=x;} // 構(gòu)造函數(shù) ~Xx(){cout<<“dst ”< }; int main() { Xx w(5);// 語(yǔ)句1 cout<<“Exit main”< return 0;} 【輸出結(jié)果】 Exit main dst 5 【問(wèn)題分析】 本題主要考查析構(gòu)函數(shù)的調(diào)用時(shí)機(jī)?!疽c(diǎn)提示】 析構(gòu)函數(shù)在釋放對(duì)象時(shí)被自動(dòng)調(diào)用?!窘Y(jié)果分析】 ① 程序聲明了一個(gè)對(duì)象w。 ② 程序首先執(zhí)行語(yǔ)句1,創(chuàng)建對(duì)象w,調(diào)用構(gòu)造函數(shù),num得到初值5。程序接著執(zhí)行語(yǔ)句2,輸出第1行結(jié)果。當(dāng)程序結(jié)束時(shí),釋放對(duì)象w,析構(gòu)函數(shù)被調(diào)用,輸出第2行結(jié)果。 (3)將例3.10中的Whole類(lèi)如下修改,其他部分不變,寫(xiě)出輸出結(jié)果。 class Whole { public: Whole(int i);// Whole的有參構(gòu)造函數(shù) Whole(){};// Whole的無(wú)參構(gòu)造函數(shù) ~Whole();// Whole的析構(gòu)函數(shù) private: Part p1;// 子對(duì)象1 Part p2;// 子對(duì)象2 Part p3;// 子對(duì)象3 };Whole∷Whole(int i):p2(i),p1() { cout<<“Constructor of Whole”< Whole∷~Whole() { cout<<“Destructor of Whole”< 【輸出結(jié)果】 Default constructor of Part Constructor of Part,3 Default constructor of Part Constructor of Whole Destructor of Whole Destructor of Part,0 Destructor of Part,3 Destructor of Part,0 【問(wèn)題分析】 本題主要考查子對(duì)象初始化的方法和含有子對(duì)象時(shí)構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。 【要點(diǎn)提示】 ◆當(dāng)建立X類(lèi)的對(duì)象時(shí),先調(diào)用子對(duì)象的構(gòu)造函數(shù),初始化子對(duì)象,然后才執(zhí)行X類(lèi)的構(gòu)造函數(shù),初始化X類(lèi)中的其他成員。 ◆對(duì)子對(duì)象構(gòu)造函數(shù)的調(diào)用順序取決于這些子對(duì)象在類(lèi)中的說(shuō)明順序,與它們?cè)诔蓡T初始化列表中給出的順序無(wú)關(guān)。 ◆如果X類(lèi)的構(gòu)造函數(shù)沒(méi)有給出成員初始化列表,表明子對(duì)象將使用默認(rèn)構(gòu)造函數(shù)進(jìn)行初始化?!粑鰳?gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)的調(diào)用順序正好相反?!窘Y(jié)果分析】 程序的Whole類(lèi)中出現(xiàn)了類(lèi)Part的3個(gè)對(duì)象p1、p2和p3,作為該類(lèi)的數(shù)據(jù)成員,則p1、p2和p3被稱(chēng)為子對(duì)象。當(dāng)建立Whole類(lèi)的對(duì)象w時(shí),子對(duì)象p1、p2和p3被建立,相應(yīng)的構(gòu)造函數(shù)被執(zhí)行。由于p1在Whole類(lèi)中先說(shuō)明,所以先執(zhí)行它所使用的構(gòu)造函數(shù),即類(lèi)Part的默認(rèn)構(gòu)造函數(shù),接著p2執(zhí)行它所使用的有參構(gòu)造函數(shù),緊接著初始化p3,由于Whole類(lèi)構(gòu)造函數(shù)的成員初始化列表中沒(méi)有子對(duì)象p3進(jìn)行初始化的選項(xiàng),所以執(zhí)行類(lèi)Part的默認(rèn)構(gòu)造函數(shù),當(dāng)所有子對(duì)象被構(gòu)造完之后,對(duì)象w的構(gòu)造函數(shù)才被執(zhí)行,從而得到前4行輸出結(jié)果,而后4行是執(zhí)行相應(yīng)析構(gòu)函數(shù)的輸出結(jié)果。(4) #include using namespace std; class Book { public: Book(int w); static int sumnum; private: int num;}; Book∷Book(int w) { num=w; sumnum-=w;} int Book∷sumnum=120;// 語(yǔ)句1 int main() { Book b1(20);// 語(yǔ)句2 Book b2(70);// 語(yǔ)句3 cout< return 0;} 【輸出結(jié)果】 【問(wèn)題分析】 本題主要考查“在類(lèi)的范圍內(nèi)所有對(duì)象共享靜態(tài)成員的數(shù)據(jù)”的含義?!窘Y(jié)果分析】 程序中語(yǔ)句1對(duì)靜態(tài)成員sumnum進(jìn)行初始化,sumnum得到初值120。執(zhí)行語(yǔ)句2時(shí),調(diào)用構(gòu)造函數(shù),sumnum變?yōu)?00。接著語(yǔ)句3,再調(diào)用構(gòu)造函數(shù),sumnum變?yōu)?0。 五、程序設(shè)計(jì)題 (1)聲明一個(gè)Circle類(lèi),有數(shù)據(jù)成員radius(半徑)、成員函數(shù)area(),計(jì)算圓的面積,構(gòu)造一個(gè)Circle的對(duì)象進(jìn)行測(cè)試?!締?wèn)題分析】 本題主要考查類(lèi)定義的形式、對(duì)象成員訪問(wèn)和對(duì)象初始化的方法。要求理解類(lèi)和構(gòu)造函數(shù)的真正含義,特別注意如何將客觀事物的屬性和行為抽象為類(lèi)的成員?!窘忸}思路】 ① 題目中已給出了類(lèi)的基本部分,需要增加一個(gè)構(gòu)造函數(shù)來(lái)初始化數(shù)據(jù)成員radius。 ② 為了程序的通用性,圓的半徑由鍵盤(pán)輸入?!緟⒖汲绦颉?/p> // xt3_1.cpp #include Javaweb復(fù)習(xí)題 1.什么是超文本協(xié)議?一般JSP應(yīng)用程序服務(wù)器(WEB服務(wù)器)使用的發(fā)布端口是多少? 超文本協(xié)議(HTTP)Hypertext Transfer Protocol:進(jìn)行超文本和超媒體數(shù)據(jù)的傳輸.發(fā)布端口為8080 2.Eclipse一般通過(guò)什么來(lái)進(jìn)行功能的擴(kuò)展。插件 3.JSP有哪三種腳本元素 JSP中的腳本元素主要包括三個(gè)主要部分:--腳本段:<%This is a scriptlet%>--聲明:<%!This is a declaration%>--表達(dá)式:<%=This is a expression%> 4.JSP的內(nèi)置對(duì)象有哪九個(gè)? 以上的9個(gè)內(nèi)置對(duì)象中比較常用的是pageContext、request、response、session、application這5個(gè)。(有關(guān)內(nèi)置對(duì)象的使用詳細(xì)看一下課本或PPT)5.WEB-INF文件夾下進(jìn)行SERVLET配置的文件是什么?web.xml 6.JSP中 request對(duì)象采用什么方法獲取表單提交信息? 單一的參數(shù)都可以使用getParameter()接收,而一組參數(shù)(同名參數(shù))要用getParameterValues()接收。 在表單控件中,像文本框(text)、單選按鈕(radio)、密碼框(password)、隱藏域(hidden)等,一般都會(huì)使用getParameter()方法進(jìn)行接收,因?yàn)檫@些控件在使用時(shí)參數(shù)的名稱(chēng)都只有一個(gè)不會(huì)重復(fù);而像復(fù)選框(checked),一般參數(shù)的名稱(chēng)都是重復(fù)的,是一組參數(shù),所以只能使用getParameterValues()方法接收,如果不小心使用了getParameter()方法,則只會(huì)接收第一個(gè)選中的內(nèi)容。 7.客戶(hù)端向服務(wù)端提交數(shù)據(jù)的方法有哪兩種? get請(qǐng)求、post請(qǐng)求 8.服務(wù)器默認(rèn)的編碼為什么?常見(jiàn)的中文編碼為什么? 服務(wù)器默認(rèn)的編碼:ISO8859-1 常見(jiàn)的中文編碼:GBK <%@ page contentType=“text/html;charset=GBK”%> <% request.setCharacterEncoding(“GBK”);// 按中文接收 String str = request.getParameter(“info”);// 接收表單參數(shù) %> 參數(shù)內(nèi)容:<%=str%> JSP通過(guò)JDBC(Java DataBase Connectivity、Java數(shù)據(jù)庫(kù)連接技術(shù)的簡(jiǎn)稱(chēng))技術(shù)操作數(shù)據(jù)庫(kù) 查詢(xún)結(jié)果集類(lèi)ResultSet 10.SERVLET本身是個(gè)JAVA類(lèi),必須放置在那個(gè)文件夾下? Servlet本身就是個(gè)Java類(lèi),所以必須放在WEB-INF/classes子文件夾下 11.HTML語(yǔ)言中的各種常用標(biāo)簽有哪些? 、第五篇:Javaweb復(fù)習(xí)題(帶答案)