部分クラスとは何ですか?
部分クラスは、一部のオブジェクト指向プログラミング言語の機能であり、クラスの実装を複数のソースコードファイルに分割できます。 部分型とも呼ばれる部分クラスは、多くのプログラミング言語、特にC ++やJavaなどの古い言語には存在しません。 C#やRubyなどの部分クラスを実装する各言語は、実装の処理方法が少し異なります。
一般に、部分クラスは「部分」キーワードを使用してクラスの断片を示します。キーワードが大文字であるかどうかは、使用されているプログラミング言語によって異なります。 クラスの各部分は、同一のクラス宣言を使用して同じ方法で初期化されます。これらの「部分的な」キーワードがなければ、すべて同じ名前の複数のファイルに複数のクラスを作成することは不正です。 「部分」キーワードは、言語に応じてコンパイラーまたはインタープリターに、すべてのクラスを単一の大きなユニットにマージするように指示します。 クラスのすべての別個の部分は、パブリック、プライベート、保護のいずれであっても、同じ可視性を持つ必要があります。 クラスの一部が抽象として指定されている場合、他の個々の部分がそのように指定されていなくても、マージされたクラスも抽象として指定されます。
複数のファイルにわたる部分クラスの実装には、プログラミングスタイルと編成の両方でいくつかの重要な利点があります。 部分クラスにより、関連するコードをより専門的なグループに明示的に分離できます。 さらに、部分クラスを使用すると、複数のプログラマーがコードの特定の部分を操作でき、他のプログラマーを混乱させたり、誤ってリビジョンを上書きしたりすることもありません。 単一のプログラマーであっても、部分的なクラスを使用すると、整理や読み取りが困難な扱いにくいファイルを1つも作成せずに、非常に大きなクラスを作成できます。
部分クラスの実装パターンには、いくつかの重大な欠点もあります。 オブジェクト指向プログラミングの傘下にあるにもかかわらず、部分クラスは実際にはオブジェクト指向プログラミングの中核であるカプセル化の原則に違反しています。 オブジェクト指向プログラミングでは、クラスは、独自の状態と動作を持ち、自己完結型で、まとまりのあるユニットとして使用できる単一の統一されたエンティティであると想定されています。 各部分クラスは単一の別個のクラスのように機能するため、部分クラスはこの考え方に違反します。 部分クラスを構成する部分は実行時に1つの大きなクラスにマージされますが、多くの場合、部分クラスの部分は独立したエンティティであり、マージの形式を必要とせずに単独で使用できます。