Main Content

ハンドル互換クラスと異種混合配列

異種混合配列

異種混合配列には、さまざまなクラスのオブジェクトが含まれます。1 つの異種混合配列のメンバーは共通のスーパークラスをもちますが、属するサブクラスが異なる場合があります。異種混合配列の詳細については、matlab.mixin.Heterogeneous クラスの説明を参照してください。matlab.mixin.Heterogeneous クラスはハンドル互換クラスです。

メソッドは必ずシールする

異種混合配列上の共通のスーパークラスによってシールされている (Sealed 属性が true に設定されている) メソッドのみ呼び出すことができます。シールされたメソッドは、サブクラスがそれらのメソッドをオーバーライドするのを防ぎ、異種混合配列で呼び出されるメソッドが配列全体で同じ定義をもつことを保証します。

サブクラスは、シールされたメソッドをオーバーライドすることができません。ユーティリティ クラスで定義されるメソッドを特化するサブクラスが必要な場合、テンプレート メソッドと呼ばれる設計パターンを使用できます。

テンプレート テクニック

異種混合配列を扱うハンドル互換クラスを実装するとします。このアプローチではパブリック メソッドをシールすることができ、同時に、サブクラスごとに各サブクラス インスタンスでのメソッドの動作を特化させる方法を提供できます。ハンドル互換クラスで次を行います。

  • 異種混合配列を入力として受け入れるシールされたメソッドを定義します。

  • 各サブクラスが実装しなければならない、保護された抽象メソッドを定義します。

  • シールされたメソッド内で各配列要素に対してオーバーライドされたメソッドを呼び出します。

異種混合階層内の各サブクラスは、抽象メソッドの具象化版を実装します具象メソッドは、特定のサブクラスで要求される特化された動作を提供します。

Printable クラスは、テンプレート メソッド アプローチの実装方法を示します。

classdef (HandleCompatible) Printable
   methods(Sealed)
      function print(aryIn)
         n = numel(aryIn);
         for k=1:n
            printElement(aryIn(k));
         end
      end
   end
   methods(Access=protected, Abstract)
      printElement(objIn)
   end
end

関連するトピック