第13章 面向对象软件实践.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文档。上传文档
查看更多
第13章 面向对象软件实践

北京理工大学计算机系(共58页) 第13章 面向对象软件实践 主要内容 系统分析与设计 自定义控件开发 用组件装配系统 测试排错 一、系统分析与设计 PersonalInfo程序简介(1) 开发缘由:展示ToDoList程序 PersonalInfo程序简介(2) “自主知识产权”,“代码超万行”的工具软件 真实的开发过程 历经三次大的升级: (1)最初的程序框架,支持四种类型节点 (2)扩充了许多细小的功能,比如所见即所得的编辑与打印 (3)增加了新的一种“图片相册”型节点,用于存放图片 对PersonalInfo的总体评价 用理论指导整个开发进程 充分应用主流的软件技术,设计“有自己特色的软件系统架构” 在实际使用中不断完善系统,让软件持续进化 PersonalInfo学习指导 如何阅读别人的代码? (1)熟悉软件的使用 (2)把握系统架构 (3)用例驱动,个个击破 (4)牢记: 程序=数据结构+算法 PersonalInfo程序分析 了解软件功能 PersonalInfo能干什么? 怎样对一个软件进行功能描述? UML用例图 把握软件架构 从总体到局部的思维方法 充分利用开发工具:VS.NET的逆向工程 软件总体结构 设计用户界面 从Java中“偷”来的“布局管理器”方法设计界面 界面设计技巧: 如何设计可动态改变大小布局的界面? 关键: 使用Panel作为控件容器,正确设计各控件的DOCK和Anchor属性 思索 下面的用户界面如何实现的? 信息的表达 用树来表达分类 信息“挂”在节点上 真正信息放在XML文件与数据库中 信息的分类树 在标准的TreeView上派生出自定义控件 创建组件库的重要意义展示: (1)在VS.NET中安装组件 (2)在新项目中重用组件 树结构的存储 使用XML存储树本身 TreeNode Title=不重要但紧急的事 NodeType=OnlyText ImageIndex=2 SelectedImageIndex=3 展示MainTree.XML文件 设计信息存储方案 到底有哪些信息? 这些信息应保存在哪儿? 数据信息的存储 数据库的结构设计。 实体类与数据存取类 数据存取类的继承关系 封装用户界面控件 信息处理 对数据的增、删、改、查 (1)总体思路 (2)对象之间如何合作? 应用分层架构 实体层 数据存取层 系统功能层 用户界面层 PersonalInfo软件总体结构 二、自定义控件开发 OO理论的复习(1) “父”与“子” Dim stv As New SuperTreeView Dim tv As TreeView tv = stv 子类变量赋值给父类变量 Dim stn As New SuperTreeViewNode Dim tn As TreeNode tn = stn 子类变量赋值给父类变量 tv.Nodes.Add(stn) 亦可写为tv.Nodes.Add(tn) OO理论的复习(2) “对象变量”与“对象” 1 开发SuperTreeView SuperTreeView的设计方案 SuperTreeView的节点移动功能 节点移动: 通过对节点集合的操作实现 移动事件 (1)为何自定义此事件? (2)此事件的激发? (3)如何使用? XML支持 使用递归的算法实现树与XML的相互转化 在代码书写中使用了大量的含义明确的小函数实现功能封装 查找节点 最低效的算法:递归遍历子树 高效的算法:利用数据库强大的搜索能力 设计: (1)HashTable实现路径与节点的对应 (2)DataTable实现路径的模糊查找 开发难点: 保证用户对树的操作必须同步更新HashTable和DataTable PersonalInfo中的查找功能 2 开发SuperRichTextBox控件 两种最基本的组件复用方式 组合 继承 SuperRichTextBox设计方案 平台调用 所谓平台调用,就是运行于.NET之上的托管代码去调用直接运行于Windows平台之上的非托管代码。 在SuperRichTextBox中使用平台调用实现: (1)获取行号 (2)所见即所得的打印 支持拖动编辑 展示PersonalInfo的拖动编辑功能 关键是了解以下事件的用途 插入行号 基本原理: 获取用户选取文本的起始行与结束行,在每一行开头加上行号即可。 特殊问题: (1)RTF格式 (2)速度问题 基于SuperRichTextBox开发MyEditor专业版 展示基于组件开发的便捷性

文档评论(0)

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

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

1亿VIP精品文档

相关文档