77 Stimmen

Kopplung und Kohäsion

Ich versuche, die Konzepte der Kopplung und der Kohäsion auf eine prägnante Definition zu reduzieren. Kann mir jemand eine kurze und verständliche Erklärung geben (kürzer als die Definitionen auf Wikipedia ici y ici )? Wie interagieren sie?

Danke.

Hat jemand ein gutes, kurzes Beispiel?

3 Stimmen

Ein Unterschied, der mir zunächst entgangen war: coupling es zwischen Klassen, während cohesion es en eine einzige Klasse.

0 Stimmen

Ist damit Ihre Frage beantwortet? Unterschied zwischen Kohäsion und Kopplung

233voto

Shog9 Punkte 151504

Kupplung

  • Lose: Sie und der Typ aus dem Supermarkt. Sie kommunizieren über ein genau definiertes Protokoll, um Ihre jeweiligen Ziele zu erreichen - Sie zahlen, er lässt Sie mit der Tüte Cheetos gehen. Jeder von Ihnen kann ausgetauscht werden, ohne das System zu stören.

  • Eng: Sie und Ihre Frau.

Kohäsion

  • Niedrig: Der Lebensmittelladen. Dort kann man alles kaufen, von Benzin über Milch bis hin zu Bankgeschäften am Geldautomaten. Die Produkte und Dienstleistungen haben wenig gemeinsam, und die Bequemlichkeit, sie alle an einem Ort zu haben, reicht möglicherweise nicht aus, um den daraus resultierenden Anstieg der Kosten und den Rückgang der Qualität auszugleichen.

  • Hoch: Der Käseladen. Sie verkaufen Käse. Sonst nichts. Aber wenn es um Käse geht, sind sie unschlagbar.

28 Stimmen

Humm, ich hatte ein Beispiel für eine Frau mit hohem Zusammenhalt erwartet, ich muss sagen, ich bin ein bisschen enttäuscht :)

0 Stimmen

Hoch: Ein Juweliergeschäft, in dem man das Geschenk für den Hochzeitstag seiner Frau kaufen kann - es handelt nur mit Artikeln zum Thema Schmuck und ist darauf spezialisiert, so dass die Artikel von höherer Qualität sind und in einem ordentlichen, gut gepflegten Geschäft mit schönem Stil untergebracht sind; diese Eigenschaften der Artikel helfen Kunden, die speziell nach Schmuck suchen, ihre Aufgaben im Bereich Schmuck (möglicherweise auch die Reinigung von Schmuck) in einer vorhersehbaren/effizienten Weise zu erledigen. Alle diese Vorteile sind bei einer Schmucktheke in einem Kaufhaus mit vielen nicht miteinander verbundenen Abteilungen weniger ausgeprägt, da sie weniger spezialisiert und schwer zu finden ist, wenn man an anderen Abteilungen vorbeiläuft.

0 Stimmen

Btw - ich denke, diese Antwort kann auch Monogamie voraussetzen. Und vielleicht auch keine Scheidung oder Wiederverheiratung (selbst wenn man verwitwet ist).

71voto

Thomas Owens Punkte 110966

Kopplung - Ein Maß dafür, wie sehr ein Modul (Paket, Klasse, Methode) von anderen Modulen abhängt. Es ist wünschenswert, die Kopplung zu verringern oder den Umfang zu reduzieren, in dem ein bestimmtes Modul von anderen Modulen eines Systems abhängig ist.

Kohäsion - Ein Maß dafür, wie eng die Mitglieder (Klassen, Methoden, Funktionalität innerhalb einer Methode) eines Moduls mit den anderen Mitgliedern desselben Moduls verbunden sind. Es ist wünschenswert, die Kohäsion zu erhöhen, da dies darauf hindeutet, dass ein Modul eine sehr spezifische Aufgabe hat und nur diese Aufgabe erfüllt.

30voto

Mansoor Mehmood Punkte 429

Kopplung bedeutet Abhängigkeit von anderen.
Kohäsion bedeutet Vollständigkeit mit sich selbst.

27voto

McKenzieG1 Punkte 13412

Eine der besten und umfassendsten Erörterungen von Softwareentwurfskonzepten im Zusammenhang mit OO (einschließlich dieser Konzepte) ist Bertrand Meyers Objektorientierter Softwareaufbau .

In Bezug auf die "Kopplung" gibt er die Regel "Schwache Kopplung / Kleine Schnittstellen" wie folgt an:

Wenn zwei Module miteinander kommunizieren, sollten sie so wenig Informationen wie möglich austauschen.

Meyers Material zum Thema Kohäsion lässt sich nicht immer auf eine einzige prägnante Aussage reduzieren, aber ich denke, dieser Satz aus Steve McConnell's Code vollständig fasst es ziemlich gut zusammen:

Kohäsion bezieht sich darauf, wie eng alle Routinen in einer Klasse oder der gesamte Code in einer Routine einen zentralen Zweck unterstützen

5voto

Hank Gay Punkte 67607

Eine schnelle und einfache Methode zur Messung der Kopplung ist die Messung Ihrer import (oder ähnliche) Aussagen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X