主要内容

このペジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

クラスの階層-概念

分類

クラスを階層化すると,コ,ドに加え,既に解決済みの設計問題の解も再利用しやすくなります。クラスの階層はセットとみなすことができます。このセットは,スパセット(“スパクラス”または“基底クラス”)とサブセット(“サブクラス”または“派生クラス”から成ります。次の図は,クラスを使用して従業員のデタベスを表す方法を例として示しています。

階層のルトは员工クラスです。このクラスは,すべての従業員のセットに適用するデタと操作を含みます。従業員のセットにはサブセットが含まれます。サブセットのメンバーは従業員でもありますが,従業員のタイプをさらに特定して定義するセットのメンバーでもあります。TestEngineerのようなサブクラスは,これらのサブセットの例です。

抽象化の進展

クラスは,現実の世界の概念または物事を表現します。クラスを設計する際には、クラスが表現するものを抽象化します。従業員の抽象化と、クラスの利用目的に対して従業員の本質的な面は何かを考えてください。たとえば、住所、氏名、部門は、すべての従業員がもっているものです。

クラスを設計するときは,抽象化にはこれらの必要な要素のみを含めます。たとえば,従業員の髪の色や靴のサイズも特長には違いありませんが、この従業員クラスの設計には関係がないといえるでしょう。一方、販売担当地域は、一部の従業員だけに関係するので、サブクラスに属します。

クラス階層の設計

クラスのシステムを設計する際には,共通のデタと機能をスパクラスに配置します。このスパクラスから,サブクラスを派生します。サブクラスは,スーパークラスのデータや機能を継承し,特定の目的に応じたサブクラスに固有の特徴のみを定義します。この方法には,次のような利点があります。

  • すべてのクラスに共通するコドの重複を避けられる。

  • スーパークラスを変更せず,さらに他のサブクラスに影響を与えずに,いつでもサブクラスの追加や変更ができる。

  • スーパークラスが変更される(たとえば,全従業員に従業員番号が割り当てられた場合など)と,サブクラスも同様に変更される。

スパクラスとサブクラスの動作

サブクラスのオブジェクトは,スーパークラスを特殊化したものであるので,スーパークラスのオブジェクトと同様に動作します。このことにより,同じように動作する関連するクラスの開発は容易になりますが,実装は異なります。

スパクラスオブジェクトとサブクラスオブジェクトのIs-A関係

サブクラスのオブジェクトとそのスーパークラスのオブジェクトとの関係は,通常,以下のようなステートメントを使用して説明することができます。

子类是一个超类(そのサブクラスはスーパークラスの一種です)例:技術者是一个従業員(技術者は従業員の一人です)。

この関係は,サブクラスに属するオブジェクトはそのスーパークラスと同じプロパティ,メソッドおよびイベントをもつことを暗示するものです。また,サブクラスオブジェクトはそのサブクラスで定義される新しい機能ももます。この関係を関数isaを使ってテストします。

サブクラスのオブジェクトをスパクラスのオブジェクトのように取り扱う

サブクラスのオブジェクトをスーパークラスのメソッドに渡すことはできますが,アクセスできるのはスーパークラスで定義されているプロパティだけです。この動作により,スパクラスに影響を与えずにサブクラスを変更できます。

ス2。

  • スパクラスで定義されているメソッドは,サブクラスオブジェクト上で使用可能

  • サブクラスで定義されているメソッドは,スパクラスオブジェクト上で使用不可能

したがって,その他の员工オブジェクトのように工程师オブジェクトを取り扱うことができますが,员工オブジェクトを工程师オブジェクトに渡すことはできません。

オブジェクト代替の制限

MATLAB®では,そのオブジェクトの最も特定的なクラスに基づいてオブジェクトのクラスを判定します。したがって,工程师オブジェクトは,工程师である一方,関数isaを使用するとわかるように,これは员工オブジェクトでもあります。

通常,MATLABでは,配列は1つのクラスのみに属していなければならないため,スーパークラスオブジェクトとサブクラスオブジェクトが混在した配列の作成はできません。クラスが異なるオブジェクト同士を連結しようとする場合,MATLABは,より低優先度のクラスによって定義されるコンバーターメソッドを検索します。

詳細は,異なるクラスのオブジェクトの連結を参照してください。

異種混合クラス階層の詳細にいては,”matlab.mixin.Heterogeneousを参照してください。

コンバタメソッドの定義方法の詳細は,オブジェクトコンバオブジェクトコンバタを参照してください。

実装と邮箱ンタ邮箱フェ邮箱スの継承

MATLABクラスは,スーパークラスから実装されたメソッドの継承,スーパークラスの抽象メソッドで定義されたインターフェイスの継承をサポートします。

継承の実装により,サブクラスはコドを再利用できます。たとえば,员工クラスは,すべての员工サブクラスが使用できるsubmitStatusメソッドをもことができます。サブクラスは,一般的な面を再利用しながら特化した機能を提供するように継承メソッドを拡張できます。この過程の詳細は,継承メソッドの変更を参照してください。

ereplicationンタereplicationフェereplicationスの継承は以下の場合に便利です。

  • 複数クラスへの同一邮箱ンタ邮箱フェ邮箱スの指定。

  • サブクラスによる,メソッドとプロパティの限定的実装の作成。

抽象クラスをスパクラスとして使用して,。このクラスは,サブクラスで実装しなければならないメソッドとプロパティを定義しますが,実装は与えません。

サブクラスでは,スパクラスの抽象メンバの独自の実装を与えなければなりません。ereplicationンタereplicationフェereplicationスを作成するには,摘要属性を使用してメソッドとプロパティを摘要として定義します。詳細と例は,抽象クラスとクラスメンバを参照してください。

関連するトピック