鄭大遠程教育-面向?qū)ο蟪绦蛟O(shè)計
鄭州大學現(xiàn)代遠程教育 面向?qū)ο蟪绦蛟O(shè)計課程考核要求說明:本課程考核形式為提交作業(yè),完成后請保存為 WORD格式的文檔,登陸學習平臺提交,并檢查和確認提交成功。一 作業(yè)要求1.請獨立自主完成作業(yè)內(nèi)容。二 作業(yè)內(nèi)容一) 、簡答題:(每題 5 分,共 30 分)1、異常處理的作用是什么?答:答:(1).try 和 catch 語句:將要處理的代碼放入 try 塊中,然后創(chuàng)建相應(yīng)的 catch 塊的列表。如果生成都異常與 catch 中提到的相匹配,那么 catch 條件中的塊語句就被執(zhí)行。try 塊后可能有許多catch 塊,每個都處理不同的異常。每個 catch 中的參數(shù)都是Exception 的子類。 (2).finally 語句:定義一個總是執(zhí)行的代碼,而不考慮異常是否被捕獲。(3).throw 引起一個異常。2、什么是容器?什么是迭代器?什么是算法?他們之間有何關(guān)系?答:容器:容器能夠通過模版的方法,裝下各種類型的節(jié)點元素。迭代器:迭代器是一種 smart pointer。迭代器是一種行為類似指針的對象。迭代器所指向的對象為容器 中元素(結(jié)構(gòu)體)的節(jié)點。如定義一個 class List 的容器,容器的節(jié)點為 ListItem,那么迭代器就應(yīng)該指向(的對象)容器中的 ListItem 節(jié)點。 而迭代器通過重載*(解引用)運算符,從而就可以得到節(jié)點的值。通過重載 operator->運算符就可以得到容器節(jié)點地址(指針)算法:算法通過操作容器對應(yīng)的迭代器,就可以間接地操作容器中的元素。而不需要關(guān)注容器的內(nèi)部細節(jié) 三者之間聯(lián)系: 每個容器都有專屬的迭代器,而算法通過迭代器對容器中的元素進行操作。3、什么是靜態(tài)成員?有何特點?答:在 c+類中聲明成員時可以加上 static 關(guān)鍵字,這樣聲明的成員就叫做靜態(tài)成員(包括數(shù)據(jù)成員和成員函數(shù)) 。靜態(tài)成員的特點是:不管這個類創(chuàng)建多少個對象,其靜態(tài)成員在內(nèi)存中只保留一份副本,這個副本為該類的所有對象所共享。面對對象方法中還有類屬性的概念,類屬性是描述類的所有對象共同特征的一個數(shù)據(jù)項對于任何對象實例,它的屬性值是相同的,C+通過靜態(tài)數(shù)據(jù)成員來實現(xiàn)類屬性。4、類的構(gòu)造函數(shù)和析構(gòu)函數(shù)有何特點?答:構(gòu)造函數(shù)主要用來對成員初始化和分配空間,析構(gòu)函數(shù)用于執(zhí)行一些清理任務(wù),如釋放分配給對象的內(nèi)存空間等。構(gòu)造函數(shù)有以下特點:(1)構(gòu)造函數(shù)的名字必須與類名相同;(2)構(gòu)造函數(shù)可以有任意類型的參數(shù),但不能具有返回類型;(3)定義對象時,編譯系統(tǒng)會自動地調(diào)用構(gòu)造函數(shù);(4)構(gòu)造函數(shù)是特殊的成員函數(shù),函數(shù)體可以在類體內(nèi),也可寫在類體外;(5)構(gòu)造函數(shù)被聲明為公有函數(shù),但它不能像其他成員函數(shù)那樣被顯式調(diào)用,它是在定義對象的同時被調(diào)用的。析構(gòu)函數(shù)有以下特點:(1)析構(gòu)函數(shù)的名字必須與類名相同,但它前面必須加一個波浪號 ;(2)析構(gòu)函數(shù)沒有參數(shù),也沒有返回值,而且不能被重載,因此在一個類中只能有一個析構(gòu)函數(shù);(3)當撤銷對象時,編譯系統(tǒng)會自動地調(diào)用析構(gòu)函數(shù)。5、類成員的訪問權(quán)限有哪些?答:類成員的訪問權(quán)限:繼承有關(guān) public 此成員都可公開調(diào)用;protected 同包或?qū)^承的類才可公開調(diào)用,靜態(tài)成員也必須繼承后才能調(diào)用 A.a 或使用 public;friendly 對同包的類可以公開調(diào)用;private 只有本類實例成員方法才可調(diào)用。6、面向?qū)ο蟮幕疽厥鞘裁矗看穑撼橄?、繼承、封裝、多態(tài);二) 、分析下面的代碼,回答問題(每題 10 分,共 40 分)1下面程序的執(zhí)行結(jié)果是什么?為什么?class Bprotected:virtual void f( )coutf()調(diào)用 C 中的 f。2下面程序的執(zhí)行結(jié)果是什么?為什么?class Apublic:int n;class B:public A;class C:public A;class D:public B, public Cint getn() return B:n;void main()D d;d.B:n=10;d.C:n=20;coutdisp();void main()B b;C c;Cdisp(Cdisp(答:輸出:class B class C B 類和 c 類是 a 類的派生,p 作為參數(shù)時,是一個 A 的指針,但是編譯時,調(diào)的 disp 是各自繼承類成員函數(shù)。 所以輸出是 class B,class C。三、根據(jù)要求編寫程序:(每題 15 分,共 30 分)1 設(shè)計一個父親類 Father、母親類 Mother 和子女類 Child,其主要數(shù)據(jù)是姓名,子女使用父親的姓,最后輸出子女的姓名和父母姓名。答:程序如下:#include #include using namespace std; class father public: father() father(string x,string m) this->x=x; this->m=m; void getx() cout #include #include using namespace std; class Triangle private: double x,y,z; double p,m; static double s; public: Triangle(double a,double b,double c) x=a; y=b; z=c; p=(y+x+z)/2; m=sqrt(p*(p-x)*(p-y)*(p-z); s=s+m; void print() cout>a>>b>>c) cin>>a1>>b1>>c1; Triangle s1(a,b,c); Triangle s2(a1,b1,c1);s1.print(); s2.print(); Triangle:show(); return 0;