




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
简答题1、传统的结构化程序设计的优点和缺陷是什么?优点:(1)这种程序设计方法力求算法描述准确。(2)对每一子过程模块容易进行程序对的性证明。缺陷:(1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稔定和多变的,因此不能直接反映人类求解问题的思绪。(2)程序代码可重用性差。程序中除少数标准库函数外,每设计•个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。(3)维护程序的一致性困难。该种方法将数据与对数据进行解决的程序代码分离。2、什么是对象?每个对象都具有属性(Attribute)和方法(Meth。d)这两方面的特性。对象的属性描述了对象的状态和特性,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。3、什么是消息?在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当•个对象需要此外一个对象提供服务时,它向对方发出•个服务请求,而收到请求的对象会响应这个请求并完毕指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,按照接受消息对象的不同可以自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。5、什么是面向对象的程序设计方法?这种方法将设计目的从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。
ca1lcd"<<endl;}{b2=va12;cout«"base2isca1lcd"<<endl;});classD:publieBl,publicB2{protected:intd;publie:D(intval1,intva12,intval3);};D::D(intvail,intva12»intva13):B1(va11),B2(val2){d=val3;cout«"derivedclassiscalied”;}voidmain(){Ddobj(l,2,3);}3.#include<windows.h>#inc1ude<iostream.h>classmarried{private:intnumber;char*name?pub1ic:staticintglob?voidset_mes(char*a);voidmarried::set_mes(char*a){name=newcharfstrlen(a)+1];{name=newstrcpy(name,a);。number=+4-glob?cout«"编号:"vVnumber«endl;)intmarried::gIob=0;voidmain(){marriedperson”00];inti:gcharstr[8]cout<<end1;for(i=0;i<3;i++)g{cout«"输入姓名:":cin»s
person[i].set_mes(str);cout«end1;)假定输入zhang/wangZ1i/请写出程序的结果。#include<iostream,h>tempiatc<c1assT,intI>classABCprivate:Tarray[I];。。public:voidset(intx>{inti;for(i=0;i<I;i++)array[i]=x+i;)voidget()。{cout<<"\n数组元素总数为:"VvI«end1;coul«"array["«I-1«"]="<<array[I-1]«endl;1;voidmain(){ABC<int,50>abcl;abc1.set(0);abcl.get();ABC<int,1(K)>abc2;abc2.set(10);abc2.get();}程序运营结果:5.#include<iostream.h>classStudent{public:Student(){cout«*,constructstudent.\n";semeshours=l()();gpa=3.5;protected:intsemeshours;f1oatgPa;);classTeacher{pub1ic:Teacher(){cout<<,,construetTeacher.Vn',;);classTourpair{public:Tourpair(){coutvv“constructtourpair.\n";nomeeting=();}protected:Studentstudent;Teacherteacher;intnomeeting;);voidmain(){Tourpairtp;cout<V"backinmain.\n”;}classMyclass{private:intx;iniy;publie:Myc1ass(inta,intb){x=a;y=b;)voidprint();voidmyfunc();};voidMyc1ass::print(){cout<<"x=*'<<x<<","«',y=',«y«endI;}voidMyclass::myfunc(){intx=9,y=10;cout«nInmyfunc:x=n«x<<'*,"<<"y=,,<<y«end1:cout<<"Myc1ass::x="<VMyclass::x<«Myclass::y=u<<Myc1ass::y«end1;)voidmain(){Myclasstest(100,200);test.print();//通过对象名访问公有成员test.myfunc();}#include<iostream,h>classA{private:inta;pub1ic:A(inti=0){a=i;}voidprint(););voidA::print(){cout«”Inc1assA,print()iscalled.M<<endl;)classB:pub1icA(private:intb;public:B(intj=-l){b=j;)};voidcommfun(A&aref){aref.print();}voidmain()(Aa;commfun(a);Bb;commfun(b);#include"iostream.h"classXl(){private:intx;public:Xl(inti){x=i;}intgetx();friendvoidsum(X1&a,X1&b);};intX1::gctx(){returnx;}voidsum(XI&a,X1&b>{cout<V"用友元函数求各和:"<<a.x+b.x«endl;)voidsum1(X1&a,X1&b){cout<<”用普通函数调用类公共接口函数求和:”«a.getx()+b.getx()«end1;)voidmain(){XIm(l);XIn(2);sum(m,n);sum1(m,n);)答案:.执行结果如下:构造新同学:Noname构造新同学:zhang构造copyofzhang构造指导教师析构copyofzhang析购zhang析构Noname.该程序的执行结果是:basclisca11cdbase2iscailedderivedclassiscalied.程序的结果:Zhang编号1Wang编号2Li编号3.程序的结果:数组元素总数为:50array[49]=49数组元素总数为:100array[99]=109.其执行结果是:conslructstudent.constructteacher.constructtourpair.backininain..程序的运营结果为:x=100,y=200Inmyfunc:x=9,y=10Myclass::x=100,Myclass::y=200.程序的运营结果为:Inc1assA,print()iscalied.InclassA,print()iscalled..程序的运营结果为:用友元函数求各和:3用普通函数调用类公共接口函数求和:3六、编程题.定义类模板ABC,内含成员函数setflgeto用ABC生成对象abcl和abc2o它们的数组元素数不同,显示的结果也不同。#include<iostream.h>//定义类模板ABCtemplate<classT,in11>classABC{private:TarrayfI1产〃定义数组arraypub1ic:voidset(intx)。//定义成员函数set{inti;for(i=0;i<I;i++)。〃循环I次arrayfi]=x+i;//数组元素赋值Voidget()。。〃定义成员函数get{cout<<n\n数组元素总数为:"VvI«endl;cout«uarray["<<I—1<<"]="«array[l—11<<endl;}};voidmain(){//由模板ABC生成对象abclABC<int,5O>abcl;abc1.set(O);〃调用对象abcl.setabc1.get();〃调用对象abc1.get//由模板ABC生成对象abc2ABC<int,100>abc2;abc2.set(10);//调用对象abc2.setabc2.get();//调用对象abc2.get)^Bui]d_l是一个关于楼房数据的类。它的数据成员有posi_x.posi_y和area,分别是楼房位置的经、纬度和建筑面积。它的函数成员只有set1,用于设立数据成员posi.x.posLy和area的值。让Build_1作为基类,再增长数据成员high、函数成员set2和disp来定义派生类Build_2。#include<iostream.h>c1assBuild_l〃定义基类{protected:intposi_x;//有三个保护型的数据成员intposi_y;intarea;在OOP中,将“对象”作为系统中最基本的运营实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息互相作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行解决等。6、面向对象方法的特点是什么?(1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,乂由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。(2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的所有性质,OOP中称这种机制为继承。(3)00P方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时减少了程序设计过程中犯错的也许性,达成了事半功倍的效果。7、面向对象的程序设计方法与结构化程序设计方法的比较(1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和解决数据的过程代码是分离的、互相独立的实体,设计出的程序可重用代码少,且当代码量增长时维护数据和代码的一致性困难。(2)面向对象程序设计方法中,对象所具有的封装性和继承性使得代码重用成为也许,并大大减少了程序犯错的也许性。(3)面向对象方法吸取了结构化程序设计方法的优点,同时引入了新概念、新机制并建立了比传统方法更高层次的抽象。二、选择题略三、填空题publie:voidset1(intx,inty,inta){posi_x=x;posi_y=y;area=a;});//定义派生类Bui1d_2c1assBuild_2:publieBuild_1{intheight;public:voidset2(inth)height=h;}voiddisp(){cout«"\n经度:n«posi—x«endl;cout«M纬度:"v〈posi_y«endI;cout«"高度:"vVheight<<endI;cout<<Mffi^R:"<<area<<endl«endl;}};voidmain(){//用Build_2生成对象。bjBui1d_2obj;obj.setl(100,200,300);obj.set2(400);obj.disp();(1)类是一个支持集成的抽象数据类型,而对象是类的【1】O【参考答案】[1]实例(2)在C++语言的面向对象程序设计框架中,【2】是程序的基本组成单元。【参考答案】[2]类(3)C++语言程序的注释可以出现在程序中的任何地方,一个注释以【3】作为开始和结束的标记。【参考答案】[3]/**/(4)以下程序的输出结果是【4】.#include"iostream,h"voidfun(){staticinta;a+=2;cout«a«"}voidmain(){intcc;for(cc=l;cc<4;cc++)fun();cout<<end1;)【参考答案】[4]246(5)下列程序在构造函数和析构函数中申请和释放类的数据成员ini*a,申请时使用形参b初始化a,请填空。classA{public:A(intb);〜A();private:int*a;};A::A(intb)(【5】;}A::~A(){【6】;}【参考答案】]a=newint(b);[6]deletea多态性与【7】和【8】共同构成面向对象程序设计的三大机制。【参考答案】[7]数据封装【8】继承(7)将x+y*z中的“"用成员函数重载,”用友元函数重载应写为【9】o【参考答案】[9]x.opcrator+(operator*(y,z))(8)派生类的成员一般分为两部分,一部分是[10],另一部分是自己定义的新成员。【参考答案】[10]从基类继承的成员(9)以下程序输出的结果是【11】o#inelude"iostream.h"voidmain(){inta=5>b=4,c=3,d;d=(a>b>c);cout«d;}【参考答案】0(10)假如要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是【12】。【参考答案】friendvoidA();(11)假如类B继承了类A.则称类A为类B的基类,类B称为类A的[13]。【参考答案】[13]派生类(12)将x+y中的+运算符用友元函数重载应写为【14】。【参考答案】[14]operator+(x,y)(I3)已知程序的结果为123,请填空。#inc1udetemp1ateclassA{pub1ic:Tx,y,z;voiddisplay(){cout«x«""«y<<""«z;}};voidmain(){Aa1;[15][17]a1.display();}【参考答案】[15]al.x=1[16]al.y=2[17]al.z=3(14)下列程序段的输出结果是[18]ocout«fixed<<509.<<endl:【参考答案】509.123457四、综合应用题.使用VC6打开考生文献夹下的工程ktl5_3o此工程包含一个ktl5_3.cpp,其中定义了类A、A1和A2,其中Al类由A类公有派生,A2类由Al类公有派生。上述三个类的定义并不完整,请按规定完毕下列操作,将程序补充完整。(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“〃**1**”之后添加适当的语句。(2)定义类A1的构造函数,该构造函数有两个整型参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传入。请在注释“/后添加适当的语句。(3)定义类A2的构造函数,该构造函数有三个整型的参数x,y和z,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//**3**”之后添加适当的语句。(4)完毕类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员c的值,上述三个值在输出时以空格隔开。请在注释“//**4**”之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。程序输出结果如卜.:962源程序文献kt15_3.cpp清单如下:#inciude<iostream.h>classA{inta;publie://**i**intgcta(){returna:}};classA1:publicA{intb;public://**2木*intgetb(){returnb;)};cIassA2:publicAl{intc;public://**3**voidshow(){〃**4**}};voidinain(){A2a(2,6,9);cout«a.geta()<<end1;cout«a.getb()«endl:;a.show();}【参考答案】(l)A(intx){a=x;}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国矿业大学《班主任工作概论》2023-2024学年第二学期期末试卷
- 2025年重庆市兼善教育集团初三3月第一次中考模拟物理试题含解析
- 赣州职业技术学院《现代生物技术进展》2023-2024学年第二学期期末试卷
- 新疆生产建设兵团2024-2025学年初三模拟考试(一)物理试题理试卷含解析
- 2025年山东省临沂市兰山区部分校初三第一次月考考试化学试题理含解析
- 宁德时代施工方案
- 2025年:探讨合同管理在工程造价控制中的关键作用
- 管路疏通施工方案
- Unit 4 the art of having fun 第四课时Presenting ideas&Reflection 教学设计 2024-2025学年外研版(2024)七年级英语下册
- 营养培训与认证相关内容试题及答案
- 电影音乐欣赏智慧树知到答案章节测试2023年华南农业大学
- GB/T 39766-2021人类生物样本库管理规范
- 315食品安全宣传PPT模板
- GB/T 20145-2006灯和灯系统的光生物安全性
- GB 21519-2008储水式电热水器能效限定值及能效等级
- 2023年陕西省学业水平考试物理试真题答案无
- 运输供应商年度评价表
- 旅游项目融投资概述
- 全旅馆业前台从业人员资格证考试答案解析
- 十二经络及腧穴课件
- 立式圆筒形储罐罐底真空试验记录
评论
0/150
提交评论