资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实验报告七 类与对象1. 实验目的(1) 掌握类的定义和实现。(2) 掌握对象创建及使用的基本方法。2. 实验设备 硬件环境:微型计算机软件环境: 操作系统: Windows 语言环境: Visual C+ 3. 实验内容(1)下面程序定义了一个以hours, minutes和seconds作为数据成员的Time类。设计了成员函数将两个Time对象相加(即时间相加),并进行相应的检查,查看增加的分钟数及秒数是否大于59。如果秒数大于59,则分钟数向前递增1。类似地,如果分钟数大于59,则小时数向前增1。#include class Timeprivate: int hours, minutes, seconds;public: void get_time() cinhoursminutesseconds; void display_time() couthours:minutes:seconds=60) seconds-=60; minutes+; if(minutes=60) minutes-=60; hours+; ;void main() Time one, two, three; coutnEnter the first time(hours minutes seconds):; one.get_time(); coutnEnter the second time(hours minutes seconds):; two.get_time(); three.add_time(one,two); coutthe result is:yearmonthday; Date mydate(year,month,day); int &myyear=mydate.GetYear();int &mymonth=mydate.GetMonth();int &myday=mydate.GetDay(); coutmyyearendlmymonthendlmydayendl;myyear=8888;cout mydate.GetYear();基本要求仔细阅读上面程序,如果有错误,请更正。上机录入、调试上面程序。分析和思考main函数中int &myyear=mydate.GetYear(); 、int &mymonth=mydate.GetMonth(); 和int &myday=mydate.GetDay();语句表达的是什么思想?这样做的目的是什么?这种方法是否“好”呢?为什么?如果“不好”应该怎样修改?4. 源代码1.#include class Timeprivate: int hours, minutes, seconds;public: Time () Time (int x,int y,int z)hours=x;minutes=y;seconds=z; /* void get_time() cinhoursminutesseconds; */ void display_time() couthours:minutes:seconds=60) seconds-=60; minutes+; while(minutes=60) minutes-=60; hours+; ;void main() Time one( 2 , 67 , 100), two( 1 , 56 , 200), three; three.add_time(one,two); coutthe result is:endl; three.display_time();2.#includeclass Date public: Date(); Date(int year,int month,int day); Date(); int &GetYear()return year; int &GetMonth()return month; int &GetDay()return day; private: int year; int month; int day; static bool IsLeapyear;/是否闰年 ;bool Date:IsLeapyear=true; Date:Date(int year,int month,int day) (*this).year=year; (*this).month=month; (*this).day=day;void main() int year,month,day; cinyearmonthday; Date mydate(year,month,day); int &myyear=mydate.GetYear();int &mymonth=mydate.GetMonth();int &myday=mydate.GetDay(); coutmyyearendlmymonthendlmydayendl;myyear=8888;cout=60) seconds-=60; minutes+; if(minutes=60) minutes-=60; hours+; 用if时当seconds和minutes=60时,程序只减一次60,如果seconds和minutes是60的两倍或以上的话,明显减的不够。所以改用while的话就可以很好的解决这个问题了。2、int &myday=mydate.GetDay();是对mydate.GetDay()的引用,相当于给它起了个别名叫做myday,所以当myyear=8888;时,cout mydate.GetYear();输出的也是8888.7.思考题解答main函数中int &myyear=mydate.GetYear(); 、int &mymonth=mydate.GetMonth(); 和int &myday=mydate.GetDay();语句表达的是什么思想?这样做的目的是什么?这种方法是否“好”呢?为什么?如果“不好”应该怎样修改?答:int &myyear=mydate.GetYear(); 、int &mymonth=mydate.GetMonth(); 和int &myday=mydate.GetDay();是引用,相当于给右边的变量起了个别名。这样做,“myyear=8888;cout mydate.GetYear();”输出的就是8888了。这样不好,破坏了类的封装性,导致类的私有成员数据在类外可以被随意修改。 实验报告八 继承与派生类1. 实验目的(1) 掌握单继承程序设计的基本方
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号