面向?qū)ο蟪绦蛟O(shè)計(jì) 試卷及答案 試卷A_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì) 試卷及答案 試卷A_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì) 試卷及答案 試卷A_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì) 試卷及答案 試卷A_第4頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì) 試卷及答案 試卷A_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

面向?qū)ο蟪绦蛟O(shè)計(jì)試卷第1頁(yè)(共5頁(yè))PAGE6試題編號(hào):學(xué)年第二學(xué)期(試卷)面向?qū)ο蟪绦蛟O(shè)計(jì)(期末)(A卷)(開(kāi)卷)一、讀程題(本大題共5小題,每小題10分,共50分)程序1:#define_CRT_SECURE_NO_DEPRECATE#include<iostream>usingnamespacestd;classPerson{public: Person(constcharnameV[],boolsexV,intageV){ cout<<"構(gòu)造:我知道怎么設(shè)置人的屬性,我已完成!"<<endl; strncpy(name,nameV,sizeof(name));//姓名 sex=sexV;//性別 age=ageV;//年齡 } ~Person(){ cout<<"析構(gòu):"<<name<<endl; } voidprint(){ cout<<"我是一個(gè)人,我的屬性值為:"<<name<<"," <<sex<<"," <<age<<"," <<endl; }public: charname[20];//姓名 boolsex; //性別 intage; //年齡};Personp1("張三",0,18);//張三intmain(){ p1.print(); cout<<endl; Personp2("李四",1,16);//李四 p2.print();}1、依據(jù)程序1畫(huà)出Person類(lèi)圖;2、依據(jù)程序1畫(huà)出p1對(duì)象圖;3、根據(jù)該程序描述畫(huà)出程序運(yùn)行的時(shí)序圖;程序2://Sport.hclassSport{public: Sport(); Sport(constchar*pName); voidprint(); ~Sport();private: charname[20];};//Sport.cpp#define_CRT_SECURE_NO_DEPRECATE#include<iostream>#include<string.h>#include"Sport.h"usingnamespacestd;Sport::Sport(){}Sport::Sport(constchar*pName){ strncpy(name,pName,sizeof(name)); name[sizeof(name)-1]='\0';}voidSport::print(){ cout<<name<<endl;}Sport::~Sport(){}//Person.h#include"Sport.h"classPerson{public: Person(); Person(constchar*pName); ~Person(); voidlike(Sport*likeSport); Sport*likedSport(); voidprint();private: charname[20]; Sport*sport;};//Person.cpp#define_CRT_SECURE_NO_DEPRECATE#include<iostream>#include<string.h>#include"Person.h"usingnamespacestd;Person::Person(){}Person::Person(constchar*pName){ strncpy(name,pName,sizeof(name)); name[sizeof(name)-1]='\0';}Person::~Person(){}voidPerson::like(Sport*likeSport){ sport=likeSport;}Sport*Person::likedSport(){ returnsport;}voidPerson::print(){ cout<<name;}//app.cpp#include<iostream>#include"Person.h"usingnamespacestd;intmain(){ Sports1("足球"); Sports2("籃球"); Sports3("乒乓球"); Personp1("張三"); p1.like(&s1); p1.print(); cout<<"最喜歡"; p1.likedSport()->print(); Personp2("李四"); p2.like(&s2); p2.print(); cout<<"最喜歡"; p2.likedSport()->print(); Personp3("王五"); p3.like(&s2); p3.print(); cout<<"最喜歡"; p3.likedSport()->print();}4、使用計(jì)算順序圖描述程序中表達(dá)式p1.likedSport()->print()的計(jì)算順序,并標(biāo)注出主要步驟的計(jì)算結(jié)果;5、使用對(duì)象圖描述程序中創(chuàng)建的對(duì)象及其連接。二、編程題(本大題共3小題,每小題10分,共30分)根據(jù)下面的類(lèi)圖:1、請(qǐng)依據(jù)給出的類(lèi)圖,編寫(xiě)Student類(lèi)的聲明代碼;2、給Student類(lèi)重載一個(gè)新的構(gòu)造函數(shù)Student(constchar*pName,constTdate&tBirthday,boolbSex),編寫(xiě)其實(shí)現(xiàn)代碼;3、給GraduateStudent類(lèi)重載一個(gè)新的構(gòu)造函數(shù)GraduateStudent(constchar*pName,constTdate&tBirthday,boolbSex,floatfCredit,Teacher*t),編寫(xiě)其實(shí)現(xiàn)代碼。三、開(kāi)發(fā)步驟及任務(wù)(本大題共2小題,每小題10分,共20分)1、列出兩種分析設(shè)計(jì)工具,并舉例說(shuō)明其作用。 注:這里的分析設(shè)計(jì)工具不是PowerDesigner等工具軟件,而是其支持繪制的具體工具(模型),如類(lèi)圖、時(shí)序圖、計(jì)算順序圖等。閱讀教材【5.1Josephus游戲】,簡(jiǎn)述主要開(kāi)發(fā)步驟以及每個(gè)步驟完成的主要任務(wù)。試題編號(hào):學(xué)年第二學(xué)期(試卷)面向?qū)ο蟪绦蛟O(shè)計(jì)(期末)(A卷)(開(kāi)卷)一、讀程題(本大題共5小題,每小題10分,共50分)程序1:#define_CRT_SECURE_NO_DEPRECATE#include<iostream>usingnamespacestd;classPerson{public: Person(constcharnameV[],boolsexV,intageV){ cout<<"構(gòu)造:我知道怎么設(shè)置人的屬性,我已完成!"<<endl; strncpy(name,nameV,sizeof(name));//姓名 sex=sexV;//性別 age=ageV;//年齡 } ~Person(){ cout<<"析構(gòu):"<<name<<endl; } voidprint(){ cout<<"我是一個(gè)人,我的屬性值為:"<<name<<"," <<sex<<"," <<age<<"," <<endl; }public: charname[20];//姓名 boolsex; //性別 intage; //年齡};Personp1("張三",0,18);//張三intmain(){ p1.print(); cout<<endl; Personp2("李四",1,16);//李四 p2.print();}畫(huà)出Person類(lèi)圖;3分3分4分3分3分4分對(duì)象名3分,冒號(hào)1對(duì)象名3分,冒號(hào)1分,類(lèi)名3分3分3分3、畫(huà)出運(yùn)行時(shí)序圖;p1和p2前后p1和p2前后位置正確2分;p1定義在main()之前1分;p1分配內(nèi)存和調(diào)用構(gòu)造函數(shù)的消息正確1分;p1對(duì)象描述正確1分;調(diào)用p1的print()消息正確1分;p2定義在main()內(nèi)部1分;p2分配內(nèi)存和調(diào)用構(gòu)造函數(shù)的消息正確1分;p2對(duì)象描述正確1分;調(diào)用p2的print()消息正確1分;調(diào)用對(duì)象的~Person()消息不計(jì)分。程序2://Sport.hclassSport{public: Sport(); Sport(constchar*pName); voidprint(); ~Sport();private: charname[20];};//Sport.cpp#define_CRT_SECURE_NO_DEPRECATE#include<iostream>#include<string.h>#include"Sport.h"usingnamespacestd;Sport::Sport(){}Sport::Sport(constchar*pName){ strncpy(name,pName,sizeof(name)); name[sizeof(name)-1]='\0';}voidSport::print(){ cout<<name<<endl;}Sport::~Sport(){}//Person.h#include"Sport.h"classPerson{public: Person(); Person(constchar*pName); ~Person(); voidlike(Sport*likeSport); Sport*likedSport(); voidprint();private: charname[20]; Sport*sport;};//Person.cpp#define_CRT_SECURE_NO_DEPRECATE#include<iostream>#include<string.h>#include"Person.h"usingnamespacestd;Person::Person(){}Person::Person(constchar*pName){ strncpy(name,pName,sizeof(name)); name[sizeof(name)-1]='\0';}Person::~Person(){}voidPerson::like(Sport*likeSport){ sport=likeSport;}Sport*Person::likedSport(){ returnsport;}voidPerson::print(){ cout<<name;}//app.cpp#include<iostream>#include"Person.h"usingnamespacestd;intmain(){ Sports1("足球"); Sports2("籃球"); Sports3("乒乓球"); Personp1("張三"); p1.like(&s1); p1.print(); cout<<"最喜歡"; p1.likedSport()->print(); Personp2("李四"); p2.like(&s2); p2.print(); cout<<"最喜歡"; p2.likedSport()->print(); Personp3("王五"); p3.like(&s2); p3.print(); cout<<"最喜歡"; p3.likedSport()->print();}4、使用計(jì)算順序圖描述程序中表達(dá)式p1.likedSport()->print()的計(jì)算順序,并標(biāo)注出主要步驟的計(jì)算結(jié)果;4個(gè)步驟的順序各14個(gè)步驟的順序各1分;①、③計(jì)算結(jié)果各1分;②、④計(jì)算結(jié)果各2分。5、使用對(duì)象圖描述程序中創(chuàng)建的對(duì)象及其連接。正確描述3個(gè)正確描述3個(gè)Person對(duì)象2分;正確描述3個(gè)Sport對(duì)象2分;3個(gè)連接各2分。二、編程題(本大題共3小題,每小題10分,共30分)根據(jù)下面的類(lèi)圖:子類(lèi)父類(lèi)各2子類(lèi)父類(lèi)各2分往下6行每行1往下6行每行1分public: Student(constchar*pName,constTdate&tBirthday,boolbSex,floatfCredit); Student(constStudent&oldStudent); voidprint(void);protected: floatcredits;//學(xué)分};2、給Student類(lèi)重載一個(gè)新的構(gòu)造函數(shù)Student(constchar*pName,constTdate&tBirthday,boolbSex),編寫(xiě)其實(shí)現(xiàn)代碼;Student::Student(constchar*pName,constTdate&tBirthday,boolbSex):Person(pName,tBirthday,bSex)2分4分4分{2分4分4分}3、給GraduateStudent類(lèi)重載一個(gè)新的構(gòu)造函數(shù)GraduateStudent(constchar*pName,constTdate&tBirthday,boolbSex,floatfCredit,Teacher*t),編寫(xiě)其實(shí)現(xiàn)代碼。3分GraduateStudent::GraduateStudent(constchar*pName,constTdate&tBirthday,boolbSex,floatfCredit, Teacher*t)3分1分 :Student(pName,tBirthday,bSex,fCredit),supervisor(t)1分3分3分{3分3分}三、開(kāi)發(fā)步驟及任務(wù)(本大題共2小題,每小題10分,共20分)1、列出兩種分析設(shè)計(jì)工具,并舉例說(shuō)明其作用。 注:這里的分析設(shè)計(jì)工具不是PowerDesigner等工具軟件,而是其支持繪制的具體工具,如流程圖、類(lèi)圖、計(jì)算順序圖等。類(lèi)圖: 在UML的靜態(tài)機(jī)制中類(lèi)圖是一個(gè)重點(diǎn),它不但是設(shè)計(jì)人員關(guān)心的核心,更是實(shí)現(xiàn)人員關(guān)注的核心。建模工具也主要根據(jù)類(lèi)圖來(lái)產(chǎn)生代碼。 酌情打分,參考點(diǎn)如下:概念;作用;酌情打分,參考點(diǎn)如下:概念;作用;關(guān)系描述;樣例及分析。 在UML類(lèi)圖中,用一個(gè)矩形代表一個(gè)類(lèi),例如: 這是一個(gè)代表人的類(lèi),該類(lèi)圖分為三個(gè)部分。 第一部分為類(lèi)名。 第二部分為類(lèi)的屬性,格式為修飾符屬性名:屬性類(lèi)型。修飾符為“+”說(shuō)明該屬性為public型,“#”說(shuō)明該屬性為protected型,“-”說(shuō)明該屬性為private型。 第三部分為類(lèi)的方法,格式為修飾符方法名(參數(shù)類(lèi)型1參數(shù)名1,……):方法返回值類(lèi)型。修飾符為“+”說(shuō)明該方法為public型,“#”說(shuō)明該方法為protected型,“-”說(shuō)明該方法為private型。 類(lèi)之間的關(guān)系有關(guān)聯(lián)、組合、聚合、繼承等。 關(guān)聯(lián): 上圖所示的類(lèi)圖,表達(dá)的意思是“人喜歡體育運(yùn)動(dòng)”,表示集合“人”和“體育運(yùn)動(dòng)”之間的一種對(duì)應(yīng)關(guān)系。箭頭由Person指向Sport,說(shuō)明Person類(lèi)中有Sport類(lèi)的成員變量。 組合:上圖所示的組合類(lèi)圖,Student是整體,StudentID是部分,實(shí)心菱形指向整體。Student對(duì)象消亡,其包含的StudentID對(duì)象也一同消亡。聚合:上圖所示的聚合類(lèi)圖,Car是整體,Motor和Wheel是部分,空心菱形指向整體。Car對(duì)象消亡,其包含的Motor、Wheel對(duì)象可以繼續(xù)存在。 繼承: 上圖所示的繼承關(guān)系圖,空心箭頭指向父類(lèi)。酌情打分,參考點(diǎn)如下:和類(lèi)圖的關(guān)系;酌情打分,參考點(diǎn)如下:和類(lèi)圖的關(guān)系;樣例及分析;作用。 對(duì)象圖是類(lèi)圖的實(shí)例,幾乎使用與類(lèi)圖完全相同的標(biāo)識(shí)。他們的不同點(diǎn)在于對(duì)象圖顯示類(lèi)的多個(gè)對(duì)象實(shí)例,而不是實(shí)際的類(lèi)。 上圖中的兩個(gè)矩形,分別表示了人的兩個(gè)對(duì)象“張三”和“李四”。矩形的頂部以“對(duì)象名:類(lèi)名”的格式表示對(duì)象及所屬的類(lèi)。矩形的下面部分列舉了“人”的屬性名及對(duì)象的屬性值,屬性名與屬性值之間用等號(hào)“=”分隔。 對(duì)象圖的作用: 1、描述業(yè)務(wù)或軟件系統(tǒng)在某一時(shí)刻,對(duì)象的組成、結(jié)構(gòu)和關(guān)系; 2、說(shuō)明復(fù)雜的數(shù)據(jù)結(jié)構(gòu):對(duì)于復(fù)雜的數(shù)據(jù)結(jié)構(gòu),有時(shí)候很難對(duì)其進(jìn)行抽象成類(lèi)表達(dá)之間的交互關(guān)系,使用對(duì)象圖描繪對(duì)象之間的關(guān)系可以幫助我們說(shuō)明某一時(shí)刻的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),從而有助于對(duì)復(fù)雜數(shù)據(jù)結(jié)構(gòu)的抽象; 3、表示每個(gè)對(duì)象之間的行為。 上圖所示的對(duì)象圖,表明了main()函數(shù)中,創(chuàng)建了類(lèi)Person的三個(gè)對(duì)象,類(lèi)Sport的三個(gè)對(duì)象,建立了關(guān)聯(lián)like中的三個(gè)連接。創(chuàng)建的對(duì)象及其連接,對(duì)象p2和p3連接到同一個(gè)對(duì)象s2,即“籃球”項(xiàng)目。酌情打分,參考點(diǎn)如下:概念;酌情打分,參考點(diǎn)如下:概念;結(jié)構(gòu);元素;作用;樣例及分析。 時(shí)序圖用于描述對(duì)象之間的傳遞消息的時(shí)間順序,即用例中的行為順序。 在UML中,時(shí)序圖表示為一個(gè)二維的關(guān)系圖。其中,縱軸是時(shí)間軸,時(shí)間延豎線向下延伸,橫軸代表在協(xié)作中各個(gè)獨(dú)立的對(duì)象,當(dāng)對(duì)象存在時(shí),生命線用一條虛線表示,消息用從一個(gè)對(duì)象的生命線到另一個(gè)對(duì)象的生命線的箭頭表示。箭頭以時(shí)間的順序在圖中上下排列。 時(shí)序圖中包括如下元素:角色,對(duì)象,生命線,激活期和消息。 角色:系統(tǒng)角色,可以是人或者其他系統(tǒng),子系統(tǒng)。 對(duì)象:使用矩形表示,并且對(duì)象名稱(chēng)下有下劃線。將對(duì)象置于時(shí)序圖的頂部說(shuō)明在交互開(kāi)始時(shí)對(duì)象就已經(jīng)存在了,如果對(duì)象的位置不在頂部,表示對(duì)象是在交互的過(guò)程中被創(chuàng)建的。 生命線:生命線是一條垂直的虛線,表示時(shí)序圖中的對(duì)象在一段生命周期內(nèi)存在。每個(gè)對(duì)象底部中心的位置都帶有生命線。 激活期:代表時(shí)序圖中的對(duì)象執(zhí)行一項(xiàng)操作的時(shí)期,在時(shí)序圖中每條生命線上的窄的矩形代表活動(dòng)期。它可以被理解成C語(yǔ)言語(yǔ)義中一對(duì)花括號(hào)“{}”中的內(nèi)容。 消息:兩個(gè)對(duì)象之間的單路通信.從發(fā)送方指向接收方。 時(shí)序圖的作用: 1、展示對(duì)象之間交互的順序:將交互行為建模為消息傳遞,通過(guò)描述消息是如何在對(duì)象間發(fā)送和接收的來(lái)動(dòng)態(tài)展示對(duì)象之間的交互; 2、能體現(xiàn)出交互的時(shí)間順序; 3、可以直觀的描述并發(fā)進(jìn)程。 上圖描述了兩個(gè)Person對(duì)象的創(chuàng)建過(guò)程。語(yǔ)句Personp1("張三",0,18,180.5,65.3)的語(yǔ)義是創(chuàng)建一個(gè)全局對(duì)象p1。在執(zhí)行main()函數(shù)的代碼前,先在全局?jǐn)?shù)據(jù)區(qū)為全局對(duì)象p1分配內(nèi)存,然后再按照p1.Person("張三",0,18,180.5,65.3)的語(yǔ)義調(diào)用類(lèi)Person的構(gòu)造函數(shù),以設(shè)置對(duì)象p1的屬性值,然后再跳轉(zhuǎn)執(zhí)行main()函數(shù)的代碼。 main()函數(shù)中,語(yǔ)句Personp2("李四",1,16,165,46.5)的語(yǔ)義是創(chuàng)建

溫馨提示

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

評(píng)論

0/150

提交評(píng)論