向对象程序设计》.doc
18页《面向对象程序设计》实验指导书华中师范大学信息技术系二00九年四月15目 录目 录 I概述 1实验报告规范 1实验报告样例 2项目一 类的定义与实现 10一.实验目标 10二.实验内容 10三.实验要求 10项目二 类对象成员、静态成员和友元 11一.实验目标 11二.实验内容 11三.实验要求 111.用两点(端点)表示一条直线段 112.输出若干个三角形周长的总和,判断2个三角形的面积大小 12项目三 继承与虚函数 13一.实验目标 13二.实验内容 13三.实验要求 131.利用继承实现线段类 132.计算并输出两个点相加的和、两个复数相加的和 14项目四 类的综合应用 14一.实验目标 14二.实验内容 14三.实验要求 14项目五 多态性问题的解决方案 15一.实验目标 15二.实验内容 15三.实验要求 15概述面向对象程序设计实验课程是是培养学生实践能力的重要课程通过实践和训练,培养学生编程和动手能力,帮助学生系统掌握面向对象程序设计的主要内容对于综合项目的设计,可以培养学生分析问题的能力本课程通过5个目的、内容明确的实验项目,每个项目训练的重点在于基本的面向对象程序设计方法,而不强调面面俱到。
每个实验题目提交的成果都是两个部分,一个是实验报告,一个是源程序文件实验报告以word文档格式提交,源文件以.cpp格式提交本实验课程的所有实验项目都按照实验报告规范内容所表示的步骤完成,请读者仔细阅读实验报告规范,明确实验的开展所要经历的基本过程本实验课程的评价按照实验报告规范的各个项目进行评价实验报告规范每个实验题目写一份实验报告实验报告规范将给出实验报告的项目和内容1.开头 2分开头第1行给出实验项目号和项目名称,第2行写出实验题目,第3行给出给出班级、学号、姓名和完成日期 2.需求分析 20分 以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:(1)程序所能达到的总体功能(2)输入的形式和输入值的范围(3)输出的形式(4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果 3.模块设计 20分(1)说明本程序中用到的类模块,并给出类模型(2)说明本程序中类与类之间的关系,给出类层次结构图(3)给出其他功能模块的结构模型(4)给出主控模块(对应主函数)的流程4.详细设计 20分(1)给出模块设计中各类模块的实现算法(2)给出模块设计中各功能模块的实现算法(3)写出主函数的实现算法 5.调试分析 10分(1)调试过程中遇到的问题是如何解决的(2)对设计与实现的回顾、分析、讨论以及经验和体会等6.使用说明 8分说明如何使用你编写的程序,详细列出每一步的操作步骤 7.测试结果 10分列出你的测试结果,包括输入的内容和格式以及输出的内容和格式。
这里的测试数据应该完整和严格,最好多于需求分析中所列 8.附录 10分带注释的源程序也可以只列出提交的程序文件清单注意:上述中的第2、3、4这几个部分要在程序设计的过程中逐渐充实形成,而不是最后补写 实验报告样例实验项目五 多态问题的解决方案题目:在屏幕上为几何图形作图(示意性的)班级 学号 姓名 完成日期 一.需求分析1.总体功能设计一个可在屏幕上作图的简单程序,要求是不必真正在屏幕上实现作图,只是有一个示意即可例如:画一个矩形,不必真正画出矩形,只需输出一句话:This is a rectangle !即可程序要体现继承、多态等面向对象的特性,因此运用语言提供的继承,虚函数等机制2.输入形式与数据类型程序输入的是构造直线、圆和矩形所需要的参数直线参数形式:颜色(枚举型),端点1,端点2 圆参数的形式:颜色(枚举型),圆心点,半径 矩形参数形式:颜色(枚举型),左上角定位点,右下角定位点上述所有“点”的形式为: 横坐标,纵坐标,纵、横坐标的类型是(int)。
3.输出形式程序的输出形式为: 提示这是什么图形的字符串 提示显示相应图形的属性值4.测试数据两条直线为l1和l2,其中:l1的参数为:红色,(1,1),(250,300) //两端点l2的参数为:白色,(3,5),(100,200) //两端点两个圆为c1和c2,其中:c1的参数为:蓝色,(100,75) //圆心,50 //半径c2的参数为:绿色,(50,200) //圆心 20 //半径两个矩形为r1和r2,其中:r1的参数为:黄色, (10,10)//左上定位点 ,(255,150) //右下定位点r2的参数为:品红色,(20,30) //左上定位点,(100,125) //右下定位点二.模块设计1.本程序中用到的类模型本程序有如下类:(1)point类属性:直角坐标系的坐标,用x和y表示,类型都为int服务:提供x和提供y,相应函数原型为:int getx();和int gety();(2)Shape类服务:获取枚举颜色,相应的函数原型为:void GetColor( ColorType c); 绘图,相应的函数原型为:virtual void Draw()=0;(3)Line类属性:线段的起点start,线段的终点end,类型为point 颜色color,类型为枚举型ColorType 服务:绘图,相应的函数原型为:virtual void Draw();(4)Rectangle类属性:左上角定位点upperleft,右上角定位点lowerright,点的类型均为point 颜色color,类型为枚举型ColorType 服务:绘图,相应的函数原型为:virtual void Draw();(5)Circle类属性:圆心点center,类型为point;半径radius,类型为int 颜色color,类型为枚举型ColorType 服务:绘图,相应的函数原型为:virtual void Draw();(6)Picture类 //这是一个多态类这个类是用来绘制图形的。
属性:基类指针数组,可以指向基类的派生类对象服务:启动绘制功能,相应的函数原型为:void paint();该服务可以根据基类的不同派生类对象启动相应的图形绘制功能2.本程序中类与类之间的关系,给出类层次结构图(1)point类与Line类、Rectangle类和Circle类之间是部分——整体关系(2)Shape类与Line类、Rectangle类和Circle类之间是一般——特殊关系(3)类层次结构如图1所示: Shape Shape ShapeLine Rectangle类Circle图1 类层次结构图构造两条红、白直线构造两个圆构造两个矩形绘图3.main函数的流程 三.详细设计1.给出模块设计中各类模块的实现算法(1)point类的定义与实现class point{ int x,y; public: point(){ x=0;y=0;}point(int x_pos,int y_pos) { x=x_pos;y=y_pos; }point(const Point &p){ x=p.x; y=p.y; }int getx(){ return x; }int gety(){ return y; }};//这是一个枚举,white至cyan分别代//表了0至7的值enum ColorType{White,Black,Red,Green,Blue,Yellow,Magenta,Cyan};(2)Shape类的定义与实现class Shape{protected: void GetColor( ColorType c){ switch(c) case White : cout<< “White”< "<





