Entity Object、Value Object などの他の用語も見ます。他に知っておくべき用語はありますか?これらの用語は何を指していますか?
それらの間に違いがある場合、コードを読むことで識別できますか?
Entity Object、Value Object などの他の用語も見ます。他に知っておくべき用語はありますか?これらの用語は何を指していますか?
それらの間に違いがある場合、コードを読むことで識別できますか?
クラスは、オブジェクトを作成するためのテンプレートです。すべての OO 言語がクラスを使用するわけではありません (Self、Javascript を参照)。通常、クラスはオブジェクトとして実装されます。
オブジェクトは、そのデータに作用する関数 (メソッドと呼ばれる) とともにパッケージ化されたデータのバンドルです。クラスのコンストラクターを呼び出すと、オブジェクトにメモリが割り当てられ、そのメンバー変数が初期化されます。
エンティティは、システムが追跡する必要のある ID を持つものを表すオブジェクトです。典型的な例は、顧客とアカウントです。
値オブジェクトは値であり、ID を持たず、同じ値を持つ 2 つのインスタンスは同一と見なされます。典型的な例は、金額、場所、支払いの種類です。
データ転送オブジェクトは、一連のデータを渡すために使用されます。通常、ネットワーク呼び出しの繰り返しを避けるために、分散システムでデータをバンドルとして送信するために使用されます。データ転送オブジェクトには ID がなく (または ID を持つ必要がない)、単なるデータのコンテナーです。
エンティティには認識可能な ID があり、システムはエンティティの作成、保存、および変更に関与しているため、通常、エンティティと値オブジェクトの違いを見分けることができます。オブジェクトが何らかのデータベースにマップされる場合、エンティティは何らかの複合自然キーまたは人工キーのいずれかである主キーを持ち、値オブジェクトは値によって比較されます。
一般に、クラスは一連のプロパティとメソッド/関数を定義する構成体であり、オブジェクトは実行時に作成されるクラスの実際のインスタンスです。
クラス定義の例:
public class Example{
...
}
以下は、実行時に Object として Example クラスのインスタンスを作成します。
new Example();