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

Цель

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

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

Примечание

Этот пример использует EmployeeInfo класс описан в разделе Class with Default Object Display.

Цель этого индивидуально настраиваемого отображения к:

  • Измените заголовок, чтобы включать имя отдела, полученное из 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: '*******'

Реализация

EmployeeInfo класс заменяет два matlab.mixin.CustomDisplay методы, чтобы реализовать показанное отображение:

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

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

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

MATLAB® вызывает displayScalarObject отобразить скалярные объекты. 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 не вызывает этот метод при отображении скалярного указателя на удаленный объект.

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

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

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

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

  • Создает a 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

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

Похожие темы