注册 登录
MATLAB中文论坛 返回首页

math的个人空间 http://www.ilovematlab.cn/?2 [收藏] [复制] [分享] [RSS] 这是math的个人空间

日志

我为什么给《MATLAB面向对象编程——从入门到设计模式》写序 ... ... ... ... ...

热度 58已有 7832 次阅读2014-7-9 03:16 |个人分类:MATLAB书籍

该书详细信息,见:http://www.ilovematlab.cn/forum-219-1.html 

2009年年末,我应中国科学院南京土壤研究所的邀请,与他们的科研人员一起开发《土壤红外光谱信息系统》。这个系统非常复杂,它涉及到:中国海量土壤光谱数据的快速存储和读取、数据处理算法的开发调试和验证,以及客户端多界面GUI的开发。其中数据的存取使用的是MATLAB®数据库工具箱和MySQL数据库。数据处理算法包括数据的滤波处理、降维、数据的匹配、预测等使用的是MATLAB统计学工具箱、优化工具箱和神经网络工具箱。客户端的界面非常之多,如数据库的可视化操作、算法参数的在线调试以及数据处理结果的展示等,所有的界面都是使用MATLB GUIDE完成的。从把系统的要求整理出来,到系统的第一个版本完成,花了将近1个月的时间。由于是密集型开发,所以在这段时间内我对整个系统的流程、架构非常熟悉,所以开发起来也不是特别困难。该系统在2010年获得了中国软件的著作权(编号:2010R11L027920)。

 

2013年,南京土壤所再次邀请我。他们想把这个系统进行升级,使之不仅仅局限于在土壤所里使用,更希望它能服务于所有的科研人员,把这个系统做成网络版。只要用户能连接网络并且使用MATLAB,就能使用这个系统。同时,给该系统增加多种算法。土壤所成立了专门的研究小组来开发和维护此系统。当我在思考如何指导该研究小组来升级系统的时候, 我面临一个比较棘手的问题:如果对原系统进行升级的话,需要改动的地方特别多。因为数据的读写、算法的运用以及界面展示,这三者之间是高度耦合的。很多函数的实现都是在MATLAB GUIDE的回调函数里完成的。对于一个复杂的系统来说,一个地方的小小改动,通常需要测试整个系统架构和算法的稳定性。同时,这也不利于系统的更新。比如说,科研人员有了新的数据匹配的算法,如何通过改变最少的代码来实现新的算法,同时也能保证系统的完整性和可靠性?

 

有一天我跟徐潇一起吃午饭,跟他分享了我遇到的问题。徐潇告诉我软件设计中,解决这个问题的标准方法是使用面向对象编程和MVCModel-View-Controller Pattern,既:模型-展示-控制器模式)模式。虽然这看起来有点浪费以前的代码,但是为了系统的长远稳定性和易维护性来说,这是大型系统的不二选择。。而且他正在写一本关于MATLAB面向对象的书籍,如果我感兴趣的话,他可以单独抽出一个章节来写如何基于MATLAB的面向对象编程来实现MVC。我说好,你写好的话,我第一个使用。两个星期以后,徐潇发给我一个PDF文件,使用了非常通俗的例子诠释了如何实现MVC的过程(这就是大家现在看到的第7章:分离用户界面和模型)。我在使用的过程中,充分地感受到了MATLAB面向对象编程的强大。我大概花了10个小时的时间,就把2009年的系统的架构改成了MVC的架构。20138月我在土壤所里,把新的架构展示了土壤所负责该系统开发和维护的研究小组。该研究小组成员对MATLAB语言了解不是很多,但是这并不会阻碍他们开发系统,因为我们已经完全把算法的模型(Model),界面的展示(View)以及如何实现用户输入的获取(如:键盘、鼠标事件)完全分开,放在不同的类(Class)里面。研究小组在一个星期之内就掌握了系统的架构,并且能独立地对系统进行开发和维护。

 

这是我的亲身经历,我把我的经历也发表我的个人博客里。如果你对此文有任何疑问,可以在我的博客里给我留言。该文网址:http://www.iLoveMatlab.cn/blog-2-73.html

 

该书详细信息,见:http://www.ilovematlab.cn/forum-219-1.html

路过

鸡蛋
54

鲜花
1

握手
1

雷人

刚表态过的朋友 (56 人)

发表评论 评论 (5 个评论)

回复 星魂斗士 2015-11-18 21:24
赞一个啊
回复 李小斯 2015-12-13 18:55
刚刚在看
回复 Robot2 2016-1-14 19:15
买不到额,怎么买的,math大哥?
回复 LM风华正茂 2018-11-23 21:16
太牛了
回复 wy4679 2019-1-2 10:34
你好,我网购回来的《MATLAB面对对象编程》,我发现不是正版,没有在线交流卡。我想请问有没其他途径购买在线交流卡?

facelist

您需要登录后才可以评论 登录 | 注册

关闭

站长推荐上一条 /2 下一条

返回顶部