Правильный способ определения класса в Matlab - PullRequest
1 голос
/ 16 марта 2012

Я собирал несколько классов в Matlab и недавно обнаружил, что некоторые функции не очень хорошо работают с моими классами.Все мои объекты наследуются от суперкласса дескриптора

Например:

  • finobj: я не могу найти ни один из своих объектов, должен ли мой базовый объект быть дочернимкорня матлаба?Как мне это настроить?

  • clear: Очистка среды и повторное создание моего дерева объектов выдает предупреждение, если я изменил свойства нижних объектов, возможно, мне нуженметод уничтожения?

Я вижу здесь http://blogs.mathworks.com/videos/2008/07/07/advanced-matlab-class-system-for-oop-in-matlab-introduction/, что ожидается перегрузка некоторых операций, но, конечно, я не собираюсь делать это для каждого объекта?

Мой главный вопрос: что я должен определить, чтобы мой код вел себя разумно?

Ответы [ 2 ]

0 голосов
/ 08 июня 2012

Как выясняется, есть ряд классов, от которых можно унаследовать.

  • hgsetget: обеспечивает функциональность, которую я хотел в первоначальном вопросе, это класс большего размера, чем простой дескриптор.*
  • handle: Bare Bones Class, не работает с findobj, get или set.
  • Динамический реквизит: не слишком много знаю об этом, я обновлю позже.

Не знаю, пропустил ли я что-то, но там нетпредставляется полным списком возможных классов в matlab, от которых можно унаследовать, с указанием аргументов за каждого из них.

0 голосов
/ 16 марта 2012

findobj для обработки графических объектов, а не для пользовательских объектов.Таким образом, он не найдет ваши объекты (зачем вам их искать?).

clear влияет на переменные, clear classes влияет также на определения классов.Обратите внимание, что в более ранних версиях Matlab clear classes также очищал все точки останова.

Подклассы наследуют все от суперклассов (включая статические методы).Нет необходимости перегружать что-либо, если вы не хотите изменять эту конкретную функциональность в своем подклассе.

Если вы хотите, чтобы ваш код вел себя разумно, вы должны хорошо его спроектировать.То, как именно вы должны проектировать, очень сильно зависит от проблемы, которую должен решить ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...