高凝集、低カップリング:オブジェクト指向開発の原則に

ソフトウェアの設計と結合度は、一般的に標準モジュールの独立性の凝集度の尺度として使用されます。ブロック分割タッチつの基準は、高い凝集力と低いカップリングです。

これは、ソフトウェア工学の概念であり、カップリングの高度が低くなっているかどうかを確認するために設計基準の品質、主にOO指向設計、主に凝集クラスを決定することです。

特定の個人の機能を完了し、各クラスには、これは高い凝集です。カップリングは、カップリングは、お互いに多くの呼び出し関係が非常に強い場合、クラス間お互いを呼び出すことで、それは確かに維持・拡大に資するない体全体に影響します。

下部カップリングクラスとの間に配置されるべきで、各クラスは非常に粘着性であるべきである。クラス間の相互依存の結合ディメンション。各オブジェクトは、他のすべてのオブジェクトへの参照を持っている場合には、高結合、あります望ましくない、2つのオブジェクト間の、あまりにも多くの情報の潜在的な流れが望ましい低い結合であるため:それは、結合作業を最小にするために、オブジェクトが互いにより独立していることを意味し、低クラスおよびA修飾しましたまた、他のクラスの変更につながる「連鎖反応」を凝集は、クラス変数とメソッドの接続の強さの尺度である。それはクラスはより良い仕事を行うことができることを意味しているため、高い凝集は、なるように価値がある。内部の低それはクラスの要素の間にはほとんど相関関係を示すため、ポリエチレンは好ましくない。成分モジュール間の相互関連が望ましい。各方法は非常に粘着性であるべきである。ほとんどの方法は、唯一の機能を実行します。この方法は、複数の機能を実行するようになります指示の方法で「余分な」を追加しないでください。

オープン促進するために、このアイデアは、クラスとクラス間の関係に限定されるものではありません。モジュールとモジュール間の、サブシステムは、この原則を遵守しなければならない、我々は比較的強いシステムの延性を設計することができます。

カップリングは何ですか

定義

カップリングはまた、ブロック間の接触と呼ばれます。ソフトウェア・システム・アーキテクチャのきつさの尺度の間で相互接続されたモジュールを意味します。モジュール間の近い接触、強く、そのカップリングは、独立したモジュールが悪くなります。モジュールは、モジュール間のインタフェース、及び呼び出しモード情報伝達の複雑さに応じてハイとローとの間に結合されます。

結合の程度は、一つのモジュール(クラス)と、他のモジュール(など)との間の関連付けであり、知覚に依存して、コードは、独立の尺度であるだけでなく、ソフトウェアエンジニアリングコーディング標準および品質評価を。:カップリングの強さは、次の要因に依存し、(1)モジュールが別のモジュールを呼び出し、そして(2)他のモジュールへのモジュールの転送データ量と、(3)モジュールは他のモジュール数の制御に適用します; (4)モジュール間のインターフェースの複雑。

結合された分類

強いから弱い結合の順序に従って、次のタイプに分けることができる:A)は、非直接結合:完全リンクとの間に2つのモジュールの間には直接的な関係は、メインモジュール及び発呼制御することによって達成されていない    B)のデータに結合されました。これは、データ転送が単純な値、高レベル言語が送信さに対応する値であり、2つのコール・モジュールとの間の関係を意味し、  結合されたC)タグの2つのモジュール間の転送を指し、データ構造、名前などの高レベル言語のアレイであります等、レコード名、ファイル名、これらの名前は、すなわちマーク、実際に送信されたデータ構造のアドレス;   D)を制御するために結合された:モジュールを指し、転写制御変数(例えば、スイッチ、標識など)、別のモジュールを呼び出します;モジュールは、選択機能ブロック内で制御変数の値を調整することによって実行される  情報モジュールのセットではなく、同一のグローバルデータ構造の同じグローバル変数に簡単にアクセスされ、グローバル変数パラメータを透過しない:E)外部結合    F)共通結合:モジュールのセットは、共通の同じ数のアクセスデータ環境。環境は、共通データグローバルデータ構造であってもよいし、共有メモリの通信エリアは、一般的なカバレッジエリアです。    グラム)コンテンツのカップリング:これは、カップリングの最高度では、最悪のカップリングです。別のモジュールまたは内部別のモジュールへの内部データモジュールとして使用され、不規則な入口を介して転送します。

なぜ低い結合(デカップリング)

  オブジェクト指向プログラミングでは、粘着性のあるオブジェクト自体、外の世界は、その状態や行動を示しながら、自分の操作を完了するために、あなたのデータを保護することです。しかし、絶対的な自立が必要で開く、ありません!オブジェクトは、多くの場合、他のオブジェクトの状態を通知するだけでなく、他のオブジェクトの動作に依存し、この問題が発生した後の両方を含む他のオブジェクトに対処する必要があり、我々は、オブジェクトが別のオブジェクトに依存していると言います。限り、二つのオブジェクトの1に依存当事者との関係のように、我々は2つのオブジェクト間の結合があると言うことができます。例えば、母親と赤ちゃん、目の赤ちゃんの睡眠を維持するために母親は、眠い、泣く、尿などの状態を覚ます、お互いに両方、プログラムの意味で、スリープ状態に戻って、彼女の母親の母乳の赤ちゃんに頼るおむつや他の行為を変更する必要があります依存し、したがってもカップリングです。言うべき最初の事は、結合が必要です。

  カップリングは、カップリングの程度である当事者の程度に依存しています。上述したように、母親と赤ちゃんは強い結合です。そして、あなたの間と弟を表現するには、弱い結合です。一般に、カップリングは良いことではありませんが高すぎます。進歩を促すために、いつでも、それのITエリートとして、高い作業をあなたを取る、あなたは初心者を導く頻繁に問題を必要とし、その後、妻の気持ちを懸念し、また、あなたがバースト酒当局のディナーに参加する必要があり、その後、指導者の顔に毎日を処理する必要があなたはこれらの増加、そして、あなたが株式を炒め、コードのバグ、バグ、変更のバグ、および需要の変化に焦点を当てる必要があり、変更は十分に傷ついたと疲弊している、とも目に注意を払うために不意を突か、頸部、前立腺およびヘアコンディションそれはおそらく、強力なカップリングの一つです。ある意味で、あなたに依存する他のオブジェクトかどうか、自由の敵を生まれ結合、またはあなたが他のオブジェクトに依存しています。例えば、一部の人々は、あなたがそれらだけでは、より自由に依存しないどのくらい、飲んで、喫煙;などは、7人のまたは8の赤ちゃんは、彼らはあなたが自由よりも多くを持っていない、あなたに依存してどのくらいの高齢者の両親、彼女の両親、だけでなく、自宅で生まれました。だから私は、これは言う:ルソーは人間が自由に生まれている」、と言って悲しいがないわけではない「pentameterは5色盲目、聴覚障害者である、怒っギャロップ狩りは、非常に貴重な貨物線路害心ではありません」ではなく、奴隷にはへ。 " したがって、自由に、結合を低減する必要があり、このプロセスは、デカップリングと呼ばれています。

  保守コードは、多くの場所に関与する場所を変更し、結合度が非常に高いが、変更された場合、その後もたらした結果は、これらの関係を整理するために何のカップリングが存在しない致命的な可能性は、特に需要の大きな変化のために、と多人数協力開発及び事業の維持管理、ローカル修正モジュールは、エラーが安定して実行していた原因となり、ひどい場合には悪循環につながることができ、問題は常に無限の変更、開発とテストであるプロジェクトにつながる、との問題の疲れています拡張、ユーザーの満足度も高めコスト削減、これは様々なリスクのユーザと開発者に非常に悪い影響は自明です。

カップリング(切り離し)を低減する方法

  1. クラス継承、多用途のインタフェースの少ない使用は、実装の詳細を隠します。Javaオブジェクト指向プログラミングインターフェイスマルチ状態の導入をサポートすることに加えて、実装の詳細は、オブジェクトが1つである隠されています。

  2. 可能な単一の点限りの機会の機能モジュールは、その理由は、他のモジュールのための単機能モジュールは、以下の非常にシンプルと呼ばれています。(実際には、これは高い凝集と低カップリングは通常、スペース制限の順序で、同時に発生して、私たちは時代の将来のバージョンで議論する、というのが非常に粘着性の方法です)。

  3. 一つだけの場所で定義されて従ってください。

  4. グローバル変数の少ない使用。

  5. クラスのプロパティとメソッドはあまり公開されて宣言し、秘密鍵を使用したマルチ、

  6. そのようなMVCデザインパターンとしてマルチデザインパターンは、結合インターフェースおよびビジネス・ロジックを低減することができます。

  7. 代わりに「ハードコード化された」アプローチのプログラムを書くようにしてください、だけでなく、データベースを操作するSQL文の直接の使用を避けるようにしてください。

  8. モジュール間の結合が少なく、結合を制御、データ結合の原理を利用するために存在しなければならない場合は、最後に、もちろん、ダイレクトコールまたは他の操作モジュールまたはクラス(結合されたコンテンツ)を回避することであるカップリングコンテンツの使用を回避する、共通の結合の範囲を限定します。

凝集とは何ですか

  結束、人気の高い用語、行うには自分のこと、自分自身のケアものです。独立してその機能として、各モジュールには、外部モジュールのコードに依存しません。

  オブジェクトとは何ですか?オブジェクトは、自分自身と自分の事を守るためにある、物事にプログラムモジュールを実行する - それが結束です!もちろん、オブジェクトのみを凝集凝集レベルで、実際には、異なるスケールの要件で結束を持っている、そのような方法はまた、凝集の話を、凝集アーキテクチャも必要です。

結束:また、凝集として知られている接点ブロック、。これは、機能モジュールの強度メトリック、しっかり互いに程度に結合し、各モジュールの、すなわち内部要素を意味します。モジュール内の各要素は、より密接にリンクされている場合(ブロック間の、言語名の間)、それはより高い凝集力です。

高凝集:クラスとクラスの可用性との関係、高い、それらの間の関係は単純でなければならないことを意味し、明確な、強い関係を持っていない、それ以外の場合は、実行するために、問題となります。他のクラスに影響を与えるクラスを実行します。高い凝集堅牢で、信頼性の高い、再利用可能な、読みやすさ、などに、モジュラー設計の高凝集をお勧めします。

凝集は、モジュールの種類は、一般的に凝集し、7種類あり、各要素の内部との間の密着性の程度を指すローからその凝集するよう上位に:ポリ機会、論理クラスタ、瞬時ポリエチレン、プロセスポリエチレン、通信中のポリエチレン、逐次重合、重合関数。

偶発内側ポリエチレンは:モジュール内の処理要素間には接続がないことを意味します。2論理クラスタは:モジュールが完了するように機能するパラメータによって決定され、複数の論理ブロック内で同様の機能を実行することをいいます。ポリ時間3:モジュール内の重合時間を形成するために一緒に組み合わさ動作モジュールを実行する必要があります。4ポリ通信は:モジュール内のすべての処理要素(時々情報ポリという)同じデータ構造上で動作していることをいい、各処理手段または同じ入力データを使用するか、同じ出力データを生成します。5逐次重合:出力要素は次の機能要素の入力の関数である前に、順次に実行されなければならない同じ機能に密接に関連して、各モジュールの処理要素を指します。機能6ポリ:これは、最も凝集性であり、モジュール内の機能を完了するために一緒にすべての要素を指し、不可欠です。他のモジュールと結合することは最も弱いです。

おすすめ

転載: www.cnblogs.com/taosiyu/p/11072110.html