VC面向对象的文本编辑器设计与实现
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
摘要
本文采用面向对象的程序设计方法和软件设计模式的思想来实现一个简单的文本编辑器。为了节省存储空间并提高效率,本文采用了Flyweigh的设计模式思想,将字符的内部状态和外部状态分开存储。具体实现是将字符的内部状态即字符代码存放到一张双向链表中,而将外部状态即字符的大小和颜色分别存放到两棵二叉树中,以便于查找遍历和动态维护。
think58.com
[版权所有:http://think58.com]
关键字:面向对象,设计模式,程序设计
1. 系统结构设计
主要说明系统对共享数据的组织和存取规则;设计系统触发程序;对程序作必要的约定,如数据组织,数据存取,程序触发规则等。
think58
[版权所有:http://think58.com]
2. 系统信息设计
[资料来源:http://think58.com]
通过反复考察数据流图(图中应有对象,属性和关系),确定处理过程所需的数据,就可确定系统所需的信息量。
3. 数据结构设计
系统含有的信息确定后,既可确定数据结构。对于应用系统,主要是设计数据的存取结构。
think58.com [来源:http://www.think58.com]
[资料来源:www.THINK58.com]4. 划分程序段
[来源:http://www.think58.com]
把系统的处理过程划分成程序段。划分程序段时应将相似的处理过程组织在一起,过程应清晰可读。将建立的程序及相应的输入输出数据,数据所代表的对象和属性列表说明。
面向对象的设计可分为三级:概念级设计,系统级设计和规范级设计。
第1章 总体设计1.1系统分析
根据系统的设计要求,要实现输入,输出,插入,删除,保存等功能,这就需要考虑字符的存储结构,因为这将有可能影响到字符的存储效率。如果采用常规方法,即将输入的字符串的所有信息保存在一个多维数组中,但这会出现很多问题。比如,采用数组存储结构时,在字符的插入,删除方面将会很难处理,因为数组的存储结构是顺序的,而插入,删除操作是无序的,这就会浪费很大开销来维持数组的顺序结构。
那么就采用链表存储结构,这样在字符的插入,删除方面能很容易的实现。但是考虑到字体的状态,如大小和颜色,就会发现当你连续输入同一种字体时,它们的存储节点中的状态信息都是一样的,这就在一定程度上浪费了存储空间,降低了存储效率。
[资料来源:http://www.THINK58.com]
如何才能改善这种情况呢?根据设计模式中提到的可以将字体信息分为两大部分,即内部状态和外部状态,然后将它们分开存放,这样才能避免上述情况的发生。那么到底怎样分开存储才能提高存储效率呢?首先,将字体的内部状态即字符代码,保存到一张双向链表结构中,图2-1;而将字体的外部状态即字体的大小和颜色,分别保存到一棵状态二叉树结构中,图2-2和图2-3。之所以采用二叉树结构,主要是因为它比较容易实现遍历,查找和增减节点。其中二叉树的每个子节点中存放着对应字体的数量和状态,它们的存储结构如下:
[资料来源:http://THINK58.com]
think58.com [资料来源:THINK58.com]
包含资料:源程序+论文(15000字以上)+可执行程序+答辩稿ppt+开题报告+外文翻译
本文来自think58
[来源:http://think58.com]
[资料来源:http://THINK58.com]
获取资料请您联系本站客服