实验一类和对象.docx
- 文档编号:11269810
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:16
- 大小:446.47KB
实验一类和对象.docx
《实验一类和对象.docx》由会员分享,可在线阅读,更多相关《实验一类和对象.docx(16页珍藏版)》请在冰豆网上搜索。
实验一类和对象
太原工业学院计算机工程系
实验报告
课程名称
C++程序设计A2
班级
1420561
实验日期
2015.03.23
姓名
刘翔翔
学号
142056121
实验成绩
实验名称
实验一类与对象的创建
实验目的及要求
1.掌握类的定义,根据具体需求设计类。
2.深入理解C++中类的封装性。
3.会根据类创建各种对象。
4.掌握对象的各种成员的使用方法。
实
验
环
境
VC++6.0
实
验
内
容
1.有以下程序:
ClassTime//定义Time类
{
public:
//数据成员为公用的
inthour;
intminute;
intsec;
};
voidmain()
{
Timetl;//定义t1为Time类对象cin>>t1.hour;//输入设定的时间cin>>t1.minute;cin>>t1.sec;
cout< ”< ”< } 改写程序,要求: ①将数据成员改为私有的; ②将输入和输出的功能改为由成员函数实现; ③在类体内定义成员函数。 然后编译和运行程序。 请分析什么成员应指定为公用的? 什么成员应指定为私有的? 什么函数最好放在类中定义? 什么函数最好在类外定义? 2.分别给出如下的3个文件: ①含类定义的头文件student.h,在此文件中进行类的声明; ClassStudent//类声明 { public: //公用成员函数原型声明 voiddisplay(); private: intnum; charname[20]; charsex; }; ②包含成员函数定义的源文件student.Cpp,在此文件中进行函数的定义; voidStudent: : display()//在类外定义display类函数 {cout<<”num: ”< ”< ”< } ③包含主函数的源文件main.cpp。 为了组成一个完整的源程序,应当有包括主函数的源文件: //将类声明头文件包含进来 #include“student.h” voidmain() { Studentstud;//定义对象 stud.display();//执行stud对象的display函数 } 请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value。 上机调试并运行。 3.定义一个满足如下要求的Date类。 (1)用下面的格式输出日期: 日/月/年 (2)可运行在当前日上加一天操作 (3)设置日期。 代码见附录。 算 法 描 述 及 实 验 步 骤 1.Time类 (1)算法描述 a)先在Time.h中声明一个Time类,并在其中定义input()及output()成员函数,数据成员hour,minute和sec为private。 b)在主函数中定义对象t1,通过函数对t1赋值及输出t1。 (2)程序流程图 (3)主要代码 voidinput(inth,intm,ints) { hour=h; minute=m; sec=s; } voidoutput() { cout< "< "< } private: inthour;//数据成员私有 intminute; intsec; intmain(intargc,char*argv[]) { inth,m,s; timet1; cin>>h>>m>>s; t1.input(h,m,s); t1.output(); return0; } 2.Student类 (1)算法描述 a)在Student.h中定义Student类,增加set_value()函数。 b)在Student2.cpp中定义display()及set_value() c)在主函数中定义num,name,sex及对象stud。 d)对stud赋值及进行输出。 (2)程序流程图 (3)主要代码 voidStudent: : set_value(intn,char*na,chars) { num=n; strcpy(name,na); sex=s; } voidStudent: : display() { cout<<"num: "< cout<<"name: "< cout<<"sex: "< } 3.Date类 (1)算法描述 a)在Date.h中声明Date类,声明voidDisplay(),voidAddOneDay(),voidSetDay(inty,intm,intd),boolLegal(inty,intm,intd),boolIsLeapYear(inty)。 在Date2.cpp中定义它们。 b)主函数中定义对象d,赋值输出,加一天后输出。 (2)程序流程图 调 试 过 程 及 实 验 结 果 1.Time类 出现的问题: 在类中使用了中文的“;”; 在建立工程时选了空工程,不会使用VC6.0; 改正结果: 2.Student类 出现的问题: 因为没有把stdafx.h头文件放在第一行,而导致编译报错; 因为没有预编译头文件而导致无法编译; 因为在main函数文件中包含了Student2.cpp,导致函数重定义,编译不成功。 改正后成功,结果: 3.Date类 编译成功 总 结 1.要注意输入,中英文的切换。 2.在所有非main函数的.cpp文件中都要包含stdafx而且必须放 在文件的第一行。 3.在写程序时VC6.0使用预编译头文件,必须先对头文件进行预编译,才能让整个程序完成编译。 4.要注意编译器对文件的编译过程,不要重复使用一个文件,让编译器对其重复编译,这样也会报错。 附 录 3.代码如下: classDate{ public: voidDisplay(); voidAddOneDay(); voidSetDay(inty,intm,intd); protected: boolLegal(inty,intm,intd); boolIsLeapYear(inty); intyear; intmonth; intday; }; voidDate: : Display() { cout< } voidDate: : AddOneDay() { if(Legal(year,month,day+1)) day++; elseif(Legal(year,month+1,1)) month++,day=1; elseif(Legal(year+1,1,1)) day=1,month=1,year++; } voidDate: : SetDay(inty,intm,intd) { if(Legal(y,m,d)) day=d,month=m,year=y; } boolDate: : Legal(inty,intm,intd) { if(y>9999||y<1||d<1||m<1||m>12) returnfalse; intdayLimit=31; switch(m)case4: case6: case9: case11: dayLimit--; if(m==2)dayLimit=IsLeapYear(y)? 29: 28; return(d>dayLimit)? false: true; } boolDate: : IsLeapYear(inty) { return! (y%4)&&(y%100)||! (y%400); } intmain() { Dated; d.SetDay(2010,2,28); d.Display(); d.AddOneDay(); d.Display(); system("PAUSE"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验一 类和对象 实验 对象