プロパティ表示のカスタマイズ
目的
ユーザー クラスのオブジェクトに対し表示されるプロパティの順序と個数を変更します。
プロパティの順序の変更
ユーザー クラスの定義に以下のプロパティ定義が含まれるとします。
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: '*******'