2012-03-16 28 views
1

我一直在matlab中構建了很多類,最近發現某些函數對我的類表現不是很好。我所有的物體從手柄超在matlab中定義一個類的正確方法

例如繼承:

  • finobj:我無法找到任何我的對象,難道我的基本對象必須是MATLAB的根的一個孩子?我如何設置?

  • 明確:清除環境並重新插入我的對象樹會產生一個警告,如果我已經改變了較低對象的屬性,可能我需要一個銷燬方法?

我在這裏看到http://blogs.mathworks.com/videos/2008/07/07/advanced-matlab-class-system-for-oop-in-matlab-introduction/一個預期超載的一些操作,但肯定我沒有預料到的每個對象這樣做呢?

我的主要問題是我有什麼要定義我的代碼以合理的方式行事?

+0

嘗試清除類,而不是隻清除可能? – learnvst 2012-03-16 13:01:40

+0

我有一個樹結構,如果我清除所有,修改其中一個葉對象並重建樹,我得到通知該對象被修改,所以我想知道如果我需要實現我自己的刪除方法或不。 – Carel 2012-03-17 08:24:03

+0

原來關閉所有的伎倆,http://www.mathworks.com/help/techdoc/matlab_oop/brzqjky.html – Carel 2012-06-07 23:35:44

回答

0

findobj用於處理圖形對象,而不是用戶定義的對象。因此,它不會找到你的對象(爲什麼你想在第一個地方找到它們?)。

clear影響變量,clear classes也影響類定義。請注意,在早期版本的Matlab中,clear classes也清除了所有斷點。

子類繼承了超類(包括靜態方法)的所有內容。如果您不想在您的子類中修改該特定功能,則不需要重載任何內容。

如果您希望讓代碼以合理的方式運行,您必須對其進行良好的設計。你如何設計它取決於你的代碼應該解決的問題。

+0

感謝您的答覆,我主要想知道是否有任何默認方法大多數類預計將有我總是碰到一個讓我覺得自己錯過了應該內置的東西的地方。 – Carel 2012-03-17 08:19:05

+0

@Carel:這真的很依賴你的課程。然而,面向對象編程的好處在於,在不中斷任何事情的情況下擴展類通常很容易,因此您可以隨時添加內容。當然,你可能需要「清除類」然後重新加載它們,但這就是爲什麼你已經實現了保存/加載功能(如果默認不適合你)。 – Jonas 2012-03-17 14:22:34

+0

非常真實。我只是總是達到一個點,我開始懷疑我是否錯過了一些東西,謝謝你的幫助:) – Carel 2012-03-18 08:27:59

0

事實證明,有許多類可以繼承。

  • hgsetget:提供了我在原始問題中想要的功能,這是一個更大的類,然後是純手柄。
  • 句柄:Bare Bones Class,不能與findobj,get或set一起使用。
  • 動態道具:不知道太多了,稍後我會更新。

我不知道我是否遺漏了一些東西,但似乎沒有一個matlab中可能的類的完整列表,可以繼承,表示pro的每個con的con。

相關問題