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

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

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

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

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

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

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

Реализация

The StoreData класс задает статический метод, который объявляет постоянную переменную Var. The 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 любому классу, в котором необходимо поведение статического свойства.

Статический объект данных

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

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

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

Реализация

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

classdef SharedData < handle
   properties 
      Data1
      Data2
   end
end

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

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

The 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

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

clear a1 a2
clear UseData

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

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

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

См. также

|

Похожие примеры

Подробнее о