在matlab中定义类的正确方法

时间:2012-03-16 12:33:29

标签: matlab

我一直在matlab中构建了许多类,并且最近发现某些函数对我的类没有很好的表现。我的所有对象都继承自句柄超类

例如:

  • finobj:我找不到任何对象,我的基础对象是否需要成为matlab Root的子级?我该如何设置?

  • 清除:如果我改变了较低对象的属性,清除环境并重新设置对象树会产生警告,可能我需要一个destroy方法吗?

我在这里http://blogs.mathworks.com/videos/2008/07/07/advanced-matlab-class-system-for-oop-in-matlab-introduction/看到一个人应该重载一些操作但是我不希望每个对象都这样做吗?

我的主要问题是我必须为我的代码定义什么才能以明智的方式行事?

2 个答案:

答案 0 :(得分:0)

findobj用于处理图形对象,而不是用户定义的对象。因此,它不会找到你的对象(你为什么要首先找到它们?)。

clear会影响变量,clear classes也会影响类定义。请注意,在早期版本的Matlab中,clear classes也清除了所有断点。

子类继承超类中的所有内容(包括静态方法)。如果您不想修改子类中的特定功能,则无需重载任何内容。

如果您希望代码以合理的方式运行,则必须将其设计得很好。你究竟如何设计它取决于你的代码应该解决的问题。

答案 1 :(得分:0)

事实证明,有许多类可以继承。

  • hgsetget:在原始问题中提供我想要的功能,这是一个更大的类,然后是普通句柄。
  • 句柄:Bare Bones类,不适用于findobj,get或set。
  • 动态道具:不太了解它,我稍后会更新。

我不知道我是否错过了一些东西,但似乎没有一个可以继承的matlab中可能的类的完整列表,表明每个类的赞成。