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

classdef class_name

                properties% Все не указанные здесь атрибуты известны,

                        % имеют значения по умолчанию и относятся ко всем                                            % свойствам   этого блока properties.

                        PropertyName % Нет специального назначения (установка

                                 % идет по умолчанию) начальной величины первого                                  % свойства     данного блока properties.

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

                                 % начальную величину второго свойства данного блока

                                 % properties.

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

                properties (SetAcess = private, GetAcess = private)                           % В строке properties:  SetAcess – имя атрибута

                %  установки, private – значение этого атрибута;  GetAcess –

                %  имя атрибута запроса на значения свойств данного (второго)

                                 % блока properties.

                        Stress % Первое свойство второго блока properties

                                 % (значение – по умолчанию).

                        Strain % Второе свойство второго блока properties

                                 % (значение – по умолчанию).

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

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

В приведенном примере оба свойства Stress и Strain, не имеющие назначенных величин (по умолчанию – [ ]), могут быть установлены (модифицированы) только объектами и методами того класса (в данном случае class_name), в котором определен данный блок  properties, так как атрибут установки (SetAcess) имеет значение private.

Раздел Specifying Property Attributes (Спецификация атрибутов свойств) дает описание атрибутов свойств.

PropertyAccessMethods (Методы доступа к свойствам)

Вы можете определить метод  доступа на установку, который, если он вызывается, задает значение свойства, или метод доступа на запрос, который при вызове запрашивает значение свойства. Эти методы можно  определить в отдельном блоке methods, не содержащем атрибутов, например:

   мethods% Начало блока методов доступа класса.

                function value = get.PropertyName(object)

                        % Кодовое слово function – начало функции

                %  get.PropertyName, определяющей метод доступа объекта

                % object при запросе значения свойства  PropertyName;

                % запрашиваемая величина возвращается в точку вызова в

                                 % виде переменной value.

                        ... % Рабочие операторы метода get.PropertyName.

                end% Конец функции-метода get.PropertyName.

                function obj = set.PropertyName(obj,value)                                        % Функция set.PropertyName определяет метод

                % доступа объекта obj на установку значения value свойства

                %  PropertyName; в точку вызова возвращается объект obj

                                 % с новыми установленными параметрами.

                        ... % Рабочие операторы метода set.PropertyName.

                end% Конец функции-метода set.PropertyName.

end% Конец блока методов.

Более полная информация о методах доступа содержится в разделе Property Access Methods (Методы доступа к свойствам – см. Controlling Property Access в разделе Properties — Storing Class Data).

О свойствах смотрите в разделе Defining Properties (Определение свойств).

SpecifyingMethods (Спецификация методов)

Определяйте методы как обычные MATLAB-функции в блоках methods classdef-модуля. Главный метод (конструктор-метод) имеет то же самое имя, что и класс, и возвращает созданный объект. Назначение величин свойствам этого объекта может быть сделано в этом же конструктор-методе. Все функции методов завершаются ключевым словом end:

classdef class_name

       methods

          function obj = class_name(arg1,arg2,...) %  Этот

             % метод - конструктор объекта obj, использующий

                                         % входные аргументы arg1,arg2,...:   

             obj.Prop1 = arg1; % Задание величины arg1

                                         % свойству Prop1 созданного объекта obj.

             ... % Остальной код конструктор-метода.

          end

          function normal_method(obj,arg2,...)

             % normal_method - обычный (не статический) метод

                        % класса, используемый объектом obj для обработки

                                         % аргументов arg2,... .

             ... % Строки исполнительного кода метода.

          end

       end% Конец первого блока методов.

       methods (Static = true) % Второй блок методов - с

                        % атрибутом Static, имеющим значение true (да,

                                 % истина).

          function static_method(arg1,...) % Статический

                                 % метод – определен только для класса (не для его

                        % конкретных представителей), поэтому не требует в списке

                                         % входных аргументов имя объекта - obj.

             ... % Строки исполнительного кода метода.

          end

       end% Конец последнего блока методов.

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

Аргумент Static в последнем блоке описан в подразделе Static Methods (Статические методы) раздела Methods — Defining Class Operations (Методы – определение операций класса).

Methods In Separate Files (Методы в выделенных файлах)

Для задания метода, изолированного в отдельном M-файле  @-директории (символы @ и @ эквивалентны и определяются шрифтом), определите функцию-метод в этом файле, но не используйте блок methods в нем. Назовите M-файл такого метода именем этой функции, как обычно.