第二讲和电话本一起成长.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * 说明argv[0]是程序名称 argv[1]开始才是我们真正输入的命令行 * * 面向对象的电话本 ILPhoneBookCache应该是CLPhoneBook、CLPhoneBookFeatures,同电话本文件的中间层——只针对查询、添加、保存操作——代码2.26 class ILPhoneBookCache { ……………………………. virtual bool Initial() = 0; virtual bool Unitial() = 0; virtual SLPhoneItem* GetPhoneItem(unsigned int index) = 0; virtual bool PutPhoneItem(SLPhoneItem *pPhoneItem) = 0; virtual bool FlushCache() = 0; }; 面向对象的电话本 CLFullCacheForPhoneBook从ILPhoneBookCache派生,使用CLDynamicArray实现了全缓存的逻辑 C++ STL库的string使用 #includestring using namespace std; 例如:string str = “ok”; str += “123”; const char *pstr = str.c_str(); 面向对象的电话本 CLPhoneBook的改造 new了CLFullCacheForPhoneBook,并将指针传递给了CLPhoneBookFeatures 当需要使用其他缓存方式时,可以new对应的类对象,并将指针传递给CLPhoneBookFeatures,且不用修改CLPhoneBookFeatures的任何代码 在有些设计里,把new继承体系里的某个类对象的工作,交给一个单独的类来负责。这样,在进行创建对象相关代码的修改时,将比较方便 CLPhoneBookFeatures的改造 面向对象的电话本 代码2.26还有什么问题吗? 当需要增加查询功能时,我们需要在用户命令循环中,加入对查询功能命令分发的代码 即在DispatchCommand函数中,加入: if(strcmp(strCommandHead, -qy) == 0) { …………………………………. } 这实际上说明,当需要增加新功能时,需要对CLPhoneBook类进行修改,没有做到代码的封闭性 而且电话本程序有很大的可能性,需要增加新功能,增加新的用户命令号 电话本程序需要容纳这一变化点,怎么办? 面向对象的电话本 有变化的地方,不管三七二十一就可以先建立继承体系 这里的变化是:存在着多种不同的功能命令号,每个命令号都会对应不同的处理方式 目前,所有的功能命令号的处理,都放在了CLPhoneBookFeatures中 鉴于类职责单一的原则,以及应对变化的原则,需要把CLPhoneBookFeatures拆分,一个功能实现就放在一个类中,且这些类应该是在同一个继承体系中 代码2.27 面向对象的电话本 说明ILPhoneBookCmdObserver、CLPhoneBookExporter、CLPhoneBookImporter、CLPhoneBookSaver、CLPhoneItemAdder的关系 CLPhoneBook Register方法 DispatchCommand中的广播 面向对象的电话本 C++ STL中的容器vector:动态数组 #include vector using namespace std; vectorint v; v.push_back(1); for(int i = 0; i v.size(); i++) printf(“%d\n”, v[i]); 面向对象的电话本 代码2.27还有没有什么问题呢? 类似于电话本这种console界面的,且需要用户输入命令的程序,通常都会有从键盘读取命令、解析命令、分发命令的过程 即CLPhoneBook中的EnterCommandLoop、InterpretCommand、DispatchCommand 因此,这部分代码完全可以提取出来,以供将来其他程序使用——提高代码的复用度 面向对象的电话本 作业6 在代码2.27的基础之上, 将接收用户命令循环抽取出来,形成一个公共的代码 加上查询功能的代码 加上作业5中所实现的部分缓存的代码 加上作业5中所要求的删除功能的代码 第二讲 和电话本一起成长 代码的编写规范 电话本的需求分析和关键技术突破 分割函数 功能实现 程序的文件组织 变化1:要实现查询功能 变化2:要提高查询的效率 面向对象的电话本 * *

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档