8第八章文档对象持续性.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8第八章文档对象持续性

第八章文档对象持续性 8.1 CObject类的特性 8.2 文档类持续性原理 8.3 文档类持续性的局限性 8.4 文档-视图结构及其意义 8.5 文档-视图的相互作用 8.6 实例分析演示 8.1 CObject类的特性(1) CObject类是MFC派生体系的根类。 CObject类有三大特性: 持续性(Serialize):将内存中的对象数据保存到持久介质,或者反之,从持久介质中读取数据来重建对象。即维持一个对象的持续存在。 CObject类持续性通过虚函数Serialize()实现; Serialize()函数的形参CArchive对象ar封装了文件打开的相关信息; Serialize函数是CObject类的成员函数,对具体数据的操作取决于CObject类的派生类对Serialize函数的重定义; 8.1 CObject类的特性(2) CObject类有三大特性: 动态性(Dynamic): CObject类具有一般动态性,即提供在执行过程回答“我是谁?”的服务。 CObject类的动态性通过成员函数IsKindOf()实现; 动态判断IsKindOf()函数的形参CRunTimeClass对象指针ptr所指向的对象是否是该对象; 一般要求对象是CCmdTarget类的派生类的实例对象; 8.1 CObject类的特性(3) CObject类有三大特性: 诊断性(Diagnose): CObject类提供了把对象状态转储给调试机制(如Debug输出窗口)。 CObject类有以下两种转储方式: CObject类的常成员函数Dump(CDumpContext dc)可以将类的内部数据输出到CDumpContext类的全局对象afxDump中, afxDump与输出窗口绑定; CObject类的常成员函数AssertValid()可以自动维护数据的有效性;(P246验证代码) 8.1 CObject类的特性(4) MFC应用程序中的三对宏 MicroSoft提供的根类CObject类有上述三大特性,但对动态性和持续性的支持有缺陷,于是MicroSoft设计了三对宏弥补上述缺陷。 第一对宏: DECLARE_DYNAMIC()与IMPLEMNET_DYNAMIC()。 第二对宏: DECLARE_DYNCREATE()与IMPLEMNET_ DYNCREATE()。 第三对宏: DECLARE_SERIAL()与IMPLEMNET_ SERIAL() 8.1 CObject类的特性(5) 三对宏对Cobject类的特性支持如下表: 8.2 文档类持续性原理 文档类CDocument的基类如右图:所以CDocument类具有CObject类的三大特性,再配合特定的宏,就可以获得不同层次的动态性和持续性支持。 文档类CDocument的基本作用是:完成应用程序的数据保存和初始化。此功能是通过Serialize()函数来实现的。(P255—P259) 8.3 文档类持续性的局限性(1) 文档类CDocument的成员函数Serialize()的缺陷: 只能顺序读写文件,不能随机操作文件; 只能一次性读写文件的所有内容,不能部分读取文件内容; 只能操作二进制文件,不能处理文本文件; 不能操作数据库文件; 不能共享式操作文件; 8.3 文档类持续性的局限性(2) 文档类持续性局限性的解决方法: 利用CFile的成员函数解决随机操作文件问题; 利用CStdFile类的成员函数处理文本文件; 利用数据库访问接口重载OnOpenDocument()和OnNewDocument(),OnSaveDocument(); 8.4 文档-视图结构及其意义 文档是数据源; 视图是数据的用户窗口; 文档-视图之间的对应关系可以是1对1,也可以是1对n; 文档对象实现对应用程序的数据的修改和保存; 视图对象实现用户对数据的访问和更新; 文档-视图结构通常有两种:SDI和MDI 8.4 文档-视图结构及其意义 文档-视图结构的特点: 将数据操作和数据表示分离开来; 是使程序进一步模块化 有利于代码重用 不采用文档-视图结构的应用: 工具程序 游戏 8.5 文档-视图的相互作用 文档类和视图类都提供相应的成员函数实现相互的访问。(如P262) 8.6 实例分析演示 实例1:简单的文本编辑器Editor 实例2:具有滚动视图的编辑器ScrollEditor 课后习题(1) 对教材245页有关CObject类的动态性的编程验证。(可证实) 对教材245页有关CObject类的诊断性的编程验证。(有疑问) 对教材247页到253页有关MFC的三对宏的编程验证。(可证实) 编程实现教材263

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档