Skip to main content

不変のオブジェクトとは何ですか?

objectオブジェクト指向プログラミングでは、不変のオブジェクトは、作成後にプロパティを変更できないオブジェクトです。対照的に、ほとんどのオブジェクトは可変オブジェクトです。つまり、作成後にプロパティの一部またはすべてを自由に変更できることを意味します。さまざまなコンピューター言語には、Java、C ++、Erlang、TCL、Scalaなどの不変のオブジェクトを作成する機能があります。それ以外の場合は可変オブジェクトを不変であると宣言します。不変のクラスを作成するための方法論は、使用されるコンピューター言語によって異なります。言語に関係なく、不変のクラスには、内部データを変更できる方法や、メソッドを変更する方法がない必要があります。すなわち、オーバーライドまたはオーバーロード—内部データを変更する方法。これは、2つのアプローチの中でより複雑です。一方、それ以外の場合は、不変のオブジェクトを作成するには、オブジェクトを不変にするようにオブジェクトを指定するためにキーワードを適用することができます。Javaでクラスを不変にするための簡単な方法は、クラスとそのすべての方法とデータメンバーを最終的に宣言することです。Constキーワードを使用して、C ++でも同様の戦略を使用できます。ただし、これらのアプローチは、クラスコンテンツに応じて、最高のアプローチではない場合があります。一般に、オブジェクトは通常、内部データを慎重にメンテナンスすることで不変にすることができます。ただし、このアプローチを使用すると、危険があります。この方法で不変のオブジェクトを明示的に指定する場合、プログラマーが最初にすべての適切なプロパティとデータがオブジェクトに組み込まれていることを確認することが重要です。不完全なオブジェクトに依存することは、特に重要な情報が欠落している場合は危険かもしれません。不変のオブジェクトは、データ値であろうと大きなオブジェクトであろうと、常に不変であり、常にそのように扱わなければなりません。一般に、不変のオブジェクトは作成された後に変化可能にすることはできませんが、それらは時々変速可能なオブジェクトとしてコピーされる場合があります。通常、不変のオブジェクトとそのコピーのいずれかも不変であると想定できます。これにより、データやメモリの問題を防ぐことができます。