《c++程序设计实验报告》由会员分享,可在线阅读,更多相关《c++程序设计实验报告(41页珍藏版)》请在金锄头文库上搜索。
1、实验报告七 类与对象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
2、, 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(hour
3、s 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();基本要求仔细阅读上面程序,如果有错误,请
4、更正。上机录入、调试上面程序。分析和思考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;
5、/* 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.#incl
6、udeclass 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=
7、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=6
8、0) 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
9、.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) 掌握单继承程序设计的基本方