exponenta event banner

Статические данные

Что такое статические данные

Статические данные относятся к данным, которые совместно используются всеми объектами класса и которые можно изменить после создания.

Статические данные используются для определения счетчиков, используемых экземплярами класса или другими данными, совместно используемыми всеми объектами класса. В отличие от данных экземпляра, статические данные не изменяются в зависимости от объекта. MATLAB ® предоставляет несколько способов определения статических данных в зависимости от ваших требований.

Статическая переменная

Классы могут использовать постоянную переменную для хранения статических данных. Определите статический метод или локальную функцию, в которой создается постоянная переменная. Метод или функция предоставляет доступ к этой переменной. Этот метод используется при необходимости сохранения одной или двух переменных.

При сохранении объекта класса, определяющего постоянную переменную, не сохраняются статические данные, связанные с классом. Чтобы сохранить статические данные в объекте или определить более подробные данные, используйте метод статических данных Объект статических данных

Внедрение

StoreData класс определяет статический метод, который объявляет постоянную переменную Var. setgetVar обеспечивает установку и получение доступа к данным в постоянной переменной. Потому что setgetVar имеет открытый доступ, можно установить и получить данные, сохраненные в постоянной переменной глобально. Управление объемом доступа путем установки метода Access атрибут.

classdef StoreData
   methods (Static)
      function out = setgetVar(data)
         persistent Var;
         if nargin
            Var = data;
         end
         out = Var;
      end
   end
end

Установка значения переменной путем вызова setgetVar с входным аргументом. Метод присваивает входное значение постоянной переменной:

StoreData.setgetVar(10);

Получение значения переменной путем вызова setgetVar без входного аргумента:

a = StoreData.setgetVar
a =

    10

Удаление постоянной переменной путем вызова clear на StoreData класс:

clear StoreData
a = StoreData.setgetVar
a =

     []

Добавить такой метод, как setgetVar любому классу, в котором требуется поведение статического свойства.

Объект статических данных

Чтобы сохранить более обширные данные, определите класс дескриптора с общими свойствами. Назначьте объект класса свойству константы класса, использующего статические данные. Этот метод полезен в следующих случаях:

  • Добавьте дополнительные свойства или методы, изменяющие данные.

  • Сохраните объекты класса данных и перезагрузите статические данные.

Внедрение

SharedData класс является классом дескриптора, который позволяет ссылаться на одни и те же данные объекта из нескольких переменных дескриптора:

classdef SharedData < handle
   properties 
      Data1
      Data2
   end
end

UseData класс является заглушкой класса, который использует данные, хранящиеся в SharedData класс. UseData класс сохраняет дескриптор в SharedData объект в свойстве константы.

classdef UseData
   properties (Constant)
      Data = SharedData
   end
   % Class code here
end

Data содержит дескриптор SharedData объект. MATLAB создает SharedData при загрузке объекта UseData класс. Все созданные впоследствии экземпляры UseData класс относится к тому же самому SharedData объект.

Для инициализации SharedData свойства объекта, загрузитеUseData путем ссылки на свойство константы.

h = UseData.Data
h = 

  SharedData with properties:

    Data1: []
    Data2: []

Используйте маркер перемещения для SharedData объект для назначения данных значениям свойств:

h.Data1 = 'MyData1';
h.Data2 = 'MyData2';

Каждый экземпляр UseData относится к тому же объекту-дескриптору:

a1 = UseData;
a2 = UseData;

Ссылка на данные с помощью переменной объекта:

a1.Data.Data1
ans =

MyData1

Назначение нового значения свойствам в SharedData объект:

a1.Data.Data1 = rand(3);

Все новые и существующие объекты UseData класс совместно использует одно и то же SharedData объект. a2 теперь имеет rand(3) данные, которые были назначены a1 на предыдущем шаге:

a2.Data.Data1
ans =

    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575

Чтобы повторно инициализировать свойство константы, очистите все экземпляры UseData и затем очистить класс:

clear a1 a2
clear UseData

Постоянные данные

Для сохранения неизменяемых значений присвойте данные свойству константы. Все экземпляры класса имеют одно и то же значение для этого свойства. Управление областью доступа к постоянным свойствам путем задания свойства Access атрибут.

Единственным способом изменения значения свойства константы является изменение определения класса. Используйте постоянные свойства, такие как открытые конечные статические поля в Java ®.

См. также

|

Связанные примеры

Подробнее