Отображение пользовательских свойств

Цель

Измените порядок и количество свойств, отображенных для объекта вашего класса.

Изменение порядка свойства

Предположим, что ваше определение класса содержит следующее определение свойства:

properties
      Name
      JobTitle
      Department
      Salary
      Password
end

В скалярном отображении объекта по умолчанию MATLAB® отображает все публичные свойства наряду с их значениями. Однако вы хотите отобразить только Department, JobTitle, и Name, в том порядке. Можно сделать это путем получения из CustomDisplay и переопределение getPropertyGroups метод.

Ваше переопределение

  • Задает метод Access как protected совпадать с определением в CustomDisplay суперкласс

  • Создает массив ячеек имен свойства в желаемом порядке

  • Возвращает PropertyGroup объект создается из массива ячеек списка свойств

methods (Access = protected)
   function propgrp = getPropertyGroups(~)
      proplist = {'Department','JobTitle','Name'};
      propgrp = matlab.mixin.util.PropertyGroup(proplist);
   end
end

Когда вы создаете PropertyGroup объект с помощью массива ячеек имен свойства, MATLAB автоматически

  • Добавляют значения свойств для скалярного отображения объекта

  • Использует имена свойства без значений для нескалярного отображения объекта (включая массивы пустого объекта)

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

Изменение значений, отображенных для свойств

Учитывая те же свойства класса, используемые в предыдущем разделе, можно изменить значение, отображенное для свойств путем создания списка свойств как struct и определение значений для имен свойства. Это переопределение getPropertyGroups метод использует отображение свойства по умолчанию в нескалярных объектах путем вызова суперкласса getPropertyGroups метод. Для скалярных объектов, переопределения:

  • Изменяет значение, отображенное для Password свойство к '*' символ для каждого символа в пароле.

  • Отображает текст 'Not Available' для Salary свойство.

methods (Access = protected)
   function propgrp = getPropertyGroups(obj)
      if ~isscalar(obj)
         propgrp = getPropertyGroups@matlab.mixin.CustomDisplay(obj);
      else
         pd(1:length(obj.Password)) = '*';
         propList = struct('Department',obj.Department,...
            'JobTitle',obj.JobTitle,...
            'Name',obj.Name,...
            'Salary','Not available',...
            'Password',pd);
         propgrp = matlab.mixin.util.PropertyGroup(propList);
      end
   end
end

Отображение объекта выглядит так:

  EmployeeInfo with properties:

    Department: 'Product Development'
      JobTitle: 'Software Engineer'
          Name: 'Bill Tork'
        Salary: 'Not available'
      Password: '*******'

 Полный список классов

Похожие темы