Main Content

ユーザー定義クラス

クラス定義とは

MATLAB® クラスの定義は、クラスのすべてのインスタンスに共通する要素についての記述をするためのテンプレートです。クラス メンバーは、クラスを定義する、プロパティ、メソッド、イベントです。

MATLAB クラスをコード ブロックで定義し、サブブロックでさまざまなクラス メンバーの定義を表します。これらのブロックの構文の詳細については、クラスのコンポーネントを参照してください。

クラス メンバーの属性

属性は、クラス定義ブロックで定義された、クラスの動作とメンバーを変更します。たとえば、メソッドを静的と指定したり、あるいはプロパティを private と指定できます。以下の節では、これらの属性について説明します。

クラス定義は、実際にクラスを作成せずに、継承関係またはクラス メンバーの名前などの情報を提供できます。クラスのメタデータを参照してください。

属性の構文の詳細は、属性の指定を参照してください。

クラスの種類

MATLAB クラスには、ハンドル クラスと値クラスの 2 種類があります。

  • 値クラスは独立した値を表します。値オブジェクトにはオブジェクト データが含まれ、このデータはオブジェクトのコピーと共有されません。MATLAB 数値型は値クラスです。関数に渡されて変更された値オブジェクトは、変更されたオブジェクトを呼び出し元に返さなければなりません。

  • ハンドル クラスは、オブジェクト データを参照するオブジェクトを作成します。インスタンス変数のコピーが同じオブジェクトを参照します。関数に渡されて変更されたハンドル オブジェクトは、オブジェクトを返さずに呼び出し元のワークスペース内のオブジェクトに影響を与えます。

詳細については、ハンドル クラスと値クラスの比較を参照してください。

オブジェクトの作成

クラス コンストラクターの詳細については、クラス コンストラクター メソッドを参照してください。

オブジェクトの配列の作成方法の詳細については、オブジェクト配列の作成と初期化を参照してください。

クラスの階層

クラス階層を定義する方法の詳細は、クラスの階層 — 概念を参照してください。

classdef 構文

クラス定義は、classdef キーワードと end キーワードによって区切られたコード ブロックです。ファイルには、クラス定義を 1 つだけ含むことができます。

以下の図は、classdef ブロックの構文を表します。classdef キーワードの前に記述できるのは、コメントと空行のみです。

Example syntax of classdef block

クラスのコード

以下は、1 つのプロパティと、入力引数が指定されたときにプロパティの値を設定するコンストラクター メソッドをもつ単純なクラス定義です。

classdef MyClass
   properties
      Prop
   end
   methods
      function obj = MyClass(val)
         if nargin > 0
            obj.Prop = val;
         end
      end
   end
end

MyClass のオブジェクトを作成するには、クラスと同じ名前をもつ .m ファイルにクラス定義を保存し、必要な引数でコンストラクターを呼び出します。

d = datestr(now);
o = MyClass(d);

ドット表記を使用してプロパティ値にアクセスします。

o.Prop
ans =

10-Nov-2005 10:38:14

MATLAB が既定のオブジェクトを作成できるように、コンストラクターは引数なしの構文をサポートしなければなりません。詳細については、入力引数なしでコンストラクターを呼び出す条件を参照してください。

クラス定義のコンポーネントの詳細については、クラスのコンポーネントを参照してください。

関連するトピック