不変オブジェクトとは

オブジェクト指向プログラミングでは、不変オブジェクトとは、作成後にプロパティを変更できないオブジェクトです。 対照的に、ほとんどのオブジェクトは変更可能なオブジェクトです。つまり、作成後にプロパティの一部またはすべてを自由に変更できます。 さまざまなコンピューター言語には、Java、C ++、erlang、Tcl、scalaなどの不変オブジェクトを作成する機能があります。

不変オブジェクトは、2つの方法のいずれかで作成できます。定義により不変であるクラスを作成するか、そうでなければ変更可能なオブジェクトを不変であると明示的に宣言します。 不変クラスを作成する方法は、使用するコンピューター言語によって異なります。 言語に関係なく、不変のクラスには、内部データを変更できるメソッドや、内部データを変更する方法でメソッドを変更(オーバーライドまたはオーバーロード)する方法がない必要があります。 これは、2つのアプローチの中でより複雑です。 一方、不変オブジェクトから不変オブジェクトを作成するには、多くの場合、キーワードを適用してオブジェクトを不変として指定できます。

例として、Javaでの不変オブジェクトの作成は、「最終」キーワードに大きく依存しています。 Javaでクラスを不変にする簡単な方法は、クラスと、そのすべてのメソッドとデータメンバーをfinalとして宣言することです。 「const」キーワードを使用して、C ++で同様の戦略を使用することもできます。 ただし、クラスの内容によっては、これらのアプローチは最良のアプローチではない場合があります。 一般に、オブジェクトは通常、内部データを慎重に管理することで不変にすることができます。

上記の例のように、キーワードを使用して不変オブジェクトを作成することは、クラス全体を不変にするよりもはるかに簡単な場合がよくあります。 ただし、このアプローチの使用には危険が伴います。 この方法で不変オブジェクトを明示的に指定する場合、プログラマーはすべての適切なプロパティとデータが最初にオブジェクトに組み込まれていることを確認することが重要です。 特に重要な情報が欠落している場合、不完全なオブジェクトに依存することは危険です。

オブジェクトが可変であるが、不変データを適切に作成する必要がある場合、不変データは、可変オブジェクトを作成する前に初期化する必要があります。 不変オブジェクトは、データ値であれラージオブジェクトであれ、常に不変であり、常にそのように扱われなければなりません。 一般に、不変オブジェクトは作成後に変更可能にすることはできませんが、変更可能なオブジェクトとしてコピーされることもあります。 通常、不変オブジェクトとそのコピーも不変であると想定できます。これにより、データやメモリの問題を防ぐことができます。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?