Измените порядок и количество свойств, отображенных для объекта вашего класса.
Предположим, что ваше определение класса содержит следующее определение свойства:
properties Name JobTitle Department Salary Password end
В скалярном отображении объекта по умолчанию MATLAB® отображает все публичные свойства наряду с их значениями. Однако вы хотите отобразить только Department
, JobTitle
и Name
, в том порядке. Можно сделать это путем получения от CustomDisplay
и переопределения метода getPropertyGroups
.
Ваше переопределение
Задает метод Access
как protected
, чтобы совпадать с определением в суперклассе CustomDisplay
Создает массив ячеек имен свойства в желаемом порядке
Возвращает объект PropertyGroup
, созданный из массива ячеек списка свойств
methods (Access = protected) function propgrp = getPropertyGroups(~) proplist = {'Department','JobTitle','Name'}; propgrp = matlab.mixin.util.PropertyGroup(proplist); end end
Когда вы создаете объект PropertyGroup
с помощью массива ячеек имен свойства, MATLAB автоматически
Добавляют значения свойств для скалярного отображения объекта
Использует имена свойства без значений для нескалярного отображения объекта (включая массивы пустого объекта)
Метод getPropertyGroups
не называется, чтобы создать отображение для скалярного указателя на удаленный объект.
Учитывая те же свойства класса, используемые в предыдущем разделе, можно изменить значение, отображенное для свойств путем создания списка свойств как struct
и определения значений для имен свойства. Это переопределение метода getPropertyGroups
использует отображение свойства по умолчанию для нескалярных объектов путем вызова суперкласса метод getPropertyGroups
. Для скалярных объектов, переопределения:
Изменяет значение, отображенное для свойства Password
к символу '*'
для каждого символа в пароле.
Отображает текст 'Not Available'
для свойства Salary
.
methods (Access = protected) function propgrp = getPropertyGroups(obj) if ~isscalar(obj) propgrp = getPropertyGroups@matlab.mixin.CustomDisplay(obj); else pd(1:length(obj.Password)) = '*'; propList = struct('Department',obj.Department,... 'JobTitle',obj.JobTitle,... 'Name',obj.Name,... 'Salary','Not available',... 'Password',pd); propgrp = matlab.mixin.util.PropertyGroup(propList); end end end
Отображение объекта выглядит так:
EmployeeInfo with properties:
Department: 'Product Development'
JobTitle: 'Software Engineer'
Name: 'Bill Tork'
Salary: 'Not available'
Password: '*******'