郑州大学《面向对象程序设计》课程作业.doc
面向对象程序设计 郑州大学远程教育
郑州大学现代远程教育《面向对象程序设计》课程考核要求说明:本课程考核形式为提交作业,完成后请保存为WORD 2003格式的文档,登陆学习平台提交,并检查和确认提交成功(能够下载,并且内容无误即为提交成功)。
一.作业要求1.请独立自主完成作业内容。
二.作业内容一)、简答题:(每题 5 分,共30 分)1、函数模板与函数有何关系?函数就是一个功能,一个程序文件包含多个函数,但只能有一个main函数。
函数模版是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用的模版就是函数模版2、类模板与类有和关系?类模版是对一批仅仅成员数据类型不同的类的抽象,只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。
类(class)定义特定程序中的数据类型。
这些数据类型的实例被称为对象,这些实例可以包含程序员定义的成员变量、常量、成员函数,以及重载的运算符。
语法上,类是C中结构体(struct)的扩展,结构体不能包含函数以及重载的运算符3、什么是继承?所谓“继承”就是在一个已存在的类的基础上建立一个新的类。
已存在的类称为“基类(base class)”或“父类(father class)”,新建的类称为“派生类(derived class)”或“子类(son class )”。
一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。
通过继承,一个新建子类从已有的父类那里获得父类的特性。
4、继承方式有哪些?产生的结果是什么?public、private、protected三种(它们直接影响到派生类的成员、及其对象对基类成员访问的规则)。
(1)public(公有继承):继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。
派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。
面向对象程序设计大作业
《面向对象程序设计》期末大作业一、大作业题目二、要求(1)依照学生人数分成原那么上2至3人(少量4人)一组,各小组选择感爱好的题目,也可自拟题目。
(2)解题要求:现面向对象程序设计语言的特点,程序代码很多于400行;利用技术:表现OOP 的抽象、封装、继承、多态等4种关键技术中的两种或多种;程序结构良好,没有明显错误;依照大作业格式,在课程终止最后两周(1六、17周)上交电子稿。
(3)最终提交。
●大作业报告依照原有的系统设计,编码时期的工作,整理书写实验报告,内容包括:①系统说明②实验分析与结论③收成与体会④附程序代码●最后提交材料:①大作业报告(打印稿和电子稿)②源程序代码(CPP文件),执行文件(EXE)③小组内分工说明(人员名单(不超过4人)、学号、角色分工)三、说明假设两人和多人程序大体相同或撰写的报告大体相同的情形下,经认真比较查证属彼此剽窃的,剽窃者和被剽窃者均按“0”分计。
大作业报告样式如下:(1) 大作业的页面设置为上、下、左、右页边距都为厘米,格式段落中行距为固定值20磅。
(2) 中文字体为宋体小四号,英文字体为Times New Roman小四。
补充说明:关于大作业中的程序、类或函数必然要有详细的注释,如下例所示。
关于类包括:类的成员变量说明,类的成员函数说明,功能,基类、继承类、实现进程等等。
/********************************************************************类名:私有成员:公有成员:功能:作为下面要概念派生类的基类实现步骤:(1)概念类名(2)声明私有成员(3)声明必要的函数作为公有成员,其中狗狗找函数用来分派存储空间,对私有对象进行初始化(4)对类进行封装/********************************************************************关于函数包括:先对函数及各参数进行说明,函数功能说明,实现原理及步骤说明,函数中的关键部位也需要进行说明。
《面向对象程序设计》大作业
《面向对象程序设计》大作业项目名称基于C#的一款扫雷游戏班级7B1551组员李豪雄曹启李宁一、开发环境开发环境:vs2010开发语言:C#二、系统功能设计1.创建项目功能实现创建项目,找图片素材2.界面设计介绍关于扫雷游戏界面的设计提出希望在对应级别(初级、中级、高级、自定义)的按钮的显示勾,以表示目前的游戏等级。
3.雷区绘制界面中雷区的绘制方法4.菜单操作有两个时候需要对它进行操作,一个是加载上次游戏设置的时候,一个是在游戏过程中进行设置的时候,设计菜单中的相关方法5.内部实现内部埋雷,放雷,标旗子,标问号的方法6.整体完善写游戏的胜利条件,自定义游戏的初始化及相关调试任务三、实现1、创建项目功能实现玩过扫雷的读者应该知道,扫雷需要用到三种图片素材——地雷、红旗、问号。
当右击一个方块的时候,会插上红旗,表示游戏者认为该方块内有地雷;再次右击该方块,会变成问号,表示不确定该方块内是否有地雷;第三次右击该方块,问号消失,恢复到初始的状态。
我们前往Iconfinder寻找合适的图标,并且通过Photoshop或者Illustrator的处理得到我们所需要的图标。
文章中含有下载地址的图标资源可以使用右键—目标另存为进行下载。
通过一定的搜索以及图片的处理,得到了下面一组素材图标,下载地址:Doubbt、Flag、Mine。
除了这些素材以外,我们还需要找一个图标,使得整个程序看上去更加正式一点,这里使用图标如下,注意程序图标的后缀为ico,下载地址:favicon接下来,我们打开Visual Studio 2013开始创建工程,界面如下:创建好的项目如下图所示。
我们需要对这个窗口的几项属性进行修改,首先通过Text属性将它的标题修改为“Minesweeper”;通过FormBorderStyle属性将它的大小设置为“FixedSingle”,即为不可调节窗口大小;通过MaximizeBox属性将它的最大化按钮设置为“False”,即最大化按钮失效;通过Name属性将它的名称修改为“Form_Main”,修改这个属性主要用于后面书写代码的方便;通过BackColor属性将它的背景修改为“White”。
《面向对象程序设计》课程作业及答案汇总
《面向对象程序设计》课程作业及答案作业1:是非题1. 头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。
1. 错2. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。
4. 对填空题下面是一个求数组元素之和的程序。
主程序中定义并初始化了一个数组,然后计算该数组各元素的和,并输出结果。
函数sum计算数组元素之和。
填充程序中不完整的部分。
________A__________int sum(int [],int;void main({int ia[5] = {2,3,6,8,10};B ;sumOfArray = sum(ia,5;cout << "Sum of array:" << sumOfArray << endl;}int sum(int array[],int len{int iSum = 0;for(int i = 0; C ; DE ;return iSum;}答案:A #includeB int sumOfArray;C i < lenD i++E iSum += array[i];阅读理解题写出下列程序的运行结果://file1.cppstatic int i = 20;int x;static int g(int p{return i + p;}void f(int v{x=g(v;}//file2.cpp#includeextern int x;void f(int;void main({int i=5;f(i;cout << x;}回答以下问题:1. 程序的运行结果是什么样的?2. 为什么文件file2.cpp中要包含头文件?3. 在函数main(中是否可以直接调用函数g(?为什么?4. 如果把文件file1.cpp中的两个函数定义的位置换一下,程序是否正确?为什么?5. 文件file1.cpp和file2.cpp中的变量i的作用域分别是怎样的?在程序中直接标出两个变量各自的作用域。
(0837)《面向对象程序设计》网上作业题及答案
(0837)《面向对象程序设计》网上作业题及答案1:第一次作业2:第二次作业3:第三次作业4:第四次作业5:第五次作业6:第六次作业1:[论述题]编写一个简单的乘法器,界面如下图所示,在第一个文本框中输入第一个乘数;在第二个文本框中输入第二个乘数;当单击"=”按钮时,在第三个文本框中输出其乘积。
参考答案:问题(1):Java程序分为Java应用程序(或Java application)和Java小应用程序(或Java applet);这段程序是Java小应用程序。
问题(2):界面上包含一个标签(JLabel),一个按钮(JButton)和一个文本框(JTextField);点击按钮后,文本框内显示“好好学习,天天向上”。
问题(3):ActionListener是动作事件监听器接口;方法actionPerformed()是ActionListener中的方法;其功能是处理applet界面里发生的动作事件。
2:[论述题]请设计一个软件包。
要求该软件包至少拥有正方形类、圆类。
要求每个类都具有构造方法、计算该图形的周长的成员方法和计算该图形的面积的成员方法。
然后编写一个测试程序,分别创建这些类的实例对象,并输出这些实例对象的周长和面积。
在创建这些实例对象时,构造方法的调用参数值分别是:正方形:左上定点的坐标为(5,10),边长为15。
圆形:圆心的坐标为(0,0),圆心为15。
参考答案:问题(1):Test3是SuperTest的子类(或SuperTest是Test3的父类,或继承关系)。
问题(2):super指对象的父类(或超类);this指使用它的对象本身(或对对象自己的引用)。
问题(3):程序的输出是:Hi, I am OliveNice to meet you!Age is 7My age is 7My parent's age is 353:[论述题]编写一个程序,要求随机生成61个学生的成绩(从0到100的整数),在将成绩排序(由高到低)后保存到文件"score.txt”中。
面向对象程序设计作业10页word文档
C++程序设计第一次作业一、问答题1、什么是面向对象程序设计?面向对象程序设计的优点是什么?2、什么是类?什么是对象?它们之间关系如何?3、C++的主要特点有哪些?4、什么叫函数重载?什么叫运算符重载?请书写一个函数重载的程序例子,分别计算圆、矩形、三角形的图形面积。
5、使用内联函数的优点是什么?如何将函数说明为内联函数?6、构造函数和析构函数的主要特点各是什么?7、什么是this指针?它的主要作用是什么?8、什么是拷贝构造函数?在哪三种情形下会触发拷贝构造函数的执行?9、什么是友元函数?使用它有什么好处?10、什么情况下需要预约存贮空间?试解释下列程序每一语句的含义。
float *p;p=new float[10];for( int i=0;i<=9;i++,p++)*p=i;11、如果要释放上一题中指针p所指的空间,应如何操作?二、程序设计题(1)建立一个三角形类tri,有三个私有数据a,b,c,设计一个缺省的3参数构造函数,缺省值分别为3,3,3,再设计一个成员函数showarea,当参数能组成三角形时输出面积值,否则输出-1。
(2)建立一个类book,有二个私有的数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为1,2,3,4,5,将price初始化为qu的10倍,并设计一个成员函数disp,输出每个对象的qu*pricer的值。
(3)有一个向量类vector,包括一个点的坐标位置x和y,设计二个友元函数,实现两个向量的加法和减法运算。
(4)编写一个程序,设计一个类score,用于统计一个班的学生成绩,其中使用一个静态数据成员sumfs存储总分和一个静态成员函数rsumf()返回该总分。
三、分析题请仔细阅读下列程序,回答问题。
1: #include <iostream.h>2: class exam{3: int i;4: public :5: exam(int n){i=n;cout<<"constructing...\n";}6: ~exam(){cout<<"destructing...\n";}7: int get_i(){return i;}8: };9: int sqr_it(exam s)10: {11: return s.get_i()*s.get_i();12: }13: void main()14: {15: exam x(11);16: cout<<x.get_i()<<endl;17: cout<<sqr_it(x)<<endl;18: }(1)第1行能省略吗?为什么?(2)第4行的public :是什么含义?(3)第5行、第6行分别定义的是什么函数?它们在什么情况下执行?(4)第7行和第9-12行定义的函数中,哪一个是普通的自定义函数?哪一个是类exam的成员函数?(5)第15行的含义是什么?(6)试写出该程序的运行结果。
面向程序设计
郑州大学现代远程教育《面向对象程序设计》课程考核要求说明:本课程考核形式为提交作业,完成后请保存为WORD 2003格式的文档,登陆学习平台提交,并检查和确认提交成功(能够下载,并且内容无误即为提交成功)。
一.作业要求1.请独立自主完成作业内容。
二.作业内容一)、简答题:(每题 5 分,共30 分)1、函数模板与函数有何关系?答:函数模板是一个模板,其中用到通用类型参数,不能直接执行。
函数是一个具体的函数,有具体的程序代码,可以执行。
函数模板是用来生产具体函数的。
2、类模板与类有和关系?答:类模板使用户可以为类定义一种模式,使得类中的某些数据成员、成员函数的参数和返回值能取任意数据类型。
类模板用于实现类所需数据的类型参数化。
类是将数据和数据操作函数结合于一个单元内的机制,是一种用户自定义的数据类型。
类模板是用来产生类的。
3、什么是继承?答:继承是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,并增加功能。
作为类的构造机制,继承通过扩充、组合现有的类来构造新的类。
4、继承方式有哪些?产生的结果是什么?答:继承方式有公有继承、私有继承、保护继承。
当继承方式是公有继承时,基类的public 和protected成员分别作为派生类的public 和protected成员,派生类的其他成员可以直接访问它们。
当继承方式是私有继承时,基类public和protected成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问它们。
当继承方式是保护继承时,基类的public和protected成员被继承以后作为派生类的保护成员,这样派生类的其他成员就可以直接访问它们,但在类外部通过派生类的对象无法访问。
5、什么是动态绑定?答:函数绑定分为静态绑定和动态绑定两种形式,两者的区别在于:静态绑定在程序执行前完成,由编译系统或操作系统装入程序计算函数的入口地址;而动态绑定则在程序执行过程中完成,由程序自身计算函数的入口地址。
郑州大学远程教育 《面向对象程序设计》第01章在线测试
《面向对象程序设计》第01章在线测试剩余时间:58:16答题须知:1、本卷满分20分。
2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。
3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。
第一题、单项选择题(每题1分,5道题共5分)1、下面的数据类型不属于C++基本数据类型的是A、整型B、数组型C、双精度型D、无值型2、下面的常量类型不属于C++常量类型的是A、整型B、字符串型C、枚举型D、浮点型3、VC项目中可以添加的文件类型不可以是A、.CPPB、.CC、.HD、.LIB4、下列关于条件语句的描述中,错误的是A、if语句中只有一个else子句B、if语句中可以有多个else if子句C、if 语句中if体内不能是开关语句D、if语句的if体内可以是循环语句5、下面程序段的输出结果为 int x=3;do{cout<<x-=2;} while(!(--x));A、1B、1 –2C、3 0D、死循环第二题、多项选择题(每题2分,5道题共10分)1、高级语言源程序需要经过那些步骤才能成为可执行文件?A、编辑B、编译C、连接D、格式化2、下面关于变量的特征错误的描述的是A、变量表示一个内存位置B、变量的类型表示的是内存的大小C、变量中保存的都是一个数值D、变量可以任意赋值3、下面关于while和do-while说法错误的是A、do-while的循环体至少执行一次B、while的循环控制条件比do-while严格C、do-while允许从外部转到循环体内D、do-while的循环体不能是复合语句4、下面函数声明正确的是A、void f1(int a,int b);B、void f2(int a,int c,int b=-1);C、void f3(int a ,int b=-1, int c);D、int f4(…);5、执行下面程序后,a和b的值分别为 void main() { int a, b, k=4, m=6,*p1=&k,*p2=&m; a=p1==&m;b=(-*p1)/(*p2)+7; cout <<a<<b<<endl;}A、0B、4C、7D、3第三题、判断题(每题1分,5道题共5分)1、定义时使用关键字 inline的函数叫做内联函数。
《面向对象程序设计》
郑州大学现代远程教育《面向对象程序设计》课程考核要求说明:本课程考核形式为提交作业,完成后请保存为WORD 2003格式的文档,登陆学习平台提交,并检查和确认提交成功(能够下载,并且内容无误即为提交成功)。
一、作业要求1.本课程的重点知识点的学习掌握,并能根据实际工作方面的需要能够实践应用。
2.作答的内容要结合课程知识点,并把必要的程序步骤用程序算法格式表示出来。
3.要求学生独立完成作业,抄袭或者雷同试卷均为零分。
二、作业内容(一)简答题(每题15分,共计75分)1.在VFP7的菜单系统中,有哪几种类型的菜单?答:条形菜单、下拉式菜单、弹出式菜单2.事件触发的方法有哪些?答:系统触发、用户行为触发3.VFP7中,索引有哪几种类型?答:主索引;候选索引;唯一索引;普通索引4.简述SQL语言?答:分为3部分:(1)数据定义语言:建表命令、修改表命令、删除表命令(2)数据操纵语言:插入、删除、修改、查询(3)数据控制语言5.列举微调按钮控件的5个属性,并说明每个属性的作用?答:increment 设置微调按钮向上和向下的微调量,默认值为1.00inputmask 设置微调值,与increment属性配合使用可设置带小数的值spinnerlowvalue 通过鼠标控制数值的下限值spinnerhighvalue 通过鼠标控制数值的上限值keyboardlowvalue 通过键盘输入数值的下限值keyboardhighvalue 通过键盘输入数值的上限值(二)设计题(25分)1.设计一个原材料仓库管理中存储原材料的数据表的基本结构,并设计对该数据表进行检索的窗口及其检索的基本算法。
(25分)答:基本字段:材料名称、规格、数量、单价、价格、发票号,等等。
设计一个表单,表单中放置下述控件:(1)检索条件的标签和文本框;(2)一个表格:设计表格的各种属性,设置其数据环境;(3)一个退出命令按钮,并编写该按钮的CLICK事件的代码;(4)为最后一个文本框编写代码。
郑州大学现远程教育《面向对象程序设计》
郑州大学现代远程教育《面向对象程序设计》(计算机科学与技术本科)课程作业请保存为WORD格式的文档,登陆学习平台(/)提交,务必检查提交是否成功。
要求:建议1-3选一题,4-7选一题,8-10任选一题,且所有学生题目要相同。
1、编写一个程序模拟超市的收银系统。
具体要求如下:(1)提示输入顾客买的商品名称和单价(以元为单位),直到所有购买商品输入完毕(空格键表示输入完毕)。
(2)在屏幕上输出顾客购买的所有商品的名称和单价,每种商品的总价,顾客应付钱数;(3)提示输入实际交的钱数,计算应找钱数并显示。
(4)按回车键返回第一步,按ESC 键推出程序运行。
程序运行结果如下所示:输入商品名称:薯片输入单价:1.00输入数量:10输入商品名称:洗衣粉输入单价:9.8输入数量:1(按空格键,退出输入过程)商品名称单价数量总价薯片 1.00 10 10洗衣粉9.8 1 9.8应付: 19.8(元)输入实际付: 20元找零:0.2元(按回车键返回第一行)商品名称:×××。
(按ESC 则退出)2、编写一个程序实现24小时计时转换为12进制计时。
具体要求:以四位整数表示24小时计时法时间,pm表示下午,am表示上午运行示例:例1:输入24小时计时法时间: 174312小时计时法时间:1743 是 5.43 p.m.例2:输入24小时计时法时间: 090412小时计时法时间:0904 is 9.04 a.m.3、编写一个简单的加密程序:输入四位整数,按照以下加密算法处理后,生成加密后的四位整数输出。
加密算法:(每一位的数字+8)mod 10,处理后的数字中第1位和第四位交换,第2位和第3位交换。
运行示例:输入四位整数: 7523加密后的四位整数是: 10354、编写一个简单的学生成绩管理系统。
具体要求如下:建立两个类 StudentList 和StudentListTester. StudentList类用数组存放一组Student对象,记录当前数组中记录的学生数量。
面向对象程序设计大作业参考题目及要求
面向对象程序设计大作业参考题目1、学生信息管理(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:●系统以菜单方式工作●学生信息录入功能(学生信息用文件保存)---输入●学生信息浏览功能——输出●查询、排序功能——算法1、按学号查询2、按姓名查询●学生信息的删除与修改(可选项)(2)功能要求●界面简单明了;●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;●最好用链表的方式实现。
(3)算法分析首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。
文件的读写操作大家参照书中的有关文件的章节。
2、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
提示:学生信息可先输入到数组中,排序后可写到文件中。
(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。
郑州大学《面向对象程序的设计》1-12章在线测试题库完整
郑州⼤学《⾯向对象程序的设计》1-12章在线测试题库完整《⾯向对象程序设计》第02章在线测剩余时间:59:56试答题须知:1、本卷满分20分。
2、答完题后,请⼀定要单击下⾯的“交卷”按钮交卷,否则⽆法记录本试卷的成绩。
3、在交卷之前,不要刷新本⽹页,否则你的答题结果将会被清空。
第⼀题、单项选择题(每题1分,5道题共5分)1、在关键字public后⾯定义的成员为类的()成员。
A、私有B、公⽤C、保护D、任何2、当⼀个类对象结束它的⽣存期的时侯,系统⾃动调⽤该类的( )。
A、⽆参构造函数B、带参构造函数C、拷贝构造函数D、析构函数3、类的构造函数被⾃动调⽤执⾏的情况是在定义该类的 ( )A、成员函数时B、数据成员时C、对象时D、友元函数时4、假定AB为⼀个类,则执⾏“AB *p=new AB(1,2);”语句时共调⽤该类构造函数的次数为( )。
A、0B、1C、2D、35、假定AB为⼀个类,px为指向该类的⼀个含有n个对象的动态数组的指针,则执⾏“delete []px;”语句时共调⽤该类析构函数的次数为( )。
A、0B、1C、nD、n+1第⼆题、多项选择题(每题2分,5道题共10分)1、下⾯有关类说确的是(A,B,D )A、⼀个类可以有多个构造函数B、⼀个类只有⼀个析构函数C、析构函数需要指定参数D、在⼀个类中可以说明具有类类型的数据成员2、关于封装,下列说法中正确的是()。
A、通过封装,对象的全部属性和操作结合在⼀起,形成⼀个整体B、通过封装,⼀个对象的实现细节被尽可能地隐藏起来(不可见)C、通过封装,每个对象都成为相对独⽴的实体D、通过封装,对象的属性都是不可见的3、定义析构函数时,错误的说法是 ( ) 。
A、其名与类名完全相同B、返回类型是 void 类型C、⽆形参,也不可重载D、函数体中必须有 delete 语句4、假定AA为⼀个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的⼀个对象,则访问x对象中数据成员a的语句错误的是()。
面向对象程序设计(大作业)
一、名词解释(每题4分,共40分)1.面向对象面向对象:相对于面向过程而言的,所谓面向对象就是不在追求其操作的过程而是去实现其中的方法。
2.对象对象:对象就是用来描述客观事物的一个实体,有一组属性和方法构成的。
3.构造函数构造函数:主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new 运算符一起使用在创建对象的语句中,也是一种特殊的方法。
4.析构函数析构函数:是与构造函数相反,当对象结束其生命周期时,系统自动执析构函数。
其主要作用是用delete释放建立对象用new开辟内存空间。
5.继承继承:继承是指一个对象直接使用另一对象的属性和方法6.多态多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性7.引用引用:使用它指向了一个A对象,也可以说它引用了一个A对象8.友元友元:指某些虽然不是类成员却能够访问类的所有成员的函数。
9.模板模板:某种事物所依照的样本10.异常处理异常处理:是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况。
二、综合回答题(每小题15分,共60分)1.请介绍运算符重载的意义。
答:所谓重载,就是重新赋予新的含义。
运算符函数重载就是对原有元算符进行赋予新的含义从而实现运算符的重载.可以实现运算符重载的包括:算术运算符:+,-,*,/,%,++,--;位操作运算符:&,,~,^,<<,>>逻辑运算符:!,&&,;比较运算符:<,>,>=,<=,==,!=;赋值运算符:=,+=,-=,*=,/=,%=,&=,=,^=,<<=,>>=;其他运算符:[],(),->,,(逗号运算符),new,delete,new[],delete[],->*不能实现运算符重载的运算符包括:.,.*,::,?:2.谈谈多态的意义。
答:封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了代码重用。
【免费下载】面向对象的程序设计课程设计作业
现在我们设置 5 个变量来控制绕 x 轴和 y 轴旋转角度的步长,以及绕 x 轴和 y 轴的旋
转速度。另外我们还创建了一个 z 变量来控制进入屏幕的深度。
GLfloat
xrot;
// X 旋转
GLfloat
yrot;
// Y 旋转
GLfloat
xspeed;
// X 旋转速度
GLfloat
yspeed;
the crate is spinning at on the y axis (yspeed). We'll also create a variable called z that will control
how deep into the screen (on the z axis) the crate is
Lesson 07 Texture Filters, Lighting & Keyboard Control
第八课 纹理滤波方式,和键盘控制
In this tutorial I'll teach you how to use three different texture filters. I'll teach you how to
这一课我将教你如何使用三种不同的纹理滤波方式。我将教你如何使用键盘来移动场
景中的对象,还会教你在 OpenGL 场景中添加简单的光照。这一课包含了很多内容,所以如
果你之前的课程仍存在问题,就先回头复习一下。学习后面的代码之前,很好的理解基础
知识十分重要。
我们准备在第一课的代码上稍作修改。跟以前一样,只要有任何大的改动,我都会写
know that they are important
郑州大学现代远程教育《面向对象程序设计》(本科)
郑州大学现代远程教育《面向对象程序设计》(本科)课程作业请保存为WORD格式的文档,登陆学习平台(/)提交,务必检查提交是否成功。
1、编写一个程序实现24小时计时转换为12进制计时。
具体要求:以四位整数表示24小时计时法时间,pm表示下午,am表示上午运行示例:例1:输入24小时计时法时间: 174312小时计时法时间:1743 是 5.43 p.m.例2:输入24小时计时法时间: 090412小时计时法时间:0904 is 9.04 a.m.2、编写一个简单的工资管理系统。
具体要求:设计三个类Employee类,Manager类和HourlyWorker类。
Manager类和HourlyWorker类是Employee类的子类。
Emloyee类记录职工的姓名和编号,Manager类增加了经理的工资属性;Hwourlyworker记录钟点工每小时的工资数和一个月的工作小时数。
每一个类中必须包含构造函数,析构函数,修改和获取所有数据成员的函数,计算职工工资,显示职工姓名和编号的虚函数。
主函数中设计一个数组存放所有职工对象。
提示用户选择:[1] 增加一个职工[2] 显示数组中所有的职工以及他们的工资[3] 显示数组中所有的经理以及他们的工资[4] 显示数组中钟点工以及他们的工资[5] 退出选择1时,输入职工名字,编号,职工类别,工资情况选择2时,显示数组中所有职工的姓名,编号和工资选择3时,显示数组中所有经理的姓名,编号和工资选择4时,显示数组中所有钟点工的姓名,编号和工资选择5,提示“谢谢使用,再会”后,退出。
程序运行示例:[1] 增加一个职工[2] 显示数组中所有的职工以及他们的工资[3] 显示数组中所有的经理以及他们的工资[4] 显示数组中钟点工以及他们的工资[5] 退出输入选择:1输入职工信息:姓名:张三编号:9904类别:经理月工资:2000***增加一个职工***张三 9904 2000[1] 增加一个职工[2] 显示数组中所有的职工以及他们的工资[3] 显示数组中所有的经理以及他们的工资[4] 显示数组中钟点工以及他们的工资[5] 退出输入选择:1输入职工信息:姓名:李四编号:9905类别:经理月工资:1000***增加一个职工***李四 9905 1000[1] 增加一个职工[2] 显示数组中所有的职工以及他们的工资[3] 显示数组中所有的经理以及他们的工资[4] 显示数组中钟点工以及他们的工资[5] 退出输入选择:1输入职工信息:姓名:王五编号:9906类别:钟点工小时工资:10月工作小时数:50***增加一个职工***王五 9906 小时工资:10,月工作小时数:50[1] 增加一个职工[2] 显示数组中所有的职工以及他们的工资[3] 显示数组中所有的经理以及他们的工资[4] 显示数组中钟点工以及他们的工资[5] 退出输入选择:2***职工工资表***张三 9904 2000李四 9905 1000王五 9906 500[1] 增加一个职工[2] 显示数组中所有的职工以及他们的工资[3] 显示数组中所有的经理以及他们的工资[4] 显示数组中钟点工以及他们的工资[5] 退出输入选择:3***经理工资表***张三 9904 2000李四 9905 1000[1] 增加一个职工[2] 显示数组中所有的职工以及他们的工资[3] 显示数组中所有的经理以及他们的工资[4] 显示数组中钟点工以及他们的工资[5] 退出输入选择:4***钟点工工资表***王五 9906 10 50 500[1] 增加一个职工[2] 显示数组中所有的职工以及他们的工资[3] 显示数组中所有的经理以及他们的工资[4] 显示数组中钟点工以及他们的工资[5] 退出输入选择:5***谢谢使用,再会***3、在二维坐标系上定义GRAPH抽象类,该类具有基点坐标和图形显示等纯虚函数。
郑大远程面向对象程序设计方案考试
《面向对象程序设计》第12章在线测试第一题、单项选择题(每题1分,5道题共5分)1、面向对象软件开发中使用的OOD表示()A、面向对象分析B、面向对象设计C、面向对象语言D、面向对象方法2、在面向对象方法中,对象执行它的操作是通过()A、自动执行B、接受消息请求C、由外部强制执行D、外界直接访问其成员3、对象的两大要素是()A、数据和数据结构B、名字和函数C、属性和操作D、操作和方法4、关于对象模型的说法正确的事()A、对象模型是类、对象、类或对象之B、对象模型表示系统静态的数据性质间关系的定义集C、对象模型表示类/对象之间的结构D、对象模型是客观对象的物理模型关系5、面向对象分析的任务是()A、需求分析B、建立用例模型C、定义问题领域类D、定义角色第二题、多项选择题(每题2分,5道题共10分)1、下面那些是面向对象的特征?()A、结构B、类C、重用D、继承2、下面哪些属于UML的图( )A、用例图B、类图C、结构图D、流程图3、关于封装的说法正确的是()A、封装实现了信息隐藏B、封装使对象与外界隔绝C、封装使类不可见D、封装将对象的属性和操作结合在一起4、对象之间存在的关系包括()A、部分与整体B、一般与特殊C、实例连接D、消息连接5、下面的说法正确的是()A、软件就是程序,程序就是软件B、软件开发的过程就是程序设计的过程C、软件是程序、支持程序运行的数据以及与程序有关的文档资料的集合。
D、程序设计仅仅是软件开发过程的一个阶段。
第三题、判断题(每题1分,5道题共5分)1、面向对象设计过程一般仍分为结构设计和详细设计。
正确错误2、UML 是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。
正确错误3、UML不是一种可视化的程序设计语言而是一种可视化的建模语言.正确错误用若干个视图构造系统的模型,每个视图描述系统的一个方面。
正确错误、类的关联关系通常采用函数设计方式。
正确错误《面向对象程序设计》第11章在线测试A BC D、允许程序员以相同的方式处理不同的数据结构的是()A BC Dlist属于(A BC Dmap)属于A BC D、多重映射(multimapA BC DC、排序算法D、数值计算算法2、下面属于容器的头文件是()A、vectorB、listC、queneD、set3、下面的说法正确的是()A、STL中有sort函数,所以程序员不能定义名字叫sort的函数B、STL中的sort函数在名字空间之外C、程序员可以在自定义的名字空间内定义sort函数D、使用STL的sort函数可以在源程序的开头加入using namespace std4、下面属于顺序容器的是()A、向量B、双队列C、堆栈D、列表5、如果char str[]=“China!Great Wall”,生成string类型s并且s的字符串内容也是“China!Gr eat Wall”的语句是()A、string s(str);B、string s(str,1);C、string s(str, 1,11);D、string s=str;第三题、判断题(每题1分,5道题共5分)1、迭代器是算法访问容器的中介。
郑州大学远程教育 面向对象程序设计 第三章
1、类的指针成员的初始化是通过函数完成的,这个函数通常是(D)A、析构函数B、友元函数C、其它成员函数D、构造函数2、如果类a 被说明成类b 的友元,则(D ) 。
A、类a 的成员函数不得访问类b 的成员B、类b 的成员即类a 的成员C、类a 的成员即类b 的成员D、类b 不一定是类a 的友元3、假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数定义处的函数头为(C )。
A、AA::a()B、AA::int a()C、int AA::a()D、int AA:a()4、假定AA是一个类,“AA& abc();”是该类中一个成员函数的原型,若该函数存在对*this 赋值的语句,当用x.abc()调用该成员函数后,x的值(B )。
A、不受函数调用的影响B、已经被改变C、可能被改变D、不变5、在c++ 中实现封装是借助于(A )A、类B、函数C、枚举D、数组6、静态成员函数没有( B )A、返回值B、this 指针C、返回类型D、指针参数7、以下程序的运行结果是:6,8 #include <iostream>using namespace std; class R{ public: R(int r1, int r2){ R1=r1;R2=r2; } void print(); void print() const; private: int R1,R2; }; void R::print(){ cout<<R1<<","<<R2<<endl; } void R::print()const{ cout<<R1<<","<<R2<<endl; } int main(){ R a(6,8); const R b(56,88); b.print(); return 0; }错8、运用运算符delete删除一个动态对象时(D )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
郑州大学现代远程教育《面向对象程序设计》课程考核要求说明:本课程考核形式为提交作业,完成后请保存为WORD格式的文档,登陆学习平台提交,并检查和确认提交成功。
一.作业要求1.请独立自主完成作业内容。
二.作业内容一)、简答题:(每题 5 分,共30 分)1、声明类的一般格式是什么?答:声明一个类一般格式为:class CStudent{ public:protected:private:G的对象时构造函数调用答:如果继承顺序是从左到右的话,那么结果为:A C D E AB F G3、类成员的访问权限有哪些?答:成员的访问权限如下:Public: 任何人,尤其是那些要使用这个类库的客户程序员,都能访问那个紧跟在public 后面声明的成员。
默认的package: 在同一个目录里面的文件,并且都没有明确指明它是属于哪个package 的。
Java 会认为这类文件是属于这个目录的“默认package”的,因此对这个目录里边的其它文件来说,它们就都是package 权限的了。
private: 除非是用这个类(包含这个成员的类)的方法,否则一律不得访问。
package 里的其它类也不能访问private 成员。
一个package很可能是由好几个人合作开发的,因此private 能让你根据自己的需要修改那些成员,而不用担心这么做会不会对别的类产生影响。
protected: package 里面的类,那么你只能访问原先那个package 的public 成员。
(当然如果是在同一个package 里面继承的话,那么你还可以访问package 权限的成员。
)有时基类的创建者会希望派生类能访问某个成员,而其它类则不能访问。
这就是protected 要做的。
protected 也赋予成员package 权限——也就是说,同一个package 里的其它类也可以访问protected 元素。
为了让代码显得更有条理,可能你选用这种风格,就是将public 成员都放在类的开头,接下来是protected 成员,然后是package 权限的,最后是private 成员。
这样做的好处就是,当用户从上到下读代码的时候,会先看到对他们最重要的东西(就是能在文件以外访问的public 成员)。
而当他们遇到非public 成员的时候,就会知道这是类的内部实现部分,是无法读到的。
4. 友元关系具有什么特点?答:友元关系有如下特点:第一、友元函数可以直接通过对象名访问类的私有和保护成员,可以像普通函数一样在任何地方调用。
不是该类的成员函数,可以是一个普通的函数,也可以是其他类的成员函数。
(朋友虽然不是家庭的成员,但容许到我们家里访问一样) 第二、友元函数不属于任何类,因此可以放在类说明的任何位置,既可以在public区,也可以在private区。
(友元函数看看作是类的部分接口,建议出现在public的部分) 第三、友元函数不需要通过对象或对象指针来调用,可以直接调用即可。
5. 定义重载运算符函数的时候需要注意哪些问题?答:不能改变运算符的优先级。
不能改变运算符的结合性(例如,算术运算符的结合性为从左到右,这一点不能改变)。
默认参数不能喝重载的运算符一起使用,也就是说,在设计运算符重载成员函数时不能使用默认参数。
不能改变运算符的操作数的个数。
不能创建新的运算符,只有已有运算符可以被重载。
运算符作用于C++内部提供的数据类型时,原来含义保持不变6、什么是模板?答 : 模板把函数或类要处理的数据类型参数化,表现为参数的多态性。
模板用于表达逻辑结构相同,且具体数据元素类型不同的数据对象的通用行为,从而使得程序可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递二)、分析下面的代码,回答问题(每题 10 分,共 40 分)1.下面程序的执行结果是什么?为什么?class BC {public:BC( ) { cout << "BC' constructor\n"; }~BC( ) { cout << "BC' destructor\n"; }};class DC : public BC {public:DC( ) { cout << "DC' constructor\n"; }~DC( ) { cout << "DC' destructor\n"; }};int main( ) {DC d;return 0;}答:执行结果是:BC' constructor\nDC' constructor\nDC' destructor\nBC' destructor\n创建子类对象首先创建基类对象调用基类构造函数,然后调用自己的构造函数,释放时先析构自己对象最后析构父类对象,有父才有子。
2. 下面程序的执行结果是什么?为什么?class Sample{int n;public:Sample(){};Sample(int i){n=i;};Sample & operator=(Sample);void disp(){cout<<"n="<<n<<endl;}};Sample &Sample::operator=(Sample s){Sample::n=s.n;return *this;}void main(){Sample s1(10),s2;s2=s1;s2.disp();}答:结果: n=10 。
原因是Sample重载了赋值操作符,可以用Sample的一个对象去初使化另一个对象,s2对象被已经初始化的s1所初始化。
3. 下面程序的执行结果是什么?为什么?class Sample{public:int x;int y;void disp(){ cout<<x<<y<<endl; }};void main(){int Sample::*pc;Sample s;pc=&Sample::x;s.*pc=10;pc=&Sample::y;s.*pc=20;s.disp();}答:本程序执行的结果是x=10,y=20。
原因是在main()中定义的pc是一个指向Sample类数据成员的指针。
执行pc=&Sample::x 时,pc指向数据成员x,语句s.*pc=10等价于s.x=10(为了保证该语句正确执行,Sample类中的x必须是公共成员);执行pc=& amp;Sample::y时,pc指向数据成员y,语句s.*pc=20等价于s.y=20(同样,Sample类中的y必须是公共成员)。
所以输出为: x=10,y=20。
4. 下面程序的执行结果是什么?为什么?class base{public:base(){fc();};virtual void fc(){ cout<<"In class base"<<endl;}virtual ~base() =0 { cout<<"Destructing base object"<<endl;} };class A: public base{public:A(){ fc();};void f() { fc();};~A() { fd();};void fd(){ };};class B: public A{public:B(){};void fc(){ cout<<"In class B"<<endl;}~B() { fd();}void fd(){ cout<<" Destructing B object"<<endl;}};void main(){B b;b.fc();base *p=new A;p->fc();delete p;}答:因为构造函数先调用基类,然后子类。
而析构先调用子类,然后基类,所以输出:B b; 输出In class base (先调用基类构造函数),然后输出In class base(派生类A的构造函数),而B的构造函数没有额外输出。
b.fc(); 输出In class Bbase *p=new A; 输出In class base (先调用基类构造函数),然后输出In class base(派生类A的构造函数)p->fc(); 输出In class base(派生类的输出),因子类A没有覆盖基类的fc()delete p; 因A析构没有做事,输出Destructing base object(基类的析构函数)程序结束:输出Destructing B object,然后输出Destructing base object三)、根据要求编写完整的程序:(每题15分,共 30 分)1.编写一个程序,设计一个base基类,它有两个私有数据成员x和y以及一个虚函数add(),由它派生出two类和three类,后者添加一个私有数据成员z,在这些派生类中实现add成员函数,并用数据进行测试。
答:设计的程序如下:class base{ private:float x;float y;public:virtual float Add(float,float);};class two : public base{public:float Add(float x,float y){ return x + y;}};class three : public base{private:float z;public:float Add(float x,float y) {return x + y;}};int main(){tow m;base * wo = &m;float value = wo.Add(5.3 , 9.5);cout<<value<<endl;three m1;wo = &m1 ;float value = wo.Add(5.3 , 9.5);cout<<value<<endl}2.编写一个程序,设计一个点类Point,并由此派生出一个圆类。
并用数据进行测试,计算圆的面积和周长。
答 : 程序如下:#define PAI 3.1415926class point{ public:virtual float air(float R){} virtual float lang(float R){}};class yuan :public point{public:float air(float R){return PAI * R * R;}float lang(float R){return PAI * 2 * R }}。