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

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

不変のオブジェクトは、2つの方法のいずれかで作成できます。不変のクラスを作成するための方法論は、使用されるコンピューター言語によって異なります。言語に関係なく、不変のクラスには、内部データを変更できる方法や、内部データを変更する方法でメソッドを変更する方法、つまりオーバーライドまたはオーバーロードする方法がない必要があります。これは、2つのアプローチの中でより複雑です。他のWiから不変のオブジェクトを作成する一方、SE可変オブジェクトは、オブジェクトを不変であると指定するためにキーワードを適用できることがよくあります。

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

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

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

他の言語

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

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