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