質問

私は結合と凝集の概念を簡潔な定義に要約しようとしています。誰かが短くてわかりやすい説明をしてくれませんか(ウィキペディアの定義より短い) ここ そして ここ)?彼らはどのように相互作用するのでしょうか?

ありがとう。

誰か良い短い例を持っていますか?

役に立ちましたか?

解決

カップリング

  • ゆるい:あなたとコンビニの男。あなたはそれぞれの目標を達成するために、明確に定義されたプロトコルを通じて通信します。あなたがお金を支払うと、彼はあなたにチートスの袋を持たせて外出させます。システムを中断することなく、どちらか一方を交代させることができます。

  • きつい:あなたとあなたの妻。

凝集

  • 低い:コンビニエンスストア。ガソリンから牛乳、銀行のATMまで、あらゆるものを買うためにそこに行きます。製品とサービスには共通点がほとんどなく、それらをすべて 1 か所にまとめることの利便性だけでは、結果として生じるコストの増加と品質の低下を相殺するのに十分ではない可能性があります。

  • 高い:チーズ屋さん。彼らはチーズを売っています。他には何もありません。しかし、チーズに関しては彼らに勝るものはありません。

他のヒント

結合 - モジュール (パッケージ、クラス、メソッド) が他のモジュールにどの程度依存しているかを示す尺度。結合を減らすか、特定のモジュールがシステムの他のモジュールに依存する量を減らすことが望ましいです。

凝集度 - モジュールのメンバー (クラス、メソッド、メソッド内の機能) が同じモジュールの他のメンバーとどの程度密接に関連しているかを示す尺度。凝集性を高めることは、モジュールが非常に特殊なタスクを持ち、そのタスクのみを実行することを示すため、望ましいことです。

オブジェクト指向 (これらを含む) に関連するソフトウェア設計概念についての最も包括的な議論の 1 つは、Bertrand Meyer の論考です。 オブジェクト指向ソフトウェア構築.

「結合」に関して、彼は弱い結合/小さなインターフェースの規則を次のように与えています。

2 つのモジュールが通信する場合、交換する情報はできるだけ少なくする必要があります。

マイヤー氏の結束に関する資料は、単一の本質的な発言に要約されることはありませんが、スティーブ・マコーネル氏の次の文は次のとおりだと思います。 コードの完成 かなりうまくまとめています:

凝集度は、クラス内のすべてのルーチンまたはルーチン内のすべてのコードが中心的な目的をどれだけ密接にサポートしているかを指します。

カップリングとは、他者への依存を意味します。
凝集性とは、それ自体が完全であることを意味します。

カップリングを測定する手っ取り早い方法は、 import (または同様の) ステートメント。

「カップリングは、モジュール間の相互依存性の尺度であり、最小化する必要がある」「結束、最大化される品質は、各モジュールによって実行されるアクティビティ間の関係に焦点を当てています。」

この論文から引用: http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top