673 Stimmen

Unterschied zwischen Kohäsion und Kopplung

Was ist der Unterschied zwischen Kohäsion und Kopplung?

Wie können Kopplung und Kohäsion zu einer guten oder schlechten Softwaregestaltung führen?

Was sind einige Beispiele, die den Unterschied zwischen den beiden und ihre Auswirkungen auf die Gesamtqualität des Codes verdeutlichen?

3 Stimmen

6 Stimmen

Ich möchte auf diesen Artikel hinweisen: S.O.L.I.D. Softwareentwicklung, ein Schritt nach dem anderen. Grz, Kris.

5 Stimmen

Dies ist der neueste Beitrag zu diesem Thema.

2voto

z atef Punkte 6151

Kohäsion ist ein Hinweis auf die relative funktionale Stärke eines Moduls.

  • Ein kohäsives Modul führt eine einzige Aufgabe aus und erfordert nur wenig Interaktion mit anderen Komponenten in anderen Teilen eines Programms. Einfach ausgedrückt sollte ein kohäsives Modul idealerweise nur eine Sache tun.

  • Konventionelle Sichtweise:

    die "Einseitigkeit" eines Moduls

  • OO-Sichtweise:

    Kohäsion bedeutet, dass eine Komponente oder Klasse nur Attribute und Operationen enthält, die eng miteinander und mit der Klasse oder Komponente selbst verbunden sind.

  • Kohäsionsgrade

    Funktional

    Schicht

    Kommunikativ

    Sequentiell

    Prozedural

    Temporal

    Utilität

Koppelung ist ein Hinweis auf die relative Abhängigkeit zwischen Modulen.

  • Die Koppelung hängt von der Schnittstellenkomplexität zwischen Modulen, dem Zeitpunkt, an dem auf ein Modul verwiesen wird, und den über die Schnittstelle übergebenen Daten ab.

  • Konventionelle Sichtweise: Der Grad, in dem eine Komponente mit anderen Komponenten und mit der externen Welt verbunden ist

  • OO-Sicht: ein qualitativer Maßstab für den Grad, in dem Klassen miteinander verbunden sind

  • Koppelungsgrade

    Inhalt

    Gemeinsam

    Steuerung

    Stempel

    Daten

    Routineaufruf

    Typverwendung

    Einschluss oder Import

    Extern #

2voto

zar Punkte 10223

Der Begriff Kohäsion ist tatsächlich etwas kontraintuitiv für das, was er im Bereich der Softwareentwicklung bedeutet.

Kohäsion bedeutet im Allgemeinen, dass etwas gut zusammenhält, vereint ist und durch starke Bindung wie molekulare Anziehung charakterisiert wird. In der Softwareentwicklung bedeutet dies jedoch, dass man nach einer Klasse strebt, die idealerweise nur eine Sache tut, sodass mehrere Teilmodule nicht einmal beteiligt sind.

Vielleicht können wir es so sehen. Ein Teil hat die höchste Kohäsion, wenn er der einzige Teil ist (nur eine Sache tut und nicht weiter aufgeteilt werden kann). Genau das wird in der Softwareentwicklung angestrebt. Kohäsion ist einfach ein anderer Begriff für "eine Verantwortung" oder "Trennung von Bedenken".

Der Begriff Kopplung hingegen ist ziemlich intuitiv, was bedeutet, dass ein Modul nicht von zu vielen anderen Modulen abhängt und dass diejenigen, mit denen es verbunden ist, leicht ausgetauscht werden können, zum Beispiel die Einhaltung des Liskov-Substitutionsprinzips.

1 Stimmen

Warum benutzen Menschen immer noch das Wort Modul anstelle von Klasse?

2 Stimmen

@northerner Es ist einfach ein allgemeinerer Begriff.

0 Stimmen

Hier ist ein Artikel, der beschreibt, dass Kohäsion und SRP tatsächlich nicht dasselbe sind. Es wird weiter erklärt, dass das einzige, was Sie aktiv tun - im Sinne der Aufrechterhaltung einer "hohen Kohäsion" - ist, Dinge nicht auseinanderzureißen, die zusammengehören. Das ist nicht dasselbe wie SRP. stackoverflow.com/questions/11215141/…

1voto

Dipankar Punkte 871

Kopplung = Interaktion / Beziehung zwischen zwei Modulen... Kohäsion = Interaktion zwischen zwei Elementen innerhalb eines Moduls.

Ein Software besteht aus vielen Modulen. Ein Modul besteht aus Elementen. Betrachten Sie ein Modul als ein Programm. Eine Funktion innerhalb eines Programms ist ein Element.

Zur Laufzeit wird die Ausgabe eines Programms als Eingabe für ein anderes Programm verwendet. Dies wird als Modul-zu-Modul-Interaktion oder Prozess-zu-Prozess-Kommunikation bezeichnet. Dies wird auch als Kopplung bezeichnet.

Innerhalb eines einzigen Programms wird die Ausgabe einer Funktion an eine andere Funktion übergeben. Dies wird als Interaktion von Elementen innerhalb eines Moduls bezeichnet. Dies wird auch als Kohäsion bezeichnet.

Beispiel:

Kopplung = Kommunikation zwischen 2 verschiedenen Familien... Kohäsion = Kommunikation zwischen Vater-Mutter-Kind innerhalb einer Familie.

1 Stimmen

Also, wie erklärst du sie im Zusammenhang mit ihren Auswirkungen auf eine Software?

0 Stimmen

Ein Software besteht aus vielen Modulen. Ein Modul besteht aus Elementen. Betrachten Sie ein Modul als ein Programm. Eine Funktion innerhalb eines Programms ist ein Element.

1voto

Varun Joshi Punkte 34

Einfach ausgedrückt bedeutet Kohäsion, dass eine Klasse ein einzelnes Konzept darstellen sollte.

Die öffentliche Schnittstelle einer Klasse ist kohäsiv, wenn alle Klassenmerkmale mit dem Konzept zusammenhängen, das die Klasse repräsentiert. Statt zum Beispiel eine CashRegister-Klasse zu haben, machen Cohäsion CashRegister und Coin zu 2 Klassen - CashRegister und Coin-Klasse.

Bei der Kopplung hängt eine Klasse von einer anderen ab, da sie die Objekte der Klasse verwendet.

Das Problem bei hoher Kopplung ist, dass sie Nebenwirkungen verursachen kann. Eine Änderung in einer Klasse könnte einen unerwarteten Fehler in einer anderen Klasse verursachen und den gesamten Code zum Absturz bringen.

Allgemein wird hohe Kohäsion und geringe Kopplung als qualitativ hochwertige OOP betrachtet.

1voto

KARSHIL SHETH Punkte 29

Theory Difference

Kohäsion

  • Kohäsion ist ein Hinweis auf die relative funktionale Stärke des Moduls.
  • Ein kohäsives Modul führt eine einzige Aufgabe aus und benötigt nur wenig Interaktion mit anderen Komponenten an anderen Teilen des Programms.
  • Ein Modul mit hoher Kohäsion und geringer Kopplung gilt als funktional unabhängig von anderen Modulen.

Klassifizierung der Kohäsion

1. Zufällig 2. Logisch 3. Zeitlich 4. Prozedural 5. Kommunikation 6. Sequentiell 7. Funktional

Kopplung

  • Kopplung ist ein Hinweis auf die relative gegenseitige Abhängigkeit zwischen Modulen.
  • Der Grad der Kopplung zwischen zwei Modulen hängt von der Komplexität ihrer Schnittstelle ab.

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