注冊 登錄
MATLAB中文論壇 返回首頁

math的個人空間 //www.mhotr.icu/?2 [收藏] [復制] [分享] [RSS] 這是math的個人空間

奇迹觉醒套装和幸运装备:日志

我為什么給《MATLAB面向對象編程——從入門到設計模式》寫序 ... ... ... ... ...

奇迹觉醒女神之光 www.mhotr.icu 熱度 61已有 9146 次閱讀2014-7-9 03:16 |個人分類:MATLAB書籍

該書詳細信息,見://www.mhotr.icu/forum-219-1.html 

2009年年末,我應中國科學院南京土壤研究所的邀請,與他們的科研人員一起開發《土壤紅外光譜信息系統》。這個系統非常復雜,它涉及到:中國海量土壤光譜數據的快速存儲和讀取、數據處理算法的開發調試和驗證,以及客戶端多界面GUI的開發。其中數據的存取使用的是MATLAB?數據庫工具箱和MySQL數據庫。數據處理算法包括數據的濾波處理、降維、數據的匹配、預測等使用的是MATLAB統計學工具箱、優化工具箱和神經網絡工具箱??突Ф說慕緱娣淺V?,如數據庫的可視化操作、算法參數的在線調試以及數據處理結果的展示等,所有的界面都是使用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)里面。研究小組在一個星期之內就掌握了系統的架構,并且能獨立地對系統進行開發和維護。

 

這是我的親身經歷,我把我的經歷也發表我的個人博客里。如果你對此文有任何疑問,可以在我的博客里給我留言。該文網址://www.mhotr.icu/blog-2-73.html

 

該書詳細信息,見://www.mhotr.icu/forum-219-1.html

發表評論 評論 (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

您需要登錄后才可以評論 登錄 | 注冊

關閉

站長推薦上一條 /3 下一條

返回頂部