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

Approaches To Writing Matlab Programs (Подходы к написанию MATLAB-программ)

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

Язык  MATLAB позволяет создавать программы процедурных, объектно-ориентированных и комбинированных типов (с совместным использованием классов, подклассов, объектов и обычных функций).

ProceduralProgrammingDesign (Процедурная программная разработка)

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

Object-OrientedProgrammingDesign (Объектно-ориентированная программная разработка)

Объектно-ориентированная разработка программ включает:

w  идентификацию (формулирование) отдельных (индивидуальных) компонентов системы или приложения;

w  анализ и идентификацию прототипов (образцов) для определения общей формы компонентов, которые используются неоднократно или имеют общие характеристики;

w  классификацию (иерархическую организацию) компонентов, основанную на их однотипности или различии.

После выполнения указанных шагов необходимо формально строго описать (программно определить) классы (подклассы) и  их составные части.

Classes and Objects (Классы и объекты)

Класс описывает общие характеристики множества его представителей (инстанций) класса. Класс имеет, помимо прочего, свойства (хранилища данных) и методы (процедуры) обработки данных, относящиеся ко всем его инстанциям. В качестве инстанций могут выступать подклассы и/или объекты. Подклассы - это более узко определенные категории исходного (базового) класса (суперкласса), которые могут иметь, кроме общих, также свои особенности (например, дополнительные свойства и методы и/или свои варианты общих методов), а объекты являются последней ступенью реализации  обобщающего их класса (подкласса). Для объектов значения унаследованных от класса (подкласса) свойств определяют  отличие данного объекта от других объектов того же класса (подкласса), а специфические свойства и операции – отличия объектов от их обобщающих классов. С учетом наследуемости общих характеристик подклассы и  их объекты являются вариантами производных форм базовых классов. Таким образом, любой класс (подкласс) выполняет роль интерфейса (связки) между его представителями, позволяя им использовать (наследовать) его обобщенные  компоненты и определять (задавать или формулировать) как  отличающиеся наследуемые, так и дополнительные собственные параметры. Все MATLAB-классы делятся на встроенные и user-defined (разрабатываемые MATLAB-пользователями) классы.

Using Objects in MATLAB Programs (Использование объектов в MATLAB-программах)

Язык MATLAB описывает некоторые объекты, которые уже содержатся (встроены) в пакете и готовы для использования в любых  MATLAB-кодах. Например, рассмотрим стандартную программную конструкцию try-catch языка MATLAB.

Если код функции или операции, выполненный внутри блока try (начало всей конструкции try-catch), генерирует ошибку, дальнейшие действия автоматически переносятся в следующий блок catch для обеспечения специальной (определенной программистом) обработки  возникшей ошибки. Разумеется, для эффективной обработки ошибки необходимо иметь достаточно информации о ней.

MATLAB предоставляет детальную информацию об ошибке с помощью специализированного объекта  ME (при возникновении ошибки MATLAB автоматически создает объект  ME, его название в конструкции try-catch можно изменить) класса MException (данное имя стандартизовано). Этот объект передается в особую встроенную MATLAB-функцию, выполняющую всю работу в конструкции   try-catch.

Ниже дан пример блоков try-catch, которые выдают сообщение об ошибке:

try % Начало конструкции try-catch и блока try.

                surf % Неверный вызов стандартной MATLAB-функции surf

                        % (нет необходимых аргументов), поэтому произойдет

                % автоматический переход к блоку catch:

catch ME % Конец блока try и начало блока catchс указанием

                        % объекта ME, содержащего информацию об ошибке.

                disp(ME.message) % Вызов стандартной MATLAB-функции

                        % disp (отображение на экране) с аргументом

                % ME.message (свойством message объекта ME, где хранится

                % сообщение об ошибке); обращение к функции disp является

                % содержанием и смыслом данного блока catch.

end % Конец блока catchи всей конструкции try-catch.

Результат выполнения приведенного кода try-catch на экране  монитора (в соответствии с функцией disp) будет иметь следующий вид (показанный ниже текст для каждого вида ошибки пишется заранее в MATLAB-файлы и автоматически используется при создании объекта ME):

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

Данное сообщение, взятое из свойства   message объекта ME, – далеко не вся  информация, имеющаяся в объекте  ME.

Другая информация содержится в остальных свойствах объекта ME. Имена всех общедоступных (public) свойств класса MException, к которому принадлежит объект ME(MException-объект), можно увидеть с помощью стандартной MATLAB-функции properties (до обращения к объекту ME последний должен быть создан, т.е. должна быть предварительно выполнена конструкция try-catch):