Настройка отображения скалярных объектов

Цель

Настройка отображения скалярных объектов.

Проект пользовательского отображения

Примечание

Этот пример использует EmployeeInfo класс, описанный в разделе «Класс с отображением объектов по умолчанию».

Цель этого настроенного отображения состоит в том, чтобы:

  • Измените заголовок, включив в него имя отдела, полученное из Department свойство

  • Сгруппировать свойства в две категории под названием Public Info и Personal Info.

  • Изменение отображаемых свойств

  • Измените значения, отображаемые для Personal Info категория

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

Например, вот настроенное отображение объекта EmployeeInfo класс.

Emp123 = 

EmployeeInfo Dept: Product Development

   Public Info
        Name: 'Bill Tork'
    JobTitle: 'Software Engineer'

   Personal Info
      Salary: 'Level: 10'
    Password: '*******'

Реализация

The EmployeeInfo класс переопределяет два matlab.mixin.CustomDisplay способы реализации показанного отображения:

  • displayScalarObject - Вызывается для отображения допустимых скалярных объектов

  • getPropertyGroups - Создает группы свойств для отображения

переопределение метода displayScalarObject

MATLAB® вызывает displayScalarObject для отображения скалярных объектов. The EmployeeInfo класс переопределяет этот метод для реализации скалярного отображения. После переопределения этот метод должен управлять всеми аспектами отображения скалярных объектов, включая создание заголовка, групп свойств и нижнего колонтитула, если они используются.

Эта реализация:

  • Создает пользовательский заголовок с помощью getClassNameForHeader статический метод для возврата связанного текста имени класса и значения Department свойство, чтобы получить имя отдела.

  • Использование sprintf чтобы добавить новую линию в текст заголовка

  • Отображает заголовок со встроенной disp функция.

  • Вызывает getPropertyGroups переопределить для определения групп свойств (см. следующий раздел).

  • Отображает группы свойств, использующие displayPropertyGroups статический метод.

Вот EmployeeInfo переопределение displayScalarObject способ. Необходимый защищенный доступ наследуется от суперкласса.

methods (Access = protected)
   function displayScalarObject(obj)
      className = matlab.mixin.CustomDisplay.getClassNameForHeader(obj);
      scalarHeader = [className,' Dept: ',obj.Department];
      header = sprintf('%s\n',scalarHeader);
      disp(header)
      propgroup = getPropertyGroups(obj);
      matlab.mixin.CustomDisplay.displayPropertyGroups(obj,propgroup)
   end
end

переопределение getPropertyGroups

MATLAB вызывает getPropertyGroups при отображении скалярных или нескалярных объектов. Однако MATLAB не вызывает этот метод при отображении скалярного указателя на удаленный объект.

The EmployeeInfo класс переопределяет этот метод для реализации групп свойств для отображения скалярных объектов.

Эта реализация вызывает суперкласс getPropertyGroups метод, если вход не скаляром. Если вход скаляром, этот метод:

  • Задает два заголовка для двух групп

  • Создает массив ячеек с именами свойства, включенных в первую группу. MATLAB добавляет значения свойств для отображения

  • Создает struct массив имен свойства со связанными значениями свойств для второй группы. Использование struct вместо массива ячеек позволяет вам заменить значения, отображаемые для Salary и Password свойства без изменения личной информации, хранящейся в свойствах объекта.

  • Создает два matlab.mixin.util.PropertyGroup объекты, которые используются displayScalarObject способ.

Вот EmployeeInfo переопределение getPropertyGroups способ. Необходимый защищенный доступ наследуется от суперкласса.

methods (Access = protected)
   function propgrp = getPropertyGroups(obj)
      if ~isscalar(obj)
         propgrp = getPropertyGroups@matlab.mixin.CustomDisplay(obj);
      else
         gTitle1 = 'Public Info';
         gTitle2 = 'Personal Info';
         propList1 = {'Name','JobTitle'};
         pd(1:length(obj.Password)) = '*';
         level = round(obj.Salary/100);
         propList2 = struct('Salary',...
            ['Level: ',num2str(level)],...
            'Password',pd);
         propgrp(1) = matlab.mixin.util.PropertyGroup(propList1,gTitle1);
         propgrp(2) = matlab.mixin.util.PropertyGroup(propList2,gTitle2);
      end
   end
end

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

Похожие темы