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

Заметьте, что  properties,  methods и events являются ключевыми словами только в пределах блока classdef.

More In Depth Information (Более полная информация)

Разделы с информацией о компонентах определения класса:

Defining Classes — Syntax (Определение классов – синтаксис) –  синтаксис класса;

Defining Properties (Определение свойств) – спецификация свойств;

Class Methods (Методы классов) – спецификация методов;

Defining Events and Listeners — Syntax and Techniques (Определение событий и слушателей – синтаксис и техника) – использование событий;

Attribute Tables (Таблицы атрибутов) – список всех атрибутов.

ClassDirectories (Директории классов)

Имеются два вида директорий классов:

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

w  Директория @class_name (@-директория; вместо class_name должно быть конкретное имя класса), которая располагается внутри обычной директории. Вы можете либо определить на директории @class_name только один файл полного определения класса, либо использовать  несколько (для разных элементов одного класса) файлов этого класса.

Смотрите подробности в разделе Methods in Separate Files (Методы в выделенных файлах).

MoreInformationonClassDirectories (Дополнительная информация о директориях классов)

Смотрите  раздел Organizing Classes in Directories (Организация классов в директориях) для подробной информации о директориях классов и раздел Scoping Classes with Packages (Ограничение сферы классов пакетами) с информацией об использовании классов из пакетных директорий.

The Classdef Block (Блок сlassdef)

Блок classdef содержит определение класса и его частей. В первой строке (начинается со слова classdef) данного блока вы специфицируете:

w  Атрибуты класса;

w  Имя класса.

w  Суперклассы.

Блок classdef содержит субблоки properties, methods и events.

AssigningClassAttributes (Назначение атрибутов класса)

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

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

classdef class_name% Начало блока classdef; имя класса –

                % class_name (может быть любым); суперклассы и атрибуты

                        % класса не указаны (так как здесь они – по умолчанию).

                ...  % Здесь должен быть содержательный код блока classdef.

end% Конец блока classdef.

Одна или более явно модифицируемые (по отношению к значениям по умолчанию) величины атрибутов перечисляются вместе с именами этих атрибутов, например:

classdef (attribute1 = value,...)… %  Здесь attribute1 – 

                %  любое регламентированное имя первого атрибута, value

                        %  новая величина первого атрибута и т.д.

                ...  % Содержательный код блока classdef.

end

Смотрите раздел Class Attributes (Атрибуты класса), содержащий список атрибутов и их влияние на поведение (состояние) класса.

Specifying Superclasses (Спецификация суперклассов)

Определение класса в терминах одного или более других классов (суперклассов) посредством их спецификации в строке classdef имеет вид (пример для одного суперкласса):

classdef class_name < superclass_name % Здесь

                % superclass_name – конкретное имя суперкласса, из

                        % которого выводится подкласс с именем  class_name.

                ...  % Содержание блока classdef.

end

Смотрите раздел Creating Subclasses — Syntax and Techniques (Создание подклассов – синтаксис и техника) для более подробной информации.

SpecifyingProperties (Спецификация свойств)

Вы можете контролировать определения свойств следующим образом:

w  Спецификацией начального значения для каждого свойства индивидуально;

w  Назначением атрибутов спецификации для всего блока свойств;

w  Определением методов, которые исполняются, когда характеристики свойства устанавливаются или запрашиваются.

DefininganInitialValue (Определение начальной величины)

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

classdef class_name

                properties % Начало блока свойств – пример, когда список и

                                 % значения атрибутов – по умолчанию)

                        PropertyName  % Определение любого имени первого

                                 % свойства (назначения ему начальной величины нет,       

                                 % в этом случае они известны по умолчанию).

                        PropertyName = 'some text'; % Здесь some text –

                                 % значение второго свойства с любым именем

                                 % PropertyName, отличным от предыдущего.

                        PropertyName = sin(pi/12); % Выражение

                                 %  sin(pi/12) не содержит каких-либо переменных и

                        %  вычисляет начальную величину третьего свойства с

                        % любым уникальным именем PropertyName, отличным

          % от двух предыдущих.

                end% Конец блока свойств.

end% Конец блока classdef.

Расчет начальных величин производится только один раз, когда класс впервые используется. Значения свойств, которые не специфицированы, по умолчанию являются пустыми множествами  - [ ].

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

Все свойства имеют атрибуты, которые задают определенные аспекты поведения (состояния) свойств. Список атрибутов и их значения по умолчанию регламентированы. Атрибуты относятся ко всем свойствам в данном блоке свойств. Например: