实验报告2类与对象_第1页
实验报告2类与对象_第2页
实验报告2类与对象_第3页
实验报告2类与对象_第4页
实验报告2类与对象_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 计 算 机 课 程 实 验 报 告20122013学年度 第一 学期系别:数学与计算机科学学院实验课程C+面向对象程序设计班 级10级计算机科学与技术学 号11姓 名蔡兴明指导教师马学梅实验题目类和对象日 期2012年 9 月 19 日实验目的及要求1、掌握类的概念以及类的定义方法2、掌握对象的创建方法3、掌握类的构造函数和析构函数的概念和使用方法。4、学习友元的概念和定义5、简单面向对象程序的编写实验内容及具体步骤:内容1:按要求分析程序指出程序运行的结果:1)分析下面的程序,并给出程序运行的结果,写出程序的功能:#include<iostream.h>class change

2、char c1,c2;public:   void set(char a)c2=(c1=a)-32);   void print()   cout<<c1<<" can be upwritten as "<<c2<<endl;void main()change a,b;a.set('a');b.set('b');a.print();b.print();程序功能:此程序功能为把各个小写字母变成大写字母,它使我

3、掌握了类的概念以及类的定义方法;结果: 2)分析下面的程序,并给出输出结果:#include<iostream.h>class pairchar c1,c2;public:   void set(char b)   c1=1+(c2=b);   unsigned where_am_I()   return(unsigned)this);   void print()   cout<<c1<

4、;<"+"<<c2<<"t"void main()pair a,b,c;a.set('A');b.set('B');c.set('C');a.print();cout<<"is at "<<a.where_am_I()<<'n'b.print();cout<<"is at "<<b.where_am_I()<<'n'c.print();

5、cout<<"is at "<<c.where_am_I()<<'n'程序功能: 此程序还是有一个类的定义,然后在主函数中参数调用及输出结果,使我再次熟练掌握类的定义方法及应用类;结果:3)创建一个 Employee 类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、 ChangeName() 、 display() 的函数原型放在类定义中,构造函数初始化每个成员, Display() 函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。 用多文件结构实现: *employee.h

6、* class employee public: employee(char *na,char *street,char *city,char *di,char *po); void changeName(char *); void display(); protected: char *name; char *street; char *city; char *district; char *post; ; *function.cpp* #include<iostream.h> #include”employee.h” employee:employee(char *na,cha

7、r *st,char *ci,char *di,char *po) name=na; street=st; city=ci; district=di; post=po; void employee:changeName(char *na) name=na; void employee:display() cout<<name<<endl; cout<<street<<endl; cout<<city<<endl; cout<<district<<endl; cout<<post<&

8、lt;Endl; *test.cpp* #include”employee.h” void main() employee a1(“WangFei”,”Street 200” ,”Tianjin”,”Zhixiashi”,” 300480” ); a1.display(); a1.changeName(“LiLi”); a1.display(); 程序功能: 此程序功能就是按照题目要求输出一个人的姓名、街道地址、市、省和邮政编码,此程序中出现了构造函数,首先在类中定义各个函数,再在类外对函数初始化各个成员,通过程序我也掌握了构造函数的概念以及如何定义构造函数;结果:(4)#include<

9、;iostream.h> class Point /定义一个Point 类; int x,y ; public: Point( );/定义一个无参的构造函数;Point(int a ,int b=4 );/Point的含有参数的构造函数void output();/类的成员变量;Point(); ; Point:Point( ) cout<<"constructor noparameter!"<<endl; Point:Point( int a, int b=4 )x=a;y=b;void Point:output()cout<<&

10、quot;x="<<x<<",y="<<y<<endl; Point:Point()cout<<"destructor!"<<endl; void main()Point pt1 ; Point pt2(5); Point pt3(8,7);pt1.output();pt2.output();pt3.output();内容2:编写并调试程序:1)下面是一个类的测试程序,给定主函数,请写出类的定义,构成一个完整的程序,使执行程序后输出结果为:88-32=56给定的主函数为:v

11、oid main()   Tst t;   t.init(88,32);   t.print();2)编程分析由主函数可知,要创建的类名为Tst,一个类对象为t,类中含有两个公有成员函数init()和print(),利用函数init()对两个私有成员数据赋值,即为减数与被减数的数值,为了程序的实现需要定义第三个成员数据作为减法之差。3)源程序#include<iostream.h>class Tstint c1,c2,a;public:void init(int c,int b)a=(c1=c

12、)-(c2=b);void print()cout<<c1<<"-"<<c2<<"="<<a<<endl; ;void main() Tst t; t.init(88,32); t.print();4)运行结果5)调试情况分析6)实验结论:此程序功能是输出两个数作差的结果,它只有一个类,类中只有void init(int c,int b) ,void print()两个公共函数,我自己通过编程此程序对类的定义有了更深的认识;内容3、图形类设计 设计三个图形类:Circle(圆)、Re

13、tangle(矩形)、Triangle(三角形)1、Circle类基本信息:圆心坐标、半径Retangle类基本信息:长、宽Triangle类基本信息:三个顶点坐标;其中:成员变量为private属性,成员函数为public属性;2、每个图形类有多个构造函数:缺省构造函数、带参数的构造函数;3、每个图形类有计算图形面积GetArea(),显示图形的基本信息函数Show(),修改基本信息的函数Set(形参)。以Circle类为例:通过GetArea()计算圆的面积,Show()函数中显示圆心坐标、直径、面积等基本信息;Set(int x, int y, int r)函数可以修改圆心坐标和半径。【

14、实验提示】1、注意多个构造函数的声明方式与定义实现;2、当输入数据为不合理数据时(例如:输入的三角形的顶点是否能组成一个三角形),提示用户输入错误;【测试数据】1、Circle类测试数据:圆心坐标:(20,30) 半径: 5 (-20,40) 30 (40,-10) -52、Retangle类测试数据:长: 20 宽:50 40 5 -9 10 43 -83、Triangle类测试数据:三个顶点坐标: (20,30)、(40,50)、(40,20) (10,10)、(50,10)、(35,10)源程序:#include <iostream> using namespace std;

15、 class Shape public: virtual double area() const =0; ; class Circle:public Shape public: Circle(double r):radius(r) virtual double area() const return 3.14159*radius*radius; protected: double radius; ; class Rectangle:public Shape public: Rectangle(double w,double h):width(w),height(h) virtual doubl

16、e area() const return width*height; protected: double width,height; ; class Triangle:public Shape public: Triangle(double w,double h):width(w),height(h) virtual double area() const return 0.5*width*height; protected: double width,height; ; int main() Circle c1(12.6),c2(5.0); Rectangle r1(20.0,50.0),r2(40.0,5.0); Triangle t1(30.0,10.0),t2(40.0,15.0); Shape *pt6=&c1,&c2,&r1,&r2,&t1,&t2; double areas=0.0; for(int i=0;i<6;i+) areas=pti->area(); cout<<"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论