面向對象的設計方法與C++編程_第1頁
面向對象的設計方法與C++編程_第2頁
面向對象的設計方法與C++編程_第3頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、北京郵電大學 200X-200X 學年第一學期面向對象的設計方法與C+編程期末考試試卷+擴展+復習題試題一:填空題(沒空一分,共 20 分) 請在括號內填入你認為正確的內容。1. 軟件工程是指導( 計算機軟件 )開發和維護的( 工程學科 )。2. 應用軟件工程方法開發軟件系統的根本目的是為了改善下述四項軟件品質因素: 提高所開發的軟件系統的( 效率 ); 降低所開發的軟件系統的( 成本 ); 改善所開發的軟件系統的( 質量 ); 縮短所開發的軟件系統的( 開發周期 )。3. 抽象的對象模型由( 屬性 )和( 方法 )兩個部分構成。4. 一個消息必須具備的兩個要素是( 接受消息的對象標識 )和(

2、 接受消息的對象的方 法標識 )。5. 一個對象擁有另一個對象的( 部分 )或( 全部 )的屬性和方法的關系則稱為( 繼 承 )關系。6. 失去( 創建具體對象實例的(制造對象) )能力的類成為抽象類。7. 一個類的屬性不能出現對象拷貝則被稱為( 類屬性 )。8. 面向對象技術的三大特征是( 封裝 )、( 繼承 )和( 多態 )。9. 共生包容關系中的被包容類對象與包容類對象是( 同時連帶 )生成的。10. 同時出現在兩個具有關聯關系的對象內的相同屬性被稱為( 連接屬性 )。課程復習 - 補充題:1. 軟件的生存周期是一個軟件產品從( 定義 )、( 開發 )、( 使用 )到( 廢棄 )的時 間

3、的總合。2. C+語言中的靜態成員函數是( 類方法)的具體實現。3. 連接屬性是( 關聯 / 鏈接 )關系的兩個對象內的屬性。4. 邊界類與( actor (角色)對呈一一對應關系。5. 復合聚合關系中的( 聚合 )類對象極其依賴( 被聚合 )類對象,在實現上往往具有 被同時( 構造 )的特征,因而具有極高的( 耦合度 )。試題二:是非判斷題(每題 1 分,共 20分) 請在題后的括號內填入"(你認為正確時)或x(你認為錯誤時)。1. 消息必須含有返回信息。 ( 錯 )2. 一個類必然具有生成對象的能力。 ( 錯 )( 抽象類不具備 )3. 在包容關系中的被包容類也具有封裝性。 (

4、對 )4. 關聯關系只是一個動作的抽象。 ( 錯 )(表示兩個類之間的聯系,通過這種聯系,一個類可以訪問到另外一個類的屬性和方法。)5. 一個類也可以接收消息。 ( 對 )6. 關聯關系中的作用名標識了該關聯關系的終點對象的恰當地位。( 對 )7. 狀態圖是反映整個系統動態運行時狀態變化的圖形工具。 ( 對 )8. 多重繼承 必然存在不確定問題。 ( 錯 )9. 候選鍵是具有關聯關系的兩個類中屬性的一部分。 ( 對 )10. 面向對象設計方法的一個重要目標便是實現“可重用軟件的設計” 。( 對 )11. 繼承關系中的成員覆蓋就是重載的一種形式。 ( 錯 ) ( 多態的一種 )12. 一個派生類

5、對象的方法不能訪問其繼承的基類對象的某些成員是由于這些基類對象的 成員不存在于派生類對象中。 ( 錯 ) (繼承的方式不同 public protected private )13. 一個派生類對象也可以向其繼承的積累對象發消息。 ( 對 )14. 狀態的自動變遷是由于一個內部的事件所引發的。 ( 錯 ) (由于一個內部的事件所引發的是 條件變遷 )15. 抽象類是 不包含任何屬性的類。 ( 錯 )16. 調用類方法 必須 向該類的對象發消息。 ( 錯 )17. 復合包容關系中的被包容對象必須在包容對象被激活的同時構造。 ( 對 )18. 繼承關系中也存在有關聯關系。 ( 對 )19. 使用C

6、+語言只能編寫面向對象的程序。(錯)(這不是扯淡嗎)20. 在關聯關系的兩端插入角色描述(Role Name)有助于對該關聯關系的可讀性。(對)試卷添加:1 、 菱形多重派生結構必然存在多個基類對象問題。 ()2、 嵌入式聚合包容關系中的被聚合包容的對象必須在包容對象構造的同時構造。(X)(同 時叫復合聚合(包容)關系 )3、 對于事件流腳本的歸納與抽象可以實現狀態圖的優化。(V)4、面向對象的分析方法中存在自頂向下、逐步求精的邏輯分析過程。( X)5、候選鍵是具有關聯關系的兩個類最小屬性集合。 (V)6、類方法可以實現消息轉發。 ( V)7、課程復習 - 補充題:1. 只有屬性的類也具有封裝

7、性。( X )2. 在面向對象技術系統分析中,問題陳述是獲取對象的重要來源。(V)3. 在面向對象技術系統分析中不使用數據流圖。( X)4. 一個對象的方法只能改變本對象的屬性值。( X )(對象行為 1. 主動:直接改變自身屬性值; 2. 被動: 通過訪問其他對象而改變自身屬性值 )5. 一個對象內存在另一個對象的關系稱為 包容關系 。( X )( 聚合關系 )6. 含有定性的屬性的類就是抽象類。( X )(抽象類是包含一種或多種抽象方法的類, 它本身不需要構造實例。 定義抽象類后, 其它類 可以對它進行擴充并且通過實現其中的抽象方法,使抽象類具體化。)7. 當使用一個類方法時,消息是傳向一

8、個類的。( V)8. 一個對象所呈現的不同狀態稱為多態。( X )(“一個接口,多種實現”,就是同一種事物表現出的多種形態叫做 多態)9. 靜態鏈接是在面向對象技術語言編譯時建立的對象關系。( V)10. RUP 的開發周期由三個階段所構成。( X)( 四個 初始階段 細化 構造 交付 )11. RUP 中的系統行為是對其全部的外來激勵進行作用和反作用。( V)12. RUP 中的系統行為可以從對象模型中獲得。(X )( 用例模型 )試題三:單項選擇題(每題 1 分,共 16 分)下列各題均提供了四個可供選擇的答案,但其中只有一個是正確的,請在各題中的括號內填入你認為正確的答案代號 A、B、C

9、或D;不填或填錯不得分。1. 面向對象技術是( A )。A.指導構建軟件的系列法則B.一種探索可被認同的新理論C.由 Grady Booch 提出的一種動態的新語言D.基于抽象與模塊化原理的新技術2.(B )項目對建模的要求度最小。A.立交橋B.沙發C.列車D.光盤3.一個模型( C )。A.對于十分理解其工作內容的團隊成員可以不使用B.必須是有結構的和動作的體系C.是一個實例的簡化D.一個構建精確計劃的原由4.在UML 中,使用( A )詞匯表示可以將具有共同用途的模型元素組成多個組。A.PackageB.ClassC.EncapsulationD.Generalization5.最好的模型

10、將與( B )聯系在一起。A.Java-Script 代碼B.實體C.C+D.與面向對象開發者聯系在一起的命題6.使用 UML 建模時( C )的處理不是其最基本的特征。A.迭代與增量B.用例驅動C.彈性設計D.以架構為核心7.建模的根本目的是( D )。A.有助于一個系統的可視化B.獲得一個準備構建系統的模板C.見證設計成果D.上述三條的總和8.一個對象的狀態( C )。A.是一個被稱為“狀態”的屬性或屬性集B.始終不發生常規的變化C.被描述成對象的屬性和關系D. 僅是一個對象可能存在的條件9. 以下 RUP 中的( D )是聚焦在結構問題上。A. 用例B. 處理C. 實現D. 邏輯10.

11、短語( B )可以最好的體現泛化關系。A. is a part ofB. is a kind ofC. is a replica ofD. is an inheritance of11. 封裝( B )。A. 允許對處于封裝態的內容進行直接處理B. 涉及到信息的隱藏C. 會導致維護成本的提高D. 在實現時所引起的改變會影響到客戶端12. 一個可見的對象行為可以被模型化為該對象的( C )。A. 屬性B. 責任C. 操作D. 方法13. 多態可以被描繪成( A )。A. 在一個接口上隱藏多個不同實現的形態B. 繼承C. 信息放置形態D. 泛化14. 將模塊與計劃合并為一體化的目的是( A )。A

12、. 在可管理的單元上降低一些復雜程度B. 建構的模塊便于交流C. 創建巨大且難于理解的系統D. 系統的局部不能獨立開發15. Rational 推出的 RUP 方法中所倡導的迭代式開發模式的最根本目的是為了(C )。A. 降低開發成本B. 降低開發風險C. 減少開發時間D. 節省開發的人力資源16. 一個類( D )。A. 是一個對象的封裝B. 表現為一個對象的分層結構C. 是一個對象的實例D. 是一個對象的抽象定義 試卷補充:1、C+語言廣泛使用運算符函數的目的是()2、抽象類不定構建對象的原因()3、對象構成封裝形態的根本意義()4、利用繼承派生關系中的重構手段獲得的新系統是為了()5、多

13、態手段的目的()6、最好的模型將于(實體)聯系起來試題四:分析題(共 30分)1. 指出下列對象之間的關系。(每題1分,共10分)1)軟件工程與面向對象的分析與設計方法( 包容關系)2)矛與盾(關聯關系)3)數字交換系統與通信系統( 繼承關系)4)人與心臟(包容關系)5)Pentium芯片與 Pentium IV芯片( 繼承 關系)6)計算機與磁帶機(關聯? 關系)7)多媒體與三維圖形設備(繼承關系)8)石油與汽油(關聯? 關系)(繼承派生?)9)道路與車輛(關聯關系)10)煤炭與碳元素(繼承關系)-抽象類-繼承課程復習-補充題:地球與太陽(關聯關系)家庭影院與音箱(包容關系)信息與印刷品(繼

14、承關系)鑰匙與鎖(關聯關系)燈泡與燈絲(包容關系)計算機與打印機(關聯關系)公司與雇員(包容關系)建筑體與墻(包容關系)2. 試在下圖給定的括號內寫出已知關聯聯系得作用名(Role Name)。(每圖1分,共4 分)(與會者)(乘客)乘坐(交通工具)參加 (會議)會議(演講者) (呼叫方)人一電話一1(聽眾)發表講話(被叫方)鏈接3. 閱讀下述C+程序后試在其右側對應的對象圖中填充描述其關系的對象模型符號。(3分)ttincludp<ioctream>using namepacp std; class B;class 0 int i;B* p;public:ft() (i = B;

15、 p NULL;) ft(int):>:class B H* P;public:B() (P = NULL;B(ft* x) <p - x;> >; fl::nCint x)zi(x) (p - new Bx; uoid mainC) <ft a(3>;B b(£a);4.閱讀下述C+程序后試在其右側對應的對象圖中填充描述其關系的對象模型符號,并試 在題目的下方寫出執行本程序的輸出結果。ttincludp<iostream>uing namespace td;class 口 protected:int i:public:m):i(x)

16、int uirtual opprator*() 0;(4分)class b : public a <public:B(int k, fi* y - HULLJ:fi<x) «p - y; int operatorf() return t*p;return 1;iF(P> elsevoid mainC) < fi* p1 new ft* p2 = neuB(2, (A*)pn;cout«?*p2«endl;執行本程序的輸出結果是:1A* pl = new B(1); pl p = NULLB繼承 A & B包含A?A* p2 = ne

17、w B(2, (A*)p1);p2 p pl5.某大學推行完全學分制的學籍管理方式,其規定如下:學生在入學后的第一個學年內必 須完成學績分超過 23分才能被允許(收到確認通知)進入第二學年的學習,否則將被 按照肄業處理,進入第二學年后可以被允許(收到確認通知)進入下一個學年學習的最 低學績分數分別為27、30和30分(含對應分數者)。完成第四個學年的學績分 30分(含30)以上者可以準許畢業(獲得畢業證書)。若在后三學年中的某一年中沒有完成該學年規定的學績分者,則可以在對應學年中重新學習一年,若仍不能達到規定學績分者的 學籍將被自動按肄業處理。試據上述腳本繪制出對應的狀態圖。(9分)解:本題的

18、狀態圖如下:> 30分畢業課程復習-補充題:一盞信號燈在三種不同的外電壓作用卜可呈現出不同的顏色:外電壓為T不亮;外電壓為50V時信號燈呈紅色;外電壓為 100V時信號燈呈黃色;外電壓為 150V時信 號燈呈綠色。在不改變外電壓的條件下,該信號燈在呈現黃色或綠色20秒后會分別自動變回紅色或黃色。若此時改變其外電壓則信號燈的顏色仍會呈現為對應電壓的顏色(如100V外電壓的作用下變為黃色;在 150V外電壓的作用下會變為綠色)。試繪出該信號燈顏色變 化的狀態圖。解:(設時間條件為Time)本題的狀態圖如下:150V不亮50VJT 電樂不變 / / 或 50V/ /廠、/ /'i 10

19、0V紅色電壓不或'或W0V黃色、( do:變色丿Iinie>20X /Tkne 電壓AHOV XA站;變色x.Jirir/iooy>x150V試題五:改寫、補做與糾錯題(共14分)1.下述C+程序結構為類B繼承類A的派生結構,以不改變對象關系結構為前提,試在源 程序的右側寫出只將基類變為類模板結構的全部C+代碼,并修改程序內與其相關的其他部分的配套語句。(7分)32 位的硬件請在以下修改前:ttinclude<iostrean>usin( name space st d' class 口 < protected:int 1;public:A(int

20、 »):±(x) iint uirtual operatort return i; >:class B : public A protectPil:int i;public:B<int w, int u):i(5«)f fli(y) O int operator!() return i;>>; uoid malfiO <A* p = nev B(1v 2):少課程復習蘭補充題:設下述C+程序運行于字長為源程序變為類模板的對應程序代碼。修改后:ttinclude<10 5treaiii> usLng namespace st

21、d; template<cias f1> Glss A protected:T1 1 ;public:A<T1 x):i<x) 11 uirtual operatorC) return 1;>C145S H : public<protected:int 1;public:B<int x. int).Jint operatorft) return 1;>:yoi.il nai_n) £p = new f 2 ; cout<<!*p<<endl;C+程 序的右側寫出將該修改前:lining namespace std

22、;class A int order;public!fi() <cout<<,The turnt arder is 11; CLn>>or<lpr;«): int oper tar f ( ) return nr tier ; J ;B tfi* P; public:x) pencil Ak ; int GetOrder(int x) return )pM>> >; vo|d Fiain O B b(2);for(int i =叫 i < 2; i+) cout<<b .Get(Jrder(i)«end

23、l;cing亡;修改后:1tiriclud<io5 trean> using nanespace std; tenplate<clas£ T1> class A <11 order: public::口門<cout«,The current ordoi'' 5 ualuc is " cin>>orcter;> 口(TT x>:order(x T1 operator?() return order;tenplate<class T2 Tclass 13class B T2* p;pub

24、lic:B(lnt js) p=new T2kT3 CetOrderfint k) return tpfx;void naifiO ,int> b(3);For(int i = fl; i < 3: i+)( cout«tJ.GetCrder(i)<<endl;cin,get();2. 下述C+程序存在若干處錯誤,以不改變程序結構為前提,請在出錯的行首做一標記(如*),并將改動最少的正確語句寫在所在行下方或出錯部位的右側。(7分)ttinclude<iostream>using namespace std;CldSS A <int i;pub

25、lic:$ int get() return i;>:clas B : public A publir:B(int x =$ uoid operator?() cout«"i = ,«get()<<endl;;cla55 C ! public 9 <int i ;public:$ C(int x - 2, int y汨(x” i(y)int operator+=(A& x) return i *=int get" <return i;void Hain() A& p1 = *(A*)new BC);= *(A

26、*)new CC18)>$ r*pl;/display 1=1;$ cout«"p2(i> - *'C<p2 *= p1C<endl;/display p2<i> - 11 cout«b,p2i> = *,«p2_get() ;/dlsplay p2<i> = 11 cin.ge;更正錯誤如下:No.1 $ :uirtual int got (return i;> uirtual void operator*() = B; virtual dnt operdtor+( A& x&

27、gt; = 0;No.2 $ :在標志處下一行添加如下語句No.3 $ :int operator+-(A t x"I < return get();No.4 $ :CCint y, int k - 2):BCx). i(y) No.5 $ :*p1;/display i - 1;cout<<'*p2(i> - "«(p2 +- pl)<<endl;/di5play p2i - 11;課程復習-補充題:1.下述C+程序存在若干處錯誤,以不改變程序結構為前提,請在出錯的行首做一標記 (如*),并將改動最少的正確語句寫在所在

28、行或出錯部位的右側。例1:#include<iostream>using namespace std:class Ari proiected:int i:public:A(iitx):i(x)Qviitiial int opera torviitual hit opeialor-()-0; :class B:public Apublic:Biiui x,iin、i:i(x).A(y) jiiir opemtor!() freaun i:int cperatop*() reluni A:iJ:void main()fIA* p_newcout«'!="«- ( *p) «eudl; /.Display:!例2:clude<io s t leanusing uaniespace ski. class Apioiecied:inf i:public:A(int x):i(x)hit opeiaTor-()=0; viital int Qpcrator!()=0.:cln訪 B:public Aprotected:lilt i:A* p;public:B int xdnt y):ife),A(y) p=(A*)this;int opeiaiorii) Jietmii i:;< *int opera

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論