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

   A = set(A,'PropertyName',PropertyValue);

Последнее означает, что для value-класса любое изменение исходных данных приводит к новому объекту по отношению к исходному.

Handle-классы. Если есть handle-объект, то имеется только одна копия (множество) данных, поэтому установка новой величины свойства меняет именно эти данные, на которые ссылаются все handle-копии. Таким образом, handle-класс ведет себя подобно графическому handle-объекту. Например, вышеуказанная установка в handle-классе может быть заказана следующим упрощенным вариантом:

        set(A,'PropertyName',PropertyValue);

Здесь оператор назначения не обязателен, так как любые переменные (в том числе и их копии) в  handle-классах, как и исходная переменная A, по сути идентифицируют не объекты, а данные (один и тот же контейнер данных). Если данные меняются, то ссылки на них посредством любых переменных-копий автоматически учтут эти изменения.

Dispatching (Диспетчеризация)

В MATLAB-классах метод диспетчеризации не базируется на сигнатуре (предписании) метода, представленного в языках C++ и Java. Когда список аргументов содержит объекты одинакового предпочтения, MATLAB использует самый левый объект для вызова нужного метода. Однако MATLAB может использовать метод аргумента, расположенного на любой позиции списка, если класс этого аргумента имеет предпочтение перед классами других аргументов.

Смотрите раздел Specifying Class Precedence (Спецификация класс-предпочтения) для получения более подробной информации.

CallingSuperclassMethod (Обращение к методу суперкласса)

Существуют различия в вызовах методов для разных ОО языков:

w В языке C++ вы вызываете метод суперкласса, используя оператор области данных:superclass::method;

w В Java-коде вы используете такую форму: superclass.method.

Эквивалентная MATLAB-операция есть  method@superclass.

Other Differences (Другие различия)

В MATLAB-классах нет эквивалента спецификатора C++ или настроек языка Java. Однако MATLAB слабо типизирован и позволяет написать функции и классы, которые работают с разными типами данных.

MATLAB-классы не поддерживают перезагружаемые функции, использующие разные сигнатуры для того же самого имени функции.

CommonObject-OrientedTechniques (Общая объектно-ориентированная техника)

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

Таблица ОО техники

Техника

Как использовать в MATLAB

Оператор перезагрузки

Overloading Operators (Операторы переопределения)

Множественная наследуемость

Using Multiple Inheritance (Использование множественной наследуемости)

Создание подклассов

CreatingSubclassesSyntaxandTechniques (Создание подклассов – синтаксис и техника)

Деструктор

Handle Class Delete Methods (Delete-методы handle-классов)

Область данных для компонентов

Property Attributes (Атрибуты свойств)

Пакеты (ограничение области классов)

ScopingClasseswithPackages (Ограничение сферы классов пакетами)

Именованные константы

Defining Named Constants (Определение именованных констант)

Статические компоненты

Static Methods (Статические методы)

Конструктор

Class Constructor Methods (Класс-конструктор- методы)

Конструктор копии

Нет прямого аналога

Ссылка/классы ссылок

Comparing Handle and Value Classes (Сравнение handle- и value-классов)

Абстрактный класс/интерфейс

Abstract Classes and Interfaces (Абстрактные классы и интерфейсы)

Сбор отходов

ObjectLifecycle (Жизненный цикл объекта)

Свойства инстанций

Dynamic Properties — Adding Properties to an Instance (Динамические свойства – добавление свойств к инстанции)

Импортирование классов

Importing Classes (Импортирование классов)

События и слушатели

Events and Listeners — Concepts (События и слушатели - концепты)

ПРИЛОЖЕНИЕ

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

1.  class – создает объект или возвращает класс объекта.

Пример:

        obj = class(s,'class_name') – создает объект obj            класса class_name, используя структуру s как образец для               определения размера объекта.

2.  strcmp – сравнивает строки символов.

Пример:

        TF = strcmp('str1', 'str2') – сравнивает строки str1           и str2 и выдает 1 (равны) или 0 (не равны).

3.  methods – отображает информацию о методах классов.

4.  getReport – выдает отчет об ошибке.

Пример:

Report = getReport(ME)- возвращает форматированное                      сообщение, базируемое на исключительной ситуации и                          представляемое объектом ME.

5.  isequal – проверяет массивы на равенство.

 Пример:

tf = isequal(A, B)- возвращает 1, если массивы                                     одинаковые, и 0 – если разные. Ненулевые массивы должны                      быть одного типа и размера.

6.  whos – отображает список переменных в рабочей области      MATLAB.

7.  plus – операция матричного суммирования. В математических        выражениях имеет обозначение «+».

8.  get – запрашивает значения свойств.

   Пример:

get(h,'PropertyName')- возвращает величину свойства                     PropertyName объекта h.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Дьяконов В. П. MATLAB.*/R2006/R2007: Самоучитель. – М.: ДМК Пресс, 2008.

2. Дьяконов В. П. Simulink 5/6/7: Самоучитель. – М.: ДМК-Пресс, 2008.

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ…………………………………………………………..................3

MATLABClassesandObject-OrientedProgramming(MATLAB-классы и объектно-ориентированное программирование)……………………………...4

Getting Started (Начало)……………………………………...5