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

Attribute Descriptions (Описания атрибутов)

Список поддерживаемых атрибутов смотри в разделах:

w Class Attributes (Атрибуты класса);

w Specifying Property Attributes (Спецификация атрибутов свойств);

w Method Attributes (Атрибуты методов);

w Event Attributes (Атрибуты событий).

SpecifyingAttributeValues (Спецификация значений атрибутов)

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

w Атрибут SetObservable свойства AccountBalance есть true (истина, да);

w Атрибут Hidden свойств SSNumber и CreditCardNumber есть true, а их атрибут SetAccess – private.

Следуя вышесказанному, ясно, что определения с разными установками атрибутов спецификации требуют разных блоков. Пример для предыдущих наборов атрибутов свойств имеем:

properties (SetObservable = true)

       AccountBalance

   end

   properties (SetAccess = private, Hidden = true)

       SSNumber

       CreditCardNumber

end

Последовательность нескольких атрибутов  специфицируется через запятые, как показано в последнем properties-блоке.

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

classdef (Sealed = true,…) myclass

       ...

   end

Simpler Syntax for true/false Attributes(Упрощенный синтаксис для значений true/false атрибутов)

Все атрибуты, значения которых могут быть true или false (ложь), по умолчанию являются false. Вы можете использовать упрощенный синтаксис для таких атрибутов: одно имя атрибута соответствует установке в true, а добавление к нему отрицания  «~»  – false. Например:

methods (Static)

       ...

end

есть то же самое, что и

methods (Static = true)

       ...

end

Для определения того же метода как false добавим оператор «~»:

methods (~Static)

       ...

end

Последнее есть то же самое, что и

methods (Static = false)

       ...

   end

Sample Class Syntax (Пример синтаксиса класса)

Следующий код показывает синтаксис типового определения класса; оно не является функциональным, так как его ссылки (вызовы) не могут быть выполнены. Цель этой части – иллюстрация вариантов синтаксических конструкций:

classdef (ConstructOnLoad) employee < handle

        % Class help goes here (Здесь пояснение для класса): атрибут

% ConstructOnLoad – регламентированный, устанавливается как

% «истина»; employee – имя создаваемого user-defined-класса

                % (подкласса); handle – регламентированный абстрактный

                % суперкласс.

   properties% Атрибуты и их значения – по умолчанию.

      Name % Property help goes here (Здесь пояснение для свойства):

                        % назначение user-defined-свойства Name с установкой

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

   end

   properties (Dependent) % Регламентированный атрибут

                        % Dependent устанавливается  как «истина», остальные

                        %  атрибуты – по умолчанию.

      JobTitle % User-defined-свойство с величиной «пусто» по

                        % умолчанию.

   end

   properties (Transient) % Регламентированный атрибут

                        % Transient устанавливается  как «истина», остальные

                        %  атрибуты – по умолчанию.

      OfficeNumber % User-defined-свойство с величиной «пусто»

                        % по умолчанию.

  end

  properties (SetAccess = protected,...

                 GetAccess = private) % Назначение величин

                        %  двум регламентированным атрибутам, остальные

                        %  атрибуты – по умолчанию.

      EmpNumber % User-defined-свойство без  величины (пусто).

  end

   events%  Атрибуты и их значения – по умолчанию.

      BackgroundAlert % User-defined-событие (пусто).

   end

   methods%  Атрибуты и их значения – по умолчанию.

      function Eobj = employee(name) % Method help here                          %  (Здесь пояснение для метода) : конструктор объектов

                                 % класса employee.

           Eobj.Name = name; % Назначение величины name

                                 % свойству Name объекта Eobj.

           Eobj.EmpNumber = ...

                    employee.getEmpNumber; %  Назначение

                          % величины, взятой из свойства getEmpNumber класса

                          % employee, свойству EmpNumber объекта Eobj.

      end

      function result = backgroundCheck(obj) %  Функция-

                                 % метод для объекта obj. 

         result = ...

             queryGovDB(obj.Name,obj.SSNumber);% Вызов 

                                         % метода queryGovDB, использующего свойства

                                 % Name  и SSNumber объекта obj.

           if result == false % Проверка значения result

                                         % для определения порядка действий.

             notify(obj,'BackgroundAlert'); % notify –

                 %  регламентированное сообщение (запуск

                                 %  события) о событии ВackgroundAlert в объекте

                                 %  obj – источнике события.

           end

      end

      function jobt = get.JobTitle(obj) %  Функция-метод

                        % (запроса величины свойства JobTitle объекта obj)

             % переопределяет стандартную функцию get.

         jobt = currentJT(obj.EmpNumber); %  Вызов

                                 % метода currentJT, использующего величину

                        %  свойства EmpNumber объекта obj.

      end

      function set.OfficeNumber(obj,setvalue)

                        % Функция-метод set.OfficeNumber (установки

                % величины свойства OfficeNumber объекта obj)

                % переопределяет стандартную функцию set; для установки

                                 % используется параметр   setvalue.

         if isInUse(setvalue) % Вызов метода isInUse