Matlab面向?qū)ο缶幊?/strong>,matlab面向?qū)ο缶幊讨С植诲e,用于開發(fā)工具箱(工具箱就是不適合編譯發(fā)布的軟件,只在ml平臺下運行)曾在matlab發(fā)布會中了解到這個oop在國外用的比較多,自己也用過相關(guān)的第三方oop的工具箱。
Matlab面向?qū)ο缶幊痰膬煞N方式
Matlab支持面向?qū)ο缶幊,主要有兩種方式,一種是利用class命令,一種是利用classdef關(guān)鍵字。Octave(一種開源科學計算程序,可視為Matlab的替代品)目前只支持第一種方式,對classdef暫不支持。
1. 利用class命令創(chuàng)建類
創(chuàng)建一個@class形式的文件夾,其中class代表要實現(xiàn)的類的名稱。假定需要創(chuàng)建一個名為point的類,可以創(chuàng)建一個名為@point的文件夾:
之后,文件夾@point下定義的函數(shù)會被視為point類的成員函數(shù)。主要包括:
point.m
構(gòu)造函數(shù)。這是一個與類名稱同名的函數(shù)。
get.m
用于獲取類point的屬性。
set.m
用于設(shè)置類point的屬性。
display.m
用于控制類的顯示字符串。
disp.m
同display.m,但是比display更加高級,在disp.m中會調(diào)用display.m。因而display.m可以實現(xiàn)對顯示更加精細的控制。
move.m
可以是任何用戶自定義函數(shù)。
以上列出的幾類函數(shù)中,只有構(gòu)造函數(shù)是必需的。但是,由于一般面向?qū)ο缶幊讨卸紩婕皩傩缘脑L問(讀取和設(shè)置),所以大多數(shù)情況下也會實現(xiàn)get.m和set.m。用戶自定義函數(shù)根據(jù)不同的應用場景,可以有也可以沒有,而且可以有多個用戶自定義成員函數(shù)。
2. 利用classdef關(guān)鍵字創(chuàng)建類
classdef是Matlab中用于創(chuàng)建類的關(guān)鍵字。其基本結(jié)構(gòu)為
其中properties用于定義類的屬性,methods定義類的成員函數(shù),events塊定義類的事件。
classdef支持類的繼承,通過<操作符進行說明,多個父類中間用&分隔。其基本語法為:
此外,methods和properties語句塊還可以利用更多的描述符控制其訪問級別,從而使得類能夠支持公共屬性,私有屬性,公共方法,私有方法,靜態(tài)方法等特性。關(guān)于classdef的更多細節(jié)請參考Matlab文檔或者網(wǎng)上資料。
MATLAB面向?qū)ο缶幊淌鞘裁礃拥捏w驗?
【問題】我是理工科學生,MATLAB用的很熟練,我有必要學面向?qū)ο缶幊虇幔?/p>
【回答】我們的書籍主要面向的就是理工專業(yè)的學生學者,我們希望通過介紹MATLABOOP來幫助他們更好的解決科研中的問題;蛟S你曾有這種感覺:在科研和學習中,寫的程序一但到達一定的規(guī)模,維護起來就會很困難,調(diào)試越來越慢。隨著科研項目不斷有新的要求,程序在不斷的修改和擴展;函數(shù)多達上百個;一旦有修改則牽一發(fā)則動全身;有的時候甚至需要做傷筋動骨的修改。MATLAB的面向?qū)ο缶幊毯驮O(shè)計就是專門幫你解決中這種問題的,我們這本書的重點不是介紹一個函數(shù)或者技巧,這本書的重點是怎樣從整體上去設(shè)計我們的程序,小到一個家庭作業(yè),一個兩個星期的項目,大到碩士或者博士的畢業(yè)設(shè)計,一個大型的多人合作的項目。面向?qū)ο蟮乃枷胱屇銖姆敝氐某绦蚓S護中解脫出來,讓你的注意力放到真正需要解決的問題之上,把需要解決的問題解決好。再次重申,我們不是為了學習面向?qū)ο蠖鴮W習面向?qū)ο,作為科研人員,我們都以高效務(wù)實為目標,如果一個技術(shù)能夠讓我們投資少量的時間去學習,并且學會了之后讓我的科研工作如虎添翼,讓我有更多的時間做其它事情,何樂而不為呢。
【問題】面向?qū)ο缶幊屉y道不是只有計算機專業(yè)的人才用的嗎?
【回答】計算機專業(yè)背景的科研人員使用面向?qū)ο笳Z言編程是一個自然的選擇,因為面向?qū)ο罂梢愿玫膸退鼈兘鉀Q軟件設(shè)計的問題。但是面向?qū)ο蟮姆椒ú⒉皇擒浖袠I(yè)所獨有的,面向?qū)ο罂梢员蝗魏螌W術(shù)背景的研究人員使用,適合解決各個行業(yè)的學術(shù)問題。由于目前主流的面向?qū)ο笳Z言比如C++JAVA學習周期比較長,面向?qū)ο蟮姆椒ê驮O(shè)計思想被繁瑣的語法隱藏了起來,大多數(shù)非CS專業(yè)背景的研究人員沒有這樣的時間和精力去先學習C++和JAVA的語法,然后再學習面向?qū)ο蟮木幊趟枷耄M而再使用的實際的科研工作中來。而且在科學工程計算中,MATLAB才是主流的語言。MATLAB從2008a之后開始真正的支持面向?qū)ο缶幊獭ATLAB的提供了這樣一個寶貴的機會,它能夠讓我們避開繁瑣的語法,直接接觸到核心的面向?qū)ο蠛驮O(shè)計模式的思想。所以這句話應該這么說,使用MATLAB語言,你不需要CS的專業(yè)知識也能學會面向?qū)ο蠛蛯嶋H模式。
【問題】MATLAB已經(jīng)很簡單了,為什么我還要學面向?qū)ο蟮腗ATLAB
【回答】MATLAB致力于提供給用戶簡單的語法,使得用戶上手快,編程語言和實用語言更加的貼近自然語言,但是這并不代表我們要解決的科研問題是簡單的。面向?qū)ο笫且环N系統(tǒng)化編程的思路,教你一開始就去系統(tǒng)化的設(shè)計你的程序,設(shè)計模式給你提供了十幾種解決復雜問題的套路,如果你能把這些套路使用在你的科研工作編程中,你的科研工作必將如虎添翼。
【問題】學習MATLAB面向?qū)ο笮枋裁礃拥幕A(chǔ)
【回答】我們寫本書的目的就是要做到讓具有初級的MATLAB語言基礎(chǔ)的讀者能夠迅速地一步到位把面向?qū)ο蟮乃枷霛B透到自己的編程習慣中去。其實只要懂得什么是變量,什么是函數(shù),就完全能夠開始學習MATLABOOP了。對于有經(jīng)驗的讀者,就是那些熟悉MATLAB語言和各種toolbox的讀者,我們的MATLABOOP書能夠讓他們更深入的了解MATLAB的體系,提高自己的對程序的總體設(shè)計,做到事半功倍。
【問題】面向?qū)ο缶幊淌遣皇且ê芏鄷r間學啊?我還有研究課題要做,沒有這么多時間啊
【回答】本書的作者都是理工科的背景,秉持高效務(wù)實的做事風格,完成每一項工作都非常的注重成本,也就是所花的時間。我們完全沒有興趣編寫一本全面詳盡,但是閱讀起來費時費力的書,這樣的書也不會受到我們目標讀者的歡迎。讓讀者用最短的時間入門面向?qū)ο螅屪x者用最小的成本學會面向?qū)ο蟮闹屑壔A(chǔ),并且能夠順利的進入到編程思想的學習當中去,越過面向?qū)ο笳Z法上的障礙,真正的享受使用面向?qū)ο蟮木幊谭椒ā2攀俏覀兊哪康。我們還盡量的讓書中內(nèi)容的編排便于查找,讀者完全可以跳躍性的閱讀自己需要的內(nèi)容,當工作變得復雜,需要更多MATLAB面向?qū)ο缶幊陶Z言特性的時候再會夠頭來查找。
【問題】面向?qū)ο缶幊屉y學么?或者說,我要學多久才能用到實際的編程中
【回答】面向?qū)ο蟮乃枷氩⒉浑y,但是目前主流的面向?qū)ο蟮恼Z言比如C++和JAVA,在語法上的繁瑣使得面向?qū)ο筮@塊寶藏被隱藏在了各種語法規(guī)定的后面。MATLAB的面向?qū)ο笳Z言的支持提供了前所未有的機會,讓我們能夠迅速的越過這些障礙,真正學習編程的思想。眾所周知,學習一門語言不但需要學習語言的語法,還需要不停的實踐。對于廣大的研究人員,MATLAB是一門主流的科學計算的語言,你學習了MATLAB面向?qū)ο蟮恼Z法,第二天就可以直接使用到自己的科研編程中去,哪怕是一個簡單的擬合,做圖,你都可以用使用OOP的思想把你的程序組合起來,你自己的科研就是實踐編程思想的最好的平臺,好的編程思想可以讓你的科研工作事半功倍。MATLAB作為一個高級的工程科學計算軟件,給你提供了前所未有的,在以往只有CS專業(yè)背景的人才能夠具有的實踐編程思想的機會。
【問題】MATLAB的面向?qū)ο缶幊毯虲++和JAVA的面向?qū)ο缶幊逃惺裁床灰粯訂幔?/p>
【回答】MATLAB作為一個商業(yè)軟件,提供面向?qū)ο缶幊痰闹С,這和C++和JAVA有本質(zhì)的不同,C++和JAVA給用戶提供"基石",用戶需要花大力氣去首先學習其語法,然后學用這些"基石"的組合來解決復雜的問題,這需要一個較長的學習周期才能上手,這需要相當深厚的基礎(chǔ)知識和時間,而大部分的科研工作者沒有這樣的時間和精力去專門學習一門語言來幫助他們解決問題。MATLAB提供了這樣一種渠道,把這些基石進行相當復雜的組合,然后當作一個語言的特殊功能提供給用戶。我們只需要多這些特殊功能稍加了解,就可以很快掌握,這是一種務(wù)實的精神,我們需要在有限的時間內(nèi),以最高的效率完成任務(wù)。本書還會簡單解釋一些這些特殊的功能是來自何方,大概是怎么實現(xiàn)的,目的是為了幫助讀者更好的使用這些功能。
【問題】面向?qū)ο缶幊毯蜁械脑O(shè)計模式是一回事嗎?
【回答】面向?qū)ο笫窍鄬τ诿嫦蜻^程的一種編程方式,設(shè)計模式是建立在面向?qū)ο蠡A(chǔ)之上的針對一些常見的復雜問題的抽象解決方法。問題再復雜,都可以被分解成小的部分加以抽象,然后使用設(shè)計模式來高效的解決。有的時候是多種設(shè)計模式的結(jié)合。
【問題】MATLAB面向?qū)ο蟛皇怯幸槐居⑽牡挠脩羰謨詥,你們的這本書和這本英文手冊比有什么優(yōu)點
【回答】本書部分參考了英文MATLAB面向?qū)ο蟮挠脩羰謨灾械膬?nèi)容,并在此之上做了大量的改進,使其能夠為更多理工科用戶學習和閱讀。具體說來,:首先這本用戶手冊有500多頁英文,通讀起來不是一件容易的事情。第二它只介紹了基本的MATLAB基本的面向?qū)ο蠹夹g(shù),沒有介紹設(shè)計模式,而設(shè)計模式才是真正利用OOP的試金石。第三因為OOP的編程和設(shè)計模式已經(jīng)是很成熟的技術(shù),我們還參考了大量的C++,JAVA的面向?qū)ο蟮木幊虝,和設(shè)計模式的書籍,我們有信心這本MATLABOOP的數(shù)據(jù)將比MATLABOOP的英文手冊更加的面向中文讀者,而且學習和閱讀的成本很低,就是說我們的目的就是讓讀者花很少的時間和精力去學習并且掌握MATLABOOP.
- PC官方版
- 安卓官方手機版
- IOS官方手機版