properties(ME)% Вызов функции propertiesс конкретным,
% ранее созданным объектом-аргументом ME.
Результат вызова функции propertiesна экране монитора:
Properties for class MException (Свойства класса MException):
identifier – идентификатор (сообщения)
message – сообщение (об ошибке))
cause - причина (сообщения)
stack - папка (данных)– см. ниже.
ObjectsOrganizeData (Объекты организуют данные)
Организация хранения данных в свойствах объектов во многом подобна полям MATLAB-структур. Поэтому при обращении к свойствам необходимо использовать dot-нотацию (точки), например, ME.message. При запросах это приводит к возвращению и, при необходимости, отображению запрашиваемых характеристик свойства. Например, запрос на тип класса свойства message объекта ME имеет вид:
class(ME.message) % Вызов стандартной MATLAB-функции
% class(класс аргумента) с аргументом ME.message.
Результат вызова функции classна экране для предыдущего объекта ME (вывод представлен в виде стандартной MATLAB-переменной ans):
ans = % Стандартный идентификатор, его значение:
char% Класс аргумента ME.message.
Ответ на обращение class(ME.message) показывает, что запрашиваемая характеристика (класс величины) свойства message для нашего объекта MEесть массив класса char(текстовая строка). Другое свойство (stack) объекта ME содержит MATLAB-структуру с именем stack. Запрос на характеристику данной структуры имеет вид:
ME.stack % Обращение к свойству stack (к структуре stack)
% объекта ME.
Результат последнего запроса выводится в виде значений полей file (файл), name (имя) и line (строка) структуры stack:
ans =
file: 'C:\Program Files\MATLAB\R2008a\...
toolbox\matlab\graph3d\surf.m'% Значение
% элемента file(поле file структуры stack)свойства stack
% указывает путь к файлу surf.m,содержащему функцию
% surf (директория на экране дается непрерывной строкой, здесь
% строка разделена на две части из-за ограниченной ширины
% листа).
name: 'surf' % Содержание поля nameструктуры stack –
% имя функции, генерирующей ошибку.
line: 50 % Содержание (номер строки кода функции, указанной
% в поле name) поляline структуры stack (в строке 50 для %surf дан оператор вызова функции error, определяющей
%сообщение об ошибке)
Можно трактовать обращение к свойству ME.stackобъекта ME просто как ссылку к одноименной структуре stackи обычным образом вызывать её поля. Например (применительно к полю file):
ME.stack.file % Обращение к части file свойства stack
% (обращение к полю file одноименной структуры
% stack в данном свойстве) объекта ME.
Результат обращения для нашего случая – вышеприведенная директория:
ans =
C:\Program Files\MATLAB\R2008a\toolbox\...
matlab\graph3d\surf.m
Очевидно, что поле fileструктуры, содержащейся в свойстве stack, является массивом символов. Это можно проверить командой:
class(ME.stack.file) % Запрос на тип класса аргумента
% ME.stack.file.
Ответ на запрос:
ans =
char % Символьный тип.
Ссылку на свойство можно использовать в какой-либо MATLAB-функции. Например, обращение к полю name структуры stack объекта ME с помощью стандартной функции strcmp (сравнение строк символов) может иметь вид:
strcmp(ME.stack.name,'surf') % Вызов функции strcmp для
% сравнения символов в поле name и словеsurf.
Результат вызова функции strcmp для прежнего объекта ME:
ans =
1 % Значение переменной ans, показывающее, что
% сравниваемые строки одинаковые, поскольку для
% рассматриваемого случая содержание поля name есть
% само имя функции surf.
Свойства объектов могут включать (иметь) различные классы величин при их начальном определении и могут определять свои величины динамически в процессе работы программы.
ObjectsManageTheirOwnData (Объекты управляют своими собственными данными)
Вы можете написать функцию, которая, например, генерирует отчет об ошибках по данным в свойствах MException-объектов. Эта функция может оказаться довольно сложной, поскольку она должна обработать все возможные ошибки. Вероятно, вам придется использовать разные функции для различных блоков try-catch в программе. В этом случае проще использовать возможности управления данными самих объектов класса MException.
Объекты, как было отмечено выше, для управления данными используют методы классов и их подклассов. При этом любые реализуемые объектами методы и операции становятся объектными. Одним из таких методов может быть генерация отчета. Методы какого-либо класса, реализуемые объектами, являются наследуемой (не копируемой) частью кода объекта. Код самого объекта в деталях может быть модифицирован много раз, но общий интерфейс (операции взаимодействия), определенный классом при работе объекта с другими (внешними по отношению к объекту) программами, а также код, заданный классом и используемый любой инстанцией класса, сохраняются. При работе объекта с данными совокупность используемых им интерфейсных операций представляет собой объектный интерфейс.
Чтобы увидеть, какие существуют методы класса, наследуемые созданными объектами класса MException, используйте встроенную функцию methods. Например:
methods(ME) % Запрос на методы класса, наследуемые % предварительно созданным MException-объектом ME.
Результат запроса:
Methods for class MException (Методы для класса
MException):
addCause eq isequal rethrow
ctranspose fieldnames ne throw
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.