Настройка отображения скалярных объектов.
Примечание
Этот пример использует 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
- Создает группы свойств для отображения
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
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