ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

クラスのインスタンス変数について、属性、状態、コラボレータの違い

状態とコラボレータの違い

状態は属性=バリューオブジェクトになるだろう。 コラボレータは状態とその配下のコラボレータを保持しているクラス、つまり制御的性質を持つクラスになると思う。 ただ、この区別は明確にには区別できないし、大体の傾向で区別するしかないかもしれない。

状態と属性の違い

状態とはクラスの振る舞いに影響する属性。 それ以外はただの属性。 ただ、これは明確に区別できないかもしれない。

インスタンス変数の数について

属性系変数は振る舞いの変更に関与しない、そのため、いくら有ってもその保持しているクラスの動作を複雑にすることはない。エンティティ系クラスはそうですね。 状態やコラボレータは数が増えるとその動作を複雑にする。いわゆる神クラスになる。

一方、制御、調整タスクを主とするクラスのインスタンス変数はよく言われているように7±2に押さえないと行けない。エンティティ系クラスやバリューオブジェクトはそれほど気にしなくていいかも? ただ別の問題が有りそうだけど。