由一个简单的程序谈起――之六(精华).PDFVIP

  • 1
  • 0
  • 约5.14千字
  • 约 8页
  • 2018-11-04 发布于天津
  • 举报

由一个简单的程序谈起――之六(精华).PDF

由一个简单的程序谈起――之六(精华).PDF

由一个简单的程序谈起――之六(精华) 江苏 无锡 缪小东 本篇主要和大家讨论设计代码之外的一些观念、看法!只当作闲 聊放松! 一、 给你一道智力题 我估计在你看这篇的时候你已经研究了前面 3 篇文章,那是一个网友在群 中为他的程序求助时我发现这个程序可能问题多多,先分析,然后就试图写一 下这个程序!不管怎么样对一些要交毕业设计的朋友可能是一个帮助!同时通 过这个简单的程序告诉初学者一些设计理念。希望大家会喜欢。 程序也许就是 20 -30 页的代码,我两天的工作量!希望大家能有所所获! 其实很明确地说写这个程序不是为了程序本身,而是告诉大家程序设计背后的 东西!经过上面的阅读大家可能比较郁闷毕竟都是代码。下面给大家两道智力 题吧! 1. 去玩过欧洲嘉年华的朋友都会看到这样一个游戏:一个平滑的圆圆的玻 璃下面是一些化好的半径为 R 的圆圈,你可以使用 5 元钱买一个半径为 r 的游戏币,你向此玻璃上投,游戏币刚好在圆圈内你就可以拿到一个 很好玩的毛茸茸的玩具――价值 30 元左右!假设某个人投射很准每次 几乎都可以投到这个圆圈相连的地方,问投入圆圈中的几率!(这是我 去嘉年华看到的游戏,一看到我就知道大家在上当!可惜很多北京、上 海的有钱的公子哥都会去玩!痛心!悲哀!这个智力题会告诉大家一个 道理“知识就是力量”) 1 慢慢想吧!本篇的末尾会公布答案! 二、 系统的构建 我将此系统分为两层――所谓的抽象层和实现层。抽象层主要包含 View 和 DOA 两个接口以及一个表示控制器抽象业务流程的 Controller 类。实现层 包括一个视图的实现、一个控制面板的实现以及一个特殊持久层 DLinkedStuCollection 的实现。下面是系统层次图: 上面就是他们的关系!结合代码仔细研究吧!下面是持久层的简要说明图: 2 DLinkedStuCollection 可以分为三部分:1.Cache,其中保存系统运行后存于 内存中的记录,这个记录是根据场景变化的;2. 中间层,主要完成将Cache 中 的元素保存入本地文件系统或者将本地文件系统中的记录加载到 Cache 中,这 层主要是 DLinkedStuCollection 中的内部类DOAFileUtil 类实现的;3.持久层, 就是本地文件系统了! 在 2 和 3 之间我们根据记录的性质的不同将记录保存到不同的文件中,具 体的可以多阅读代码体会吧! 三、本程序背后的东西 在构建本程序开始的时候,是没有这些很具体的想法!头一天写了 GUI 部 分,并且各个模块都测试没有什么错误 !然后第二天就是整个数据结构 DLinkedStuCollection 部分,刚开始也只是为了实现 DOA 接口,后来发现需要 一些其它的方法,方法加入了,也可以运行了 !发现程序的逻辑不是很清楚, 所以就不停地 Refactor ,其中也出现不少问题,例如链表的指针错误,链表的 位置等等!最后发觉可以给大家一个有一定意义的程序,也就发布!不想再做 3 进一步的 Refactor ,大家可以在此基础上继续改进吧! 3.1 程序中使用到的知识 一个简简单单的程序使用了很多方面的知识!如:Swing、IO、数据结构。 谈到数据结构 DLinkedStuCollection 本身就是一个有趣的数据结构,其中使 用了 Java Collections Framework 中的List 、LinkedList 、Arrays 、Collections 等 几个类,您是否对这些类很熟悉很熟悉呢!(没有!那就想去仔细研究吧!基 本得不能再基本了!除了会用他们,还得知道其内部的具体实现!这样在必要 的时候可以自己建立某些特殊的数据结构啊!万丈高楼平地起――从基础开始 吧!) Swing 部分使用了 JButton 、JComboBox 、JSpinner 等等。其实整个 Swing 比这个多多了!我特意使用了大家很少用到的 JSpinner 和 JSplitPane 有意思吧!

文档评论(0)

1亿VIP精品文档

相关文档