Main Content

カスタム表示インターフェイス

コマンド ウィンドウの表示

MATLAB® では、セミコロンで終了していないステートメントから変数が返されると、コマンド ウィンドウに情報が表示されます。たとえば、次のステートメントでは、数値 7 が含まれたフィールドをもつ構造体が作成されます。

a.field1 = 7

MATLAB で、変数名、クラス、および値が表示されます。

a = 

  struct with fields:

    field1: 7

MATLAB では、同様の表示機能をもつユーザー定義クラスが提供されています。ユーザー定義クラスでは、matlab.mixin.CustomDisplay クラスで提供される API を使用して、MATLAB でクラスのオブジェクトが表示される方法をカスタマイズできます。この API を使用するには、クラスを matlab.mixin.CustomDisplay から派生させます。

既定のオブジェクト表示

MATLAB は、disp および display という名前の独自のメソッドを実装しないすべての MATLAB クラスに、同名の既定のメソッド を追加します。これらのメソッドは表示されませんが、既定の簡易表示を作成します。

既定の簡易表示は、以下の部分で構成されています。

  • クラス名と、非スカラー配列の次元を表示するヘッダー。

  • クラスでの定義順に表示される、非表示ではないすべてのパブリック プロパティのリスト。

実際の表示は、オブジェクトがスカラーと非スカラーのいずれであるかによって異なります。また、削除されたオブジェクトや空のオブジェクト配列に対するスカラー ハンドル用の特殊な表示もあります。オブジェクトがプロパティをもたない場合、こうした状態のオブジェクトがすべて異なる形式で表示されます。

関数 details は、既定の詳細表示を作成します。詳細表示では、簡易表示に以下の項目が追加されます。

  • 完全修飾のクラス名を使用

  • handle クラスへのリンク (オブジェクトがハンドルの場合)

  • オブジェクトに対し実行される関数 methodseventssuperclasses へのリンク

MATLAB でのオブジェクトの表示例は、既定のオブジェクト表示をもつクラスを参照してください。

既定で表示されるプロパティ

MATLAB は、パブリックの getAccess をもつ、非表示に設定されていないオブジェクト プロパティを表示します (プロパティの属性を参照)。継承された抽象プロパティは表示から除外されます。表示されるオブジェクトがスカラーの場合、そのオブジェクトに付与されている動的プロパティがあれば、これも表示に含まれます。

CustomDisplay クラス

matlab.mixin.CustomDisplay クラスは、ユーザー クラスのオブジェクト表示のカスタマイズに使用できるインターフェイスを提供します。このインターフェイスを使用するには、ユーザー クラスを CustomDisplay から派生させます。

classdef MyClass < matlab.mixin.CustomDisplay

CustomDisplay クラスは HandleCompatible であるため、値およびハンドルの両方のスーパークラスと組み合わせて使用できます。

メモ

matlab.mixin.CustomDisplay を使用して列挙クラス用のカスタム表示を導出することはできません。

dispdisplay、および details

CustomDisplay インターフェイスでは、dispdisplay および details をオーバーライドできません。代わりに、この目的で定義されたカスタマイズ メソッドの任意の組み合わせをオーバーライドします。

オブジェクト表示をカスタマイズするメソッド

ユーザー クラスのオブジェクト表示をカスタマイズするために使用するメソッドのグループが 2 つあります。

  • "パーツ ビルダー メソッド" は標準表示に使用される文字列を作成します。表示の各部分を変更するには、これらのメソッドのいずれかをオーバーライドします。

  • "状態ハンドラー メソッド" は、スカラーや非スカラーなど、特定状態のオブジェクトに対して呼び出されます。ある特定状態のオブジェクトを扱うには、これらのメソッドのいずれかをオーバーライドします。

これらすべてのメソッドへのアクセスは保護されており、CustomDisplay のサブクラスで protected として定義しなければなりません ( Access = protected)。

オブジェクト表示の構成部分

標準オブジェクト表示は、ヘッダー、プロパティ リスト、フッターの 3 つの部分で構成されています。

たとえば、次に示すのは containers.Map の標準オブジェクト表示です。

Standard display for containers.Map object

既定のオブジェクト表示にフッターは含まれていません。詳細表示ではさらに多くの情報が提示されます。

Detailed display for array of containers.Map objects

オブジェクトを返す未完了のステートメント、または dispdisplay の呼び出しのように、式の結果が MATLAB のコマンド ウィンドウにオブジェクトとして表示される際のオブジェクトの表示方法をカスタマイズできます。details をオブジェクトまたはオブジェクト配列で呼び出した際に表示される結果は、CustomDisplay API によって変更されません。

パーツ ビルダー メソッド

オブジェクト表示の各部分には、表示の各部分を組み立てるメソッドが関連付けられています。

メソッド目的既定
getHeader

ヘッダーに使用するテキストを作成する。

クラス名をヘルプのポップアップにリンクする char ベクトルである [class(obj), ' with properties:'] を返す

getPropertyGroups

順序、値、グループ化などを含め、表示するプロパティとその表示方法を定義する。

プロパティの表示方法を決定する PropertyGroup オブジェクトの配列を返す

getFooter

フッターに使用するテキストを作成する。

以下の 2 種類のフッターがあります。

  • 簡易表示 — 空の char ベクトルを返す

  • 詳細表示 — このクラスの methodseventssuperclasses のリンク付き呼び出しを返す

表示に影響するオブジェクトの状態

MATLAB でのオブジェクト表示方法に影響するオブジェクトの状態は 4 つあります。

  • 有効なスカラー オブジェクト

  • 非スカラー オブジェクト配列

  • 空のオブジェクト配列

  • 削除されたオブジェクトへのスカラー ハンドル

状態ハンドラー メソッド

それぞれのオブジェクトの状態には、その特定状態にあるオブジェクトを表示するときに MATLAB が呼び出すメソッドが関連付けられています。

状態ハンドラー メソッド呼び出し対象のオブジェクトの状態
displayScalarObject

(isa(obj,'handle') && isvalid(obj)) && prod(size(obj)) == 1

displayNonScalarObject

prod(size(obj)) > 1

displayEmptyObject

prod(size(obj)) == 0

displayScalarHandleToDeletedObject

isa(obj,'handle') && isscalar(obj) && ~isvalid(obj)

ユーティリティ メソッド

CustomDisplay クラスは、各種表示オプションのさまざまな部分で使用される文字列を返すユーティリティ メソッドを提供します。これら静的メソッドの返すテキストにより、カスタマイズされたオブジェクト表示の作成は簡略化されます。

コンピューターの表示がハイパーテキストのリンクをサポートしない場合、文字列はリンクなしで返されます。

メソッド入力 出力

convertDimensionsToString

有効なオブジェクトの配列

char ベクトルに変換されたオブジェクトの次元。size(obj) を呼び出して判別される

displayPropertyGroups

配列 PropertyGroup

定義されたタイトルとプロパティ グループを表示する

getClassNameForHeader

オブジェクト

オブジェクトのドキュメンテーションにリンクされた単純なクラス名

getDeletedHandleText

なし

削除されたハンドルのドキュメンテーションにリンクされたテキスト 'handle to deleted'

getDetailedFooter

オブジェクト

フレーズ 'Methods, Events, Superclasses' を含むテキストであり、各リンクがそれぞれのコマンドを入力オブジェクトに対し実行

getDetailedHeader

オブジェクト

リンク付きのクラス名、ハンドル ページへのリンク (ハンドル クラスの場合) および 'with properties:' を含むテキスト

getHandleText

なし

ハンドル オブジェクトを説明するドキュメンテーションの節にリンクされたテキスト 'handle'

getSimpleHeader

オブジェクト

リンク付きのクラス名とフレーズ 'with properties:' を含むテキスト

関連するトピック