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

Цель

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

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

Примечание

Этот пример использует класс 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 добавляет значения свойств для отображения

  • Создает массив 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

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

Похожие темы

Была ли эта тема полезной?