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