プロパティ表示のカスタマイズ
目的
ユーザー クラスのオブジェクトに対し表示されるプロパティの順序と個数を変更します。
プロパティの順序の変更
ユーザー クラスの定義に以下のプロパティ定義が含まれるとします。
properties Name JobTitle Department Salary Password end
既定のスカラー オブジェクト表示では、MATLAB® はすべてのパブリック プロパティをその値と共に表示します。しかしここでは、Department
、JobTitle
、Name
のみをこの順序で表示するとします。これを行うには、CustomDisplay
から getPropertyGroups
メソッドを派生させて、これをオーバーライドします。
オーバーライドによって以下を実行します。
メソッド
Access
をprotected
として定義し、CustomDisplay
スーパークラスの定義と一致させる。目的の順序に並んだプロパティ名の cell 配列を作成する。
プロパティ リストの cell 配列から構成された
PropertyGroup
オブジェクトを返す。
methods (Access = protected) function propgrp = getPropertyGroups(~) proplist = {'Department','JobTitle','Name'}; propgrp = matlab.mixin.util.PropertyGroup(proplist); end end
プロパティ名の cell 配列を使用して PropertyGroup
オブジェクトを作成すると、MATLAB は自動的に以下を実行します。
スカラー オブジェクト表示に対してプロパティ値を追加する。
非スカラー オブジェクト表示 (空のオブジェクト配列を含む) に対して、値なしのプロパティ名を使用する。
削除されたオブジェクトへのスカラー ハンドルの表示の作成では getPropertyGroups
メソッドは呼び出されません。
プロパティに対し表示される値の変更
前のセクションで使用された同じクラス プロパティに対し、プロパティに表示される値を変更するには、プロパティ リストを struct
として作成し、プロパティ名に対して値を指定します。この getPropertyGroups
メソッドのオーバーライドでは、スーパークラス getPropertyGroups
メソッドを呼び出すことにより、非スカラー オブジェクトの既定のプロパティ表示を使用します。スカラー オブジェクトに対しては、オーバーライドによって以下が実行されます。
Password
プロパティに表示される値で、パスワードの各文字を'*'
の文字に変更する。Salary
プロパティにテキスト'Not Available'
を表示する。
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: '*******'