it-swarm.com.de

Zusammenhalt und Entkopplung

Kann mir jemand sagen, was Kohäsion und Entkopplung sind? Ich habe eine Kopplung gefunden, aber es gibt keine Entkopplung. Ich muss ihre Bedeutungen lernen.

Jede Hilfe wird geschätzt. Danke für Ihre Antwort.

34
dbtek

Dieser Artikel von Aaron ist sehr verständnisvoll. Ich würde Ihnen auch empfehlen, die Besatzungspublikationen zu lesen Spring in Action Buch, sie geben sehr gute Beispiele dafür, wie die Feder dieses Problem löst und Ihr Verständnis auf jeden Fall verbessert von diesem.

EDIT:

Darauf bin ich in diesem großartigen Buch namens Growing Object Oriented Software gestoßen, das von Tests geleitet wird:

Kopplung:

Elemente werden gekoppelt, wenn eine Änderung in einem eine Änderung in dem anderen erzwingt. Wenn beispielsweise zwei Klassen von einem gemeinsamen übergeordneten Element erben, ist für eine Änderung in einer Klasse möglicherweise eine Änderung in der anderen erforderlich. Denken Sie an ein Combo-Audiosystem: Es ist eng gekoppelt, denn wenn wir vom analogen zum digitalen Radio wechseln möchten, müssen wir das gesamte System neu aufbauen. Wenn wir ein System aus Einzelteilen zusammenbauen, würde es eine geringe Kopplung haben und wir könnten einfach den Empfänger austauschen. "Locker" gekoppelte Merkmale (d. H. Solche mit geringer Kopplung) sind leichter zu warten.

Kohäsion:

Der Zusammenhalt eines Elements ist ein Maß dafür, ob seine Verantwortlichkeiten eine sinnvolle Einheit bilden. Beispielsweise ist eine Klasse, die sowohl Datumsangaben als auch URLs analysiert, nicht kohärent, da es sich um nicht verwandte Konzepte handelt. Stellen Sie sich eine Maschine vor, die sowohl Kleidung als auch Geschirr wäscht - es ist unwahrscheinlich, dass beides gut funktioniert.2 Andererseits ist es unwahrscheinlich, dass eine Klasse, die nur die Interpunktion in einer URL analysiert, kohärent ist, da sie kein ganzes Konzept darstellt. Um etwas zu erledigen, muss der Programmierer andere Parser für Protokoll, Host, Ressource usw. finden. Merkmale mit „hoher“ Kohärenz sind einfacher zu pflegen.

72
ant

Kohäsion - bezogen auf das Prinzip, dass eine Klasse/Methode nur für eine Sache verantwortlich sein sollte, d. H. Eine Methode macht nur eine Sache. Hoch/Niedrig-Kohäsion ist der Grad, in dem dies gilt.

Kopplung - wie voneinander verschiedene Teile des Systems sind. z. B. wie und wo Abhängigkeiten bestehen. Wenn zwei Klassen voneinander verschiedene Methoden aufrufen, sind sie eng miteinander verbunden, da eine Änderung der Klasse die Änderung der anderen bedeuten würde. Entkopplung ist der Prozess, etwas zu schaffen, das weniger oder gar nicht so eng gekoppelt war.

Flexible Systeme haben eine hohe Kohäsion und lose Kopplung. 

13
Robert

Zur Kopplung sollten dieser Wikipedia-Artikel alle Ihre Fragen beantworten. Dieser Artikel befasst sich mit dem Zusammenhalt.

"Entkopplung" ist nur ein anderer Name für "kleine/niedrige Kopplung".

Diese Begriffe beantworten also diese Fragen: 

  • Wie sehr hängt jeder Teil Ihres Projekts von einem anderen Teil ab? 
  • Wenn Sie nur einen Teil Ihres Projekts verwenden möchten (z. B. um ein bestimmtes Problem zu lösen), wie viel müssen Sie über das gesamte Projekt wissen?
  • Ist jeder Teil Ihres Projekts auf eine einzige Lösung für ein bestimmtes Problem fokussiert oder laufen Lösungen in andere Teile?
2
Aaron Digulla

Hier sind meine Gedanken zum Zusammenhalt. Stellen Sie sich vor, es gibt ein Modul. In diesem Modul haben wir einige Aufgaben. Wenn diese Aufgaben eng miteinander zusammenhängen, haben wir eine hohe Kohäsion. Wenn diese Aufgaben nicht miteinander verbunden sind, haben wir eine geringe Kohäsion. Mein bester Versuch, die Entkopplung zu erklären, ist, dass die Entkopplung das Entfernen der Kopplung ist.

Low Coupling hilft uns dabei, eine hohe Kohäsion zu erreichen! Denken Sie daran, dass unser Modul verwandte Aufgaben und eine einzige Verantwortung haben soll. Aber was ist Kopplung? Die Kopplung ist der Grad der Abhängigkeit von anderen Modulen, um unsere einzige Verantwortung für dieses Modul zu erreichen. Durch niedrige Kopplung sagen wir also, dass wir nicht sehr stark auf externe Module angewiesen sind und daher eine hohe Kohäsion haben. 

Wenn wir jedoch viele Abhängigkeiten zu externen Modulen haben, hätten wir eine hohe Kopplung und eine geringe Kohäsion. Kapiert?

Andere mehr dekorierte Denker und Gruppen sagen:

.__ Kohäsion ist der Grad, zu dem die von einem einzelnen Modul ausgeführten Aufgaben funktional zusammenhängen. "IEEE, 1983" Kohäsion ist der "Kleber", der ein Modul zusammenhält. Es kann als die Art der Zuordnung zwischen den Komponenten eines Moduls betrachtet werden. Im Allgemeinen möchte man das höchstmögliche Maß an Kohäsion. "Bergland, 1981 

Eine Softwarekomponente soll eine hohe Kohäsion aufweisen, wenn die Elemente in dieser Einheit eine hohe funktionale Verwandtschaft aufweisen. Dies bedeutet, dass jedes Element in der Programmeinheit wesentlich sein muss, damit diese Einheit ihren Zweck erfüllt. Sommerville, 1989.

0
hidden