




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、簡答題1、傳統(tǒng)的結構化程序設計的優(yōu)點和缺點是什么?優(yōu)點:(1)這種程序設計方法力求算法描述準確。(2)對每一子過程模塊容易進行程序正確性證明。缺點:(1)這種程序設計方法本質上是面向“過程”的,而“過程”和“操作”又是不穩(wěn)定和多變的,因此不能直接反映人類求解問題的思路。(2)程序代碼可重用性差。程序中除少數(shù)標準庫函數(shù)外,每設計一個程序時,程序員幾乎從零做起。即使重用代碼,通常也是通過拷貝或編輯重新生成一份。(3)維護程序的一致性困難。該種方法將數(shù)據(jù)與對數(shù)據(jù)進行處理的程序代碼分離。 2、什么是對象?每個對象都具有屬性(Attribute)和方法(Method)這兩方面的特征。對象的屬性描述了對象
2、的狀態(tài)和特征,對象的方法說明了對象的行為和功能,并且對象的屬性值只應由這個對象的方法來讀取和修改,兩者結合在一起就構成了對象的完整描述。 3、什么是消息?在面向對象的程序設計中,由于對象描述了客觀實體,它們之間的了解通過對象間的了解來反映。當一個對象需要另外一個對象提供服務時,它向對方發(fā)出一個服務請求,而收到請求的對象會響應這個請求并完成指定的服務。這種向對象發(fā)出的服務請求就稱為消息。4、什么是多態(tài)性?所謂多態(tài)性是指當程序中的其他部分發(fā)出同樣的消息時,按照接收消息對象的不同能夠自動執(zhí)行類中相應的方法。其好處是,用戶不必知道某個對象所屬的類就可以執(zhí)行多態(tài)行為,從而為程序設計帶來更大方便。 5、什
3、么是面向對象的程序設計方法?這種方法將設計目標從模擬現(xiàn)實世界的行為轉向了模擬現(xiàn)實世界中存在的對象及其各自的行為。 在OOP中,將“對象”作為系統(tǒng)中最基本的運行實體,整個程序即由各種不同類型的對象組成,各對象既是一個獨立的實體,又可通過消息相互作用,對象中的方法決定要向哪個對象發(fā)消息、發(fā)什么消息以及收到消息時如何進行處理等。 6、面向對象方法的特點是什么?(1)OOP以“對象”或“數(shù)據(jù)”為中心。由于對象自然地反映了應用領域的模塊性,因此具有相對穩(wěn)定性,可以被用作一個組件去構成更復雜的應用,又由于對象一般封裝的是某一實際需求的各種成分,因此,某一對象的改變對整個系統(tǒng)幾乎沒有影響。(2)引入了“類”
4、(class)的概念。類與類以層次結構組織,屬于某個類的對象除具有該類所描述的特性外,還具有層次結構中該類上層所有類描述的全部性質,OOP中稱這種機制為繼承。(3)OOP方法的模塊性與繼承性,保證了新的應用程序設計可在原有對象的數(shù)據(jù)類型和功能的基礎上通過重用、擴展和細化來進行,而不必從頭做起或復制原有代碼,這樣,大大減少了重新編寫新代碼的工作量,同時降低了程序設計過程中出錯的可能性,達到了事半功倍的效果。 7、面向對象的程序設計方法與結構化程序設計方法的比較(1)傳統(tǒng)的結構化程序設計方法以過程為中心構造應用程序,數(shù)據(jù)和處理數(shù)據(jù)的過程代碼是分離的、相互獨立的實體,設計出的程序可重用代碼少,且當代
5、碼量增加時維護數(shù)據(jù)和代碼的一致性困難。(2)面向對象程序設計方法中,對象所具有的封裝性和繼承性使得代碼重用成為可能,并大大減少了程序出錯的可能性。(3)面向對象方法吸收了結構化程序設計方法的優(yōu)點,同時引入了新概念、新機制并建立了比傳統(tǒng)方法更高層次的抽象。二、選擇題略 三、填空題(1)類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的 【1】 。【參考答案】【1】實例(2)在C+語言的面向對象程序設計框架中, 【2】 是程序的基本組成單元?!緟⒖即鸢浮俊?】類(3)C+語言程序的注釋可以出現(xiàn)在程序中的任何地方,一個注釋以 【3】 作為開始和結束的標記?!緟⒖即鸢浮?【3】/* */(4)以下程序的輸出
6、結果是 【4】 。#include "iostream.h"void fun() static int a;a+=2;cout << a << " " void main() int cc;for(cc=1;cc<4;cc+)fun();cout << endl;【參考答案】【4】2 4 6(5)下列程序在構造函數(shù)和析構函數(shù)中申請和釋放類的數(shù)據(jù)成員int *a,申請時使用形參b初始化a,請?zhí)羁?。class A public:A(int b);A();private:int *a; ;A:A(int b) 【5】
7、; A:A() 【6】 ; 【參考答案】【5】a = new int(b); 【6】delete a6. 多態(tài)性與【7】和【8】共同構成面向對象程序設計的三大機制。【參考答案】【7】數(shù)據(jù)封裝 【8】繼承(7)將x+y*z中的"+"用成員函數(shù)重載,"*"用友元函數(shù)重載應寫為 【9】 ?!緟⒖即鸢浮俊?】x. operator+(operator*(y,z)(8)派生類的成員一般分為兩部分,一部分是 【10】 ,另一部分是自己定義的新成員?!緟⒖即鸢浮俊?0】從基類繼承的成員 (9)以下程序輸出的結果是 【11】 。#include "iostre
8、am.h"void main()int a=5,b=4,c=3,d;d=(a>b>c);cout<<d; 【參考答案】【11】 0(10)如果要把返回值為void的函數(shù)A聲明為類B的友元函數(shù),則應在類B的定義中加入的語句是 【12】 ?!緟⒖即鸢浮俊?2】friend void A( );(11)如果類B繼承了類A,則稱類A為類B的基類,類B稱為類A的 【13】 ?!緟⒖即鸢浮俊?3】派生類(12)將x+y中的+運算符用友元函數(shù)重載應寫為 【14】 ?!緟⒖即鸢浮俊?4】operator+(x,y)(13)已知程序的結果為1 2 3,請?zhí)羁铡?includet
9、emplateclass A public:T x,y,z;void display()cout << x << " " << y << " " << z; ;void main() Aa1;【15】【16】【17】a1.display(); 【參考答案】【15】a1.x=1 【16】a1.y=2 【17】a1.z=3(14)下列程序段的輸出結果是 【18】 。cout << fixed << 509.123456789 << endl;【參考答案】【18】5
10、09.123457四、綜合應用題1. 使用VC6打開考生文件夾下的工程kt15_3。此工程包含一個kt15_3.cpp,其中定義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公有派生。上述三個類的定義并不完整,請按要求完成下列操作,將程序補充完整。(1)定義類A的構造函數(shù),該構造函數(shù)有一個整型的參數(shù)x,在構造函數(shù)中請將x賦值給數(shù)據(jù)成員a。請在注釋“/*1*”之后添加適當?shù)恼Z句。(2)定義類A1的構造函數(shù),該構造函數(shù)有兩個整型參數(shù)x和y,在構造函數(shù)中請將x賦值給數(shù)據(jù)成員b,將y作為基類A構造函數(shù)的參數(shù)值傳入。請在注釋“/*2*”后添加適當?shù)恼Z句。(3)定義類A2的構造函數(shù),該構造函
11、數(shù)有三個整型的參數(shù)x,y和z,在構造函數(shù)中請將x賦值給數(shù)據(jù)成員c,將y和z分別賦值給基類A1構造函數(shù)的參數(shù)x和y。請在注釋“/*3*”之后添加適當?shù)恼Z句。(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員c的值,上述三個值在輸出時以空格隔開。請在注釋“/*4*”之后添加適當?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。程序輸出結果如下:96962源程序文件kt15_3.cpp清單如下:#include<iostream.h>classA inta; public: /*1* intgeta()retu
12、rna; ;classA1:publicA intb; public: /*2* intgetb()returnb; ;classA2:publicA1 intc; public: /*3* voidshow() /*4* ;voidmain() A2a(2,6,9); cout<<a.geta()<<endl; cout<<a.getb()<<endl; a.show(); 【參考答案】(1)A(int x) a=x;(2)A1(int x,int y) : A(y)b=x;(3)A2(int x,int y,int z):A1(y,z)c=x
13、;(4)cout<<geta()<<" "<<getb()<<" " cout<<c<<"n"五、閱讀程序題(寫出程序運行結果)1 .#include <iostream.h>#include <string.h>class Student public: Student(char *pName="No name") cout<<"構造新同學:"<<pName<<e
14、ndl; strncpy(name, pName, sizeof(name); namesizeof(name)-1='0' Student(Student &s) cout<<"構造copy of "<<<<endl; strcpy(name, " copy of "); strcat(name,); Student() cout<<"析構 "<<name<<endl; protected: char name40
15、; ;class Tutor public: Tutor(Student &s):student(s) cout<<"構造指導教師 n" protected: Student student; ;void main() Student st1; Student st2("zhang"); Tutor tutor(st2); 2. #include "iostream.h" class B1protected: int b1; public: B1(int val1) b1=val1; cout<<&qu
16、ot;base1 is called"<<endl; ;class B2 protected: int b2; public: B2(int val2) b2=val2; cout<<"base2 is called"<<endl; ;class D: public B1,public B2protected: int d;public: D(int val1, int val2, int val3);D:D(int val1, int val2, int val3):B1(val1),B2(val2) d=val3; cout
17、<<"derived class is called"void main() D dobj(1,2,3); 3. # include <windows.h># include <iostream.h>class married private: int number; char *name; public: static int glob; void set_mes (char *a); ; void married : set_mes (char *a) name = new charstrlen(a) + 1 ; strcpy (na
18、me, a) ; number=+glob; cout << " 編號:"<<number<<endl; int married : glob= 0 ; void main () married person100;int i ; char str8 ; cout<<endl; for ( i=0; i<3; i+) cout << " 輸入姓名:" cin >> str ; personi.set_mes ( str ) ; cout<<endl; 假定輸入zha
19、ngwangli請寫出程序的結果。4 .# include <iostream.h>template <class T, int I> class ABC private: T array I ;public: void set (int x) int i; for (i=0; i<I; i+) arrayi=x+i; void get () cout <<"n 數(shù)組元素總數(shù)為:"<< I<<endl; cout <<" array"<<I-1<<&qu
20、ot;="<<arrayI-1<<endl; ;void main() ABC <int,50> abc1; abc1.set(0); abc1.get(); ABC <int,100> abc2; abc2.set(10); abc2.get(); 程序運行結果:5. #include <iostream.h>class Student public: Student() cout<<”construct student.n”; semeshours=100; gpa=3.5; protected: int s
21、emeshours; float gpa;class Teacher public: Teacher() cout<<”construct Teacher.n”; ;class Tourpairpublic: Tourpair() cout<<”construct tourpair.n”; nomeeting=0; protected: Student student; Teacher teacher; int nomeeting; ;void main()Tourpair tp;cout<<”back in main.n”; 6. #include <
22、;iostream.h>class Myclass private: int x; int y; public: Myclass(int a,int b) x=a;y=b; void print(); void myfunc();void Myclass:print() cout<<"x="<<x<<","<<"y="<<y<<endl; void Myclass:myfunc() int x=9,y=10; cout<<"In myf
23、unc: x="<<x<<","<<"y="<<y<<endl; cout<<"Myclass:x="<<Myclass:x<<","<<" <<Myclass:y="<<Myclass:y<<endl; void main() Myclass test(100,200); test.print(); /通過對象名訪問公有成員 test.myf
24、unc(); 7. #include <iostream.h>class A private: int a; public: A(int i=0)a=i; void print(); ;void A:print () cout<<"In class A, print() is called."<<endl; class B:public A private: int b; public: B(int j=-1)b=j; ;void commfun(A &aref) aref.print(); void main()A a; com
25、mfun(a); B b; commfun(b); 8. #include “iostream.h” class X1() private: int x; public: X1(int i) x=i; int getx(); friend void sum(X1 &a, X1 &b); ;int X1:getx() return x;void sum(X1 &a,X1 &b)cout<<"用友元函數(shù)求各和:"<<a.x+b.x<<endl; void sum1(X1 &a,X1 &b) co
26、ut<< "用普通函數(shù)調(diào)用類公共接口函數(shù)求和:" <<a.getx()+b.getx()<<endl; void main() X1 m(1); X1 n(2); sum(m,n); sum1(m,n);答案:1. 執(zhí)行結果如下:構造新同學:No name構造新同學:zhang構造copy of zhang構造指導教師析構 copy of zhang析購zhang析構 No name2. 該程序的執(zhí)行結果是: base1 is calledbase2 is calledderived class is called3. 程序的結果:Zha
27、ng編號1Wang編號2Li編號34. 程序的結果:數(shù)組元素總數(shù)為:50array49=49數(shù)組元素總數(shù)為:100array99=1095.其執(zhí)行結果是: construct student. construct teacher. construct tourpair. back in main.6. 程序的運行結果為:x=100,y=200In myfunc: x=9,y=10Myclass:x=100,Myclass:y=2007. 程序的運行結果為:In class A, print() is called.In class A, print() is called.8. 程序的運行結果
28、為:用友元函數(shù)求各和:3用普通函數(shù)調(diào)用類公共接口函數(shù)求和:3六、編程題1定義類模板ABC,內(nèi)含成員函數(shù)set和get。用ABC生成對象abc1和abc2。它們的數(shù)組元素數(shù)不同,顯示的結果也不同。# include <iostream.h>/ 定義類模板ABCtemplate <class T, int I> class ABC private: T array I ;/ 定義數(shù)組arraypublic: void set (int x)/ 定義成員函數(shù)set int i; for (i=0; i<I; i+)/循環(huán)I次 arrayi=x+i;/數(shù)組元素賦值 void get ()/定義成員函數(shù)get cout <<"n 數(shù)組元素總數(shù)為:"<< I<<endl; cout <<" array"<<I-1<<"="<<arrayI-1<<endl; ;void main() /由模板ABC生成對象abc1ABC <int,50> abc1;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年西安求職手冊
- 外墻直接抗裂砂漿施工方案
- 文昌東郊椰娜美椰子油加工廠環(huán)評報告表
- 岳池縣瀝青路面施工方案
- ??谑猩罾贌l(fā)電項目爐渣綜合利用項目環(huán)境影響報告表(公示稿)環(huán)評報告表
- 初一的上學期數(shù)學試卷
- 有關廣西地區(qū)桉樹高產(chǎn)營造林技術及病蟲害防治措施的討論
- 江蘇省鹽城市阜寧縣2024-2025學年七年級下學期3月月考地理試題(原卷版+解析版)
- 智研咨詢發(fā)布:2025年中國醫(yī)療器械融資租賃行業(yè)市場現(xiàn)狀及投資前景分析報告
- 加強生態(tài)環(huán)境保護與綠色發(fā)展實施方案
- 高效能人士的七個習慣The7HabitsofHighlyEffectivePeople課件
- 小學體育與健康教育科學二年級下冊第一章體育基本活動能力立定跳遠教案 省一等獎
- 工程分包管理計劃
- 民事訴訟法學整套ppt課件完整版教學教程最全電子講義(最新)
- 2022義務教育小學科學課程標準(2022版)解讀(面向核心素養(yǎng)的科學教育)
- 河北省自然科學基金資助項目申請書模板
- 四年級奧數(shù)-容斥問題
- 常用標準波導和法蘭尺寸
- 損益平衡點的計算方法
- 小學二年級下冊音樂-第4課聆聽《吉祥三寶》3--人音版(簡譜)(10張)ppt課件
- 電廠熱力試驗工試題
評論
0/150
提交評論