- 1、本文档共114页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章类与对象的深入介绍分析
1
第五章类与对象的深入介绍
参见教材5.4、5.5、5.6、5.7节
2
主要内容及要求
主要内容
类与对象概述
构造函数和析构函数
静态成员和常量成员
友元
要求
重点掌握类、对象、构造函数、析构函数、静态成员、常量成员
了解友元的使用
3
设计实例
以一个例子进一步比较面向对象程序设计思想与非面向对象程序设计思想,展示从不使用函数到引入函数进行模块化编程,再到引入类进行面向对象编程的程序设计思路
4
[例]:桌球城计费问题
问题描述:
某桌球城营业时间为9:00到23:00,每张桌子收费标准为9:00到18:00或21:00至23:00为0.45元/分钟、18:00至21:00为0.60元/分钟。编写C++程序,输入顾客占用一张桌子的起、止时间(精确到分钟),输出计费结果。
5
非模块化设计
按照自顶向下分解的思路,首先可将此问题分解成几个小问题:
输入起止时间
根据起止时间计算费用
输出费用
6
非模块化设计(续)
输出费用使用简单的输出语句即可
输入起止时间,也可使用简单的输入语句,输入两个整数分别代表小时和分钟
为使程序能应付所有情况,要检查用户输入的小时和分钟是否正确,检查包括
输入的小时应大于等于9小于等于23,且如果等于23时分钟应该为0
输入的分钟应大于等于0小于等于59
输入的起始时间应小于(先于)终止时间
7
非模块化设计(续)
进一步考虑如何根据起止时间进行计费
显然,因为不同时间段的收费标准不同,需要分时间段计算费用
可以根据起止时间求出每个时间段的分钟数,然后使用该分钟数乘相应的费用则可得到总费用
因为只有从18点到21点的费用不同,因此也可先求出总的分钟数乘一般费用(即0.45元),然后再求用户在18点到21点这个范围内占用了多少分钟,用它乘超出费用(即0.15元),两个费用相加即得到总费用
8
非模块化设计的源代码
// 程序:CALFEE1.CPP
// 功能:为某桌球城计算费用(第一个版本,所有功能都用主函数main()实现)
#include iostream.h
int main()
{
int start_hour, start_minute; // 输入的起始时间
int temp_s_hour, temp_s_minute; // 用来计算附加时间的临时起始时间
int end_hour, end_minute; // 输入的终止时间
int temp_e_hour, temp_e_minute; // 用来计算附加时间的临时终止时间
int total_minute; // 从起始时间到终止时间总的分钟数
int extra_minute; // 在18点到21点时间段要计算附加费用的分钟数
float total_fee; // 总的费用
9
非模块化设计的源代码(续)
while (1) { // 可多次输入终止和起始时间,多次计算费用
// 输入两个整数分别代表小时与分钟,中间用空格分开
cout Please input the start time (such as 12 20): ;
cin start_hour start_minute;
// 如果用户的小时与分钟都为零,则结束程序
if (start_hour == 0 start_minute == 0) return 0;
cout Please input the end time: ;
cin end_hour end_minute;
10
非模块化设计的源代码(续)
// 检查输入的起始时间和终止时间是否合法
if (start_hour 9 || start_hour = 23) { // 起始的小时必须在9到22之间
cout The start hour is error!\n;
continue;
}
if (start_minute 0 || start_minute 59) { // 分钟必须在0到59之间
cout The start minute is error!\n;
continue;
}
if (end_hour 9 || end_hour 23) { // 终止的小时必须在9到23之间
cout The end hour is error!\n;
continue;
}
11
非模块化设计的源代码(续)
// 如果终止小时为23
文档评论(0)