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

Цель

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

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

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

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: '*******'

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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте