)そういえば、エンティティクラスって情報的凝集度をもつクラスじゃないか?このページのトップへ2.モジュールの結合度とはモジュールの結合度とは、モジュール(クラス)間の関連性のことです。モジュールの結合度には表2のようなものがあります。絶対番地を用いて直接相手モジュールを参照したり、相手モジュールに直接分岐する。共通領域(グローバル領域)に定義されたデータを参照する。必要なデータだけを外部宣言し、ほかのモジュールから参照を許可し共有する。機能コードなど、モジュールを制御する要素を引数として相手モジュールに渡し、モジュールの機能や実行を制御する。モジュール凝集度の論理的凝集度がこれに相当する。相手モジュールで、構造体データ(レコード)の一部を使用する場合でも、構造体データすべてを引数として相手モジュールに渡す。相手モジュールをブラックボックスとして扱い、必要なデータだけを引数として渡す。293ページ表2は本から引用しましたが、「凝集度と結合度」というページにはもっと詳しく書いてあります。ソフトウエアを設計する際は、可能な限りモジュールの結合度を弱くする設計にした方が良いです。オブジェクト指向で設計する場合は、できるだけ、スタンプ結合かデータ結合となるように設計すればいいと思います。結合度的にはスタンプ結合よりデータ結合の方が弱く、いい気がしますが、ただ、データ結合だとメソッドの引数の数が増えるし、オブジェクトすべてを引数に渡した方がわかりやすい場合があるので、どっちが良いとは簡単には言い切れません。それと、すべてのクラス間の結合度を弱くすることは、多分無理だと思います。このページのトップへ3.オブジェクト指向とモジュールの凝集度、モジュールの結合度もう、少し述べましたが、オブジェクト指向で設計する際は(いや、オブジェクト指向に限らないのですが)、可能な限りモジュール(クラス)の凝集度を強く、モジュールの結合度を弱くするのが良いです。可能な限り、凝集度は情報的凝集度で、結合度はスタンプ結合以上で。少なくとも、再利用性を考えているクラスは凝集度を強く、結合度を弱くしましょう(※1)。再利用を考えないクラスはどうでもいいです。(どうでもいいと書いたのは下手に凝集度を強く、結合度を弱くしようとすると設計に時間(工数)がかかるし、実装も...、ということでそこらへんは割り切った方がいいと思うということです。)-----※1:「再利用性を考えているクラスは凝集度を強く、結合度を弱くしましょう」と書きましたが、出来ない場合もあります。凝集度を強く、結合度を弱くすることは、プログラムの品質をあげることだと思います。関係すると思う)だけで決まるものではないです。他にも処理スピード(時間効率性)、セキュリティなどがあります(※2)。凝集度がものすごく強いけど、処理スピードが遅すぎて使い物になりませんでは意味がないと言うことです。0129)に規定されていて、下記の6つの品質特性と21つの品質副特性があります。397ページ)もっと詳しく書きたかったのですが、このページ(HTML)はソフトウェアの品質についてを説明するページではないのでこれくらいで勘弁してください。詳しく知りたい人は参考文献の4番目を見てください。プロジェクトマネージャの取得を目指している人は勉強しておいた方が良いかもしれません。このページのトップへ4.参考文献などこのページでは、オブジェクト指向とモジュールの凝集度、モジュールの結合度に関して本当に簡単にしか説明していません。できれば、下のページも読んでほしいです。株式会社オージス総研のオブジェクトの広場の中のページです。