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