打破传统软件开发思路,打造新型应用程序软件
打破传统软件开发思路,打造新型应用程序软件
――从易学易用的角度学习OO
大雨点 2004年8月16日
读者:
本文适用于具有一年以上工龄的可执行应用程序类开发人员。
做MIS的朋友就不用看本文了,因为本文介绍的内容,基本上你已经都做到了!
声明:
常在网上转悠,学习了不少知识,网络是我们互相学习、共同提高的一个非常不错的平台,总是学习别人的东西,多少有点内疚,所以今天本人也硬着头皮瞎写了几句,让大家见笑了。本文涉及到的内容,纯属个人观点,可能会在那些高人面前献丑,不过我也非常有信心提高我的设计能力,所以我虚心接受大家的宝贵意见。总比那些不写文章,只看文章的强点吧:)
前言:
软件开发这个行业虽然已有相当长的一段时间了,但是和传统工业比较起来,软件业还是婴儿,处在快速成长期;同时,软件是以人为本的行业,我们的产品是我们思想的体现,这一点和传统工业是截然不同的,所以我们的思想直接关系到软件的诞生、成长、成熟、衰老直至死亡的整个生命周期,但是更为重要的一个阶段就是在软件诞生之前的系统设计阶段,由于每人的性格、学历、经验的因素的影响,我们在设计软件的思路上也会有很大的差异,本文向大家推荐了一种通用的开发思路,为您开发的软件的健康成长提供了基础。
正文:
我们在以前开发软件时,通常是新建标准Form->拖放控件->编写代码->美化界面->测试发布,这种方法尤其在2000年前被大部分人采用,当然也包括我,如果不包括你的话,可能你比我早接触OO吧,敬仰!还有一种可能就是你在坐在课桌前,写作业、写情书,哈哈;但是在后来,系统进入维护阶段后,这种开发带来的问题被逐一暴露出来,1、维护困难,修改一个BUG,引起新BUG的可能性非常大;2、由于同行们跳槽频繁,加大了程序的维护难度,代码不易读懂;3、有时客户提出,修改界面上某个标签的内容等此类没有办法再小的修改,都需要重新编译程序;那么如何解决诸如此类的问题呢?“听”我慢慢到来!
最近几年里UML在国内迅速普及,大部分公司都改善了上面遇到的情况,但是同时我发现真正将OO思想的作用发挥好的公司并不是很多,这个原因就有很多了,比如,1、公司的设计人员对OO思想理解的非常透彻,但是公司舍不得投资开发一个还没有客户的软件类库;2、设计人员对OO只理解了一半,公司就由该设计人员进行类库的设计,此时,公司的产品虽然有一定程度的进步,但OO思想的先进性却不能完全的发挥出来。
由于OO思想比较庞大,且不是本文的讨论重点,所以本文不在详细阐述,这里我们只从实用的角度介绍关于界面进行OO封装的知识;
系统需求:由于软件界面层直接和用户交互的特点,所以改动也是非常频繁的,现在用户提出界面内容(即用户通过计算机屏幕看到的内容)可以由用户修改、定制、甚至添加、删除(当然是在一定条件内的);
系统分析:首先我们分析一下用户都可以在屏幕上看到什么?对于应用程序来讲都是由一个个的窗口构成的,窗口上又放置的若干个控件:编辑框、按钮、单选、复选、列表框、树型结构、表格等,其中尤以表格的内容最复杂;要实现以上内容的用户定制,必须将上述信息保存起来,才能实现定制功能;所以我们将其分为三大类:1、窗口;2、普通控件;3、复杂控件;其中复杂控件又分为1、树型控件;2、表格控件;3、预留扩充接口;
系统实现:
数据的存放方式有若干种,1、保存到服务器数据库(访问速度慢,且增加了额外的网络流量,但程序编写简单);2、保存到服务器数据库(可以结合硬盘缓冲),程序启动时读入内存(访问速度快,但占用大量内存,程序编写相对麻烦);3、保存到本地库文件(访问速度适中、不占用额外内存,程序编写相对麻烦);在这里,由于系统每显示一个界面都需要对这些数据进行访问,所以使用本地数据文件比较合理一些,节约内存,速度中等,虽然有点降低系统效率,但是由于每个界面都是在手工操作的情况下进行显示的,所以与自动系统相比次数要少得多,故降低的系统效率用户是可以承受的,但同时出现的问题时,如果在客户端A修改的数据如何更新到客户端B,这个吗。。。还是给您一个思考的机会吧,哈哈。OK,数据存放方式确定了,下面我们考虑一下软件结构实现,我们采用面向对象的设计观点,由标准窗口派生出我们自己的,用户可以修改窗口内容(不包括界面控件)的类BasForm,该类提供给用户可以定制窗口样式的功能,包括:大小、标题、样式等;在窗口创建时从数据文件种读取,界面显示后通过一定方式提供给用户一个设置该窗口内容的界面,在用户修改界面内容后保存到数据文件中,OK,一个可以由用户最终用户定制界面的基础类就出来了;同理我们从BasForm中在派生出BasFormControl,提供用户定制界面标准控件的功能,常用的比如标签、按钮等;之后在派生出BasFormControlSupper,提供对复杂界面控件的定制功能,包括树型控件、表格控件等;提供对树型控件的添加、修改、删除;提供对表格控件的列标题、列是否显示、显示格式等;由此一个最最基本的类库就建立成功了;下面根据我们的需要可以对其进行扩充了。
比如用户需要在界面上添加一个按钮,当然这个比较简单的就能实现,问题是加这个按钮干吗?当然要有执行代码支撑才行,所以我们要扩充一个代码解析的功能,就是让最终用户可以和我们一样编写语句,当然这个工作如果让用户做的话,用户肯定不愿意,因为这个对用户的要求太高了,所以这个工作应该交给我们的技术支持来做,不要说技术支持不会哟!还有我们还没有提供打印支持哟,不要忘了,打印功能是最常见的;所以我们还可以在最后派生打印功能;
结尾:
本文只是抛砖引玉,根据读者的实际需要,可以更深度的挖掘该设计思想,应用到您的开发中去,提高。。。。。。
作者简介:
澳门回归的那一年“石门”毕业。。。。。。
中关村进入低谷的那一年到北京混。。。。。。
到现在还一直和师弟师妹们挣饭吃。。。。。。
郁闷中。。。。。。
熟练使用DELPHI、CBuilder、JBuilder、VC6 热衷电信业软件开发
Email:hryyx@163.com
----------------------------------------------------全文完--------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现