MATLAB R2008a. Классы. Часть1: Учебное пособие, страница 4

disp           fields         permute    throwAsCaller 

display        getReport      reshape    transpose

Вы можете использовать эти методы (MException-методы или объектные методы для объект-инстанций класса MException) подобно другим элементам языка MATLAB, когда  MException-объекты находятся в рабочей области (workspace) памяти среды MATLAB.  Например:

   ME.getReport% Запрос на отчет; getReport –   метод класса

                % MException (MException-getReport-метод, MException-метод

   % getReport или getReport-метод класса MException), он же -

        % объектный метод инстанции ME; формирует отчет по данным

        %  объекта ME, находящегося в рабочей области workspace).

Результат запроса – отчет об ошибках; для рассмотренного случая функции surf имеем:

   ans=

                ??? Error using ==> surf at 50 (Ошибка - см. код для                   функции surf в строке 50):

                Not enough input arguments(Нет необходимых входных                          аргументов).  

Классы и их производные формы часто имеют методы, которые заменяют (переопределяют - overload) стандартные (встроенные в пакет) MATLAB-функции. Это позволяет использовать объекты по аналогии с другими стандартными MATLAB-величинами. Так, класс MException имеет метод isequal, который сравнивает MException-объекты тем же путем, что и сравнение переменных, например типа double, стандартной MATLAB-функцией isequal. Для иллюстрации: если ME и ME2 являются MException-объектами, их можно сравнить с помощью такого выражения:

        isequal(ME,ME2)

Следует учесть, что в приведенном операторе аргументы ME, ME2 являются не обычными переменными, а объектами, поэтому они будут автоматически посланы не встроенной MATLAB-функции isequal, а методу isequal, определенному классом MException (MException-isequal-метод, MException-метод isequal или isequal-метод класса MException).

Аналогично MException-метод eq (см. выше результат команды methods) позволяет использовать стандартную форму синтаксиса MATLAB-функции eq (оператор «==») с MException-объектами:

        ME == ME2

Конечно, объекты при работе с данными должны поддерживать только те методы и операции, которые необходимы. Например, ни к чему переопределять MATLAB-функцию перемножения  объектов класса MException, так как для объектов такого класса эта операция просто не имеет смысла.

WhenShouldYouStartCreatingObject-OrientedPrograms (Когда вам следует начинать создание объектно-ориентированных программ)

Объекты хорошо интегрированы с языком MATLAB независимо от того, пишете ли вы простые функции, работаете интерактивно в командном окне или создаете сложные приложения.

Простые программные задачи проще представлять в виде обычных функций, но когда состав и сложность задач возрастают, эти функции становятся слишком объемными и трудными для управления.

Когда обычные функции-процедуры становятся слишком большими, вы можете разделить их на более мелкие функции и передавать данные от одной функции к другой. Однако когда число функций становится значительным, проектирование и управление данными, посылаемыми функциям, становится трудным и чревато ошибками. С этой точки зрения вам следует рассмотреть решение ваших задач средствами объектно-ориентированного программирования.

Understanding a Problem in Terms of Its Objects (Понимание проблемы в терминах её объектов)

Мыслить в терминах предметов или объектов гораздо проще и более естественно для многих проблем. Можно, например, думать именами собственными  как объектами, которые следует определить, а глаголами -

как операциями, которые необходимо выполнить.

Для конкретности проделаем анализ таких физических экономических организаций, как банки и ипотечные компании. Можно представить каждую из таких организаций как некоторый объект, который выполняет определенную функцию и работает с определенными данными. Процесс создания таких объектов включает определение их характеристик, которые важны для вашего случая, и, возможно, учет ряда других обстоятельств.

Идентификация идентичности (унифицируемость). Вышеуказанные  конкретные организации при всех их различиях можно объединить в  общий класс кредитных организаций, наделив его, к примеру, ссудными операциями-методами и свойством - хранилищем процентных ставок по ссуде. Данные характеристики все конкретные объекты-организации наследуют от общего класса кредитных организаций, что составляет унифицированные компоненты всех индивидуальных объектов. Особенности каждой организации можно учесть при анализе их параметров.

Идентификация различий. Теперь рассмотрим возможные отличия каждой организации. Например, ипотечная компания может обеспечивать только жилищные ссуды. Поэтому ссудная операция ипотечных компаний должна быть специализирована для обеспечения фиксированных (fixRateLoan) и плавающих (varRateLoan)  процентных оценочных методов, соответствующих двум известным типам ипотечных ссуд. Это будет дополнением к тем характеристикам общего класса кредитных организаций, инстанции которых (в данном случае ипотечные компании) наследуют как представители общего класса. Общие для ипотечных компаний характеристики целесообразно объединить в подклассе ипотечных компаний, наследующем также и общие для класса кредитных организаций компоненты. То же самое можно сделать и для банков.

Рассмотрение взаимодействия. Любые организации могут взаимодействовать. Например, ипотечная компания может продать ипотеку банку.  Для реализации этой операции объект - ипотечная компания должен поддерживать операцию продажи (sellMortgagу) ипотеки, а объект– банк должен поддерживать операцию покупки (buyMortgage) ипотеки. Перечисленные операции являются очередными дополнениями к наследуемым характеристикам базового класса, которые  легко определить как добавочные методы соответствующих подклассов. Эти дополнения, как и другие, автоматически будут наследованы всеми конкретными объектами подклассов – частными банками и ипотечными компаниями.