OOPの概念に対するOracleの紹介を読んでいたときに、この説明に出会いました。
実世界のオブジェクトには2つの特性があります。それらはすべて状態と動作を持っています。犬には状態(名前、色、品種、空腹)と行動((える、フェッチング、尾を振る)があります。ソフトウェアオブジェクトは、概念的には実世界のオブジェクトに似ています。それらも状態と関連する動作で構成されています。
そのパッセージに関する私の問題は、状態を記述するときに、その属性もそこにあるということです。たとえば、犬の名前と色はその属性であり、空腹または喉が渇いているのはその状態です。
したがって、私の意見では、オブジェクトの特性を属性、状態、および動作の 3つの部分に分ける方がより正確です。
確かに、これをプログラミング言語に翻訳すると、属性と状態の両方がフィールド/変数に格納され、動作がメソッド/関数に格納されるため、3分割パーティションが2分割パーティションになることがわかります。
しかし、概念的に言えば、3つのものを分離する方が理にかなっています。
別の例を次に示します。ランプを考えてみましょう。ランプのサイズと点灯するかどうかの両方が状態であると言うことは、私の意見では広まっています。ランプサイズは状態ではなく属性であり、ランプのオン/オフは状態です。
または私は何かを見逃しましたか?