- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c从入门到实践fv9xtra5
17.8 常见问题及解答 1.使用模板参数时,容易出现二义性 2.使用模板前没有实例化 17.9 小结 本章详细讲解了C++中比较重要的对象——模板,通过本章各小节和例子的学习,读者应该掌握了函数和类模板的定义,实例化,使用方法等等重要的知识。在下一章,将详细讲述C++面向对象的程序设计与案例。 第18章 面向对象的程序设计案例 面向对象(Object-Oriented)是一种以对象为载体,对象间通信为媒介的软件开发思想。它注重的是对象的内部状态和行为,各种对象的有机结合就构成了一个完整的系统。本章主要内容包括以下几点: 问题定义 需求分析 面向对象分析与设计 编码和测试 18.1 问题定义 在C++中有丰富的时间处理函数,但是这些函数并不符合中国人的使用习惯。因此,本章将已一个可以输出中文格式时间的时间类的设计来讲解面向对象的设计方法。该案例比较简单,其问题定义如下: 设计一个可以显示中文格式的时间类。要求可以输出“2008年8月18日”、“16点28分24秒”,以及“2008年8月18日 16点28分24秒”等格式。同时也要能接受“2008年8月18日”、“16点28分24秒”作为输入。此外,也应该保留西文格式的日期输出和输入。 18.2 需求分析 接受中文格式日期、时间的输入; 输出中文格式的日期、时间; 可以判断是否是闰年; 接受西文格式的日期、时间的输入; 输出西文格式的日期、时间; 可以分别取年、月、日,以及时、分、秒等信息; 可以分别设置年、月、日,以及时、分、秒等信息; 可以取当前日期时间。 18.3 面向对象分析与设计 从前两节的分析可知,该程序仅需一个类即可。该类负责所有的日期时间的处理,它应该具备至少八个方法。此外,还需要有一个属性来保存日期时间。 18.3.1 类结构的设计 该类至少应该有一个属性用来保存日期时间,该属性是一个指针,指向一个日期时间结构体。该结构体将在后续内容中给出具体的实现形式。 18.3.2 类的可见性 对于属性pTime应该是私有的,该属性不能被使用者从外部操作。其他的方法是对外公开的,可以被外部使用。在面向对象的设计中,属性一般应该封装起来,让用户通过一对set/get方法来访问。这对方法显然应该是公有的。 18.3.3 类的结构图 在分析好类的结构之后,应该画出类的结构图。这一方面便于维护和使用,另一方面在开发过程中具体设计算法时,也便于随时观察和增加新的方法和属性。 18.4 编码和测试 在该案例中使用了系统预定义的struct tm时间结构体。 18.4.1 预编译头文件Stdafx.h 预编译头文件Stdafx.h是整个程序的头文件,主要是引入了案例中要用到的头文。该文件是建立工程时由开发环境自动生成,可以在该文件内添加自己需要的任何头文件。 18.4.2 CCNTime类的头文件CNTime.h CCNTime类的头文件主要用来声明类CCNTime,也定义了一些程序用到的宏和常量。为了处理上的方便,该类中还增加了设计类结构体时没有用到的几个类。 18.4.3 CCNTime类的实现文件CNTime.cpp 该文件的内容是核心代码,主要是实现CCNTime类的方法。 18.4.4 主文件main.cpp 该文件是CCNTime类的使用例子,给出了该类的多种使用范例。 18.5 小结 本章以一个日期时间类为例向读者演示了面向对象的编程方法。面向对象编程首先要搞明白目标系统由多少个相对独立的对象,每个对象就可设计为一个类。然后,要考虑类有哪些属性和方法,即该类拥有什么数据,并且能对这些数据执行什么操作。其次,要考虑类的可见性。需要分清楚哪些属性和方法是私有的,哪些是可以公开的。最后,就是分别设计每一个类。这样,每个类就可以单独设计开发,最后再组装合并。 第19章 string类 字符串或串(string)是由零个或多个字符组成的有限序列,string类是C++中处理字符串的类。本章将详细讲解C++的字符串string类的使用。本章的主要内容包括: string类的方法列举 string类的运算 19.1 定义 C的字符串用char*实现,头文件是string.h。在C++里,它变成了cstring,string前面的c表明是C语言格式的。而C++的字符串头文件是string,它是利用模板实现的,跟原先C的实现方法不一样,但要安全得多。要在C++中使用string类,必须包含头文件“string”。它提供了一个用模板实现的string类。由于string是类,有构造函数和析构函数,因此定义string对象的方法就可以有多种。 19.2 string类的方法 string类的方法有很多。 注意:C++字符串并不像C风格的字符串那样以‘\0’
原创力文档


文档评论(0)