Kurze Erklärung Bindung Kopplung bei der Objektorientierung?

...komplette Frage anzeigen

2 Antworten

Wenn mit "Bindung" Kohäsion gemeint ist, dann ist der Unterschied grob gesagt:

 - "Bindung" bedeutet, wie stark die Klasse "mit sich selbst" arbeitet, also eigene Daten verwendet, eigene Funktionen aufruft etc. Wenn eine Gruppe von Funktionen immer nur auf einen Teil der Daten zugreift und eine andere Gruppe immer nur auf einen anderen Teil der Daten, kann man da eventuell zwei Klassen draus machen.

 - Kohäsion zeigt an, wie stark Klassen miteinander arbeiten bzw aufeinander angewiesen sind. Da gibt es verschiedene Arten, zb Erstellung, Aufruf von Funktionen, Verwendung von Daten, auf Vorarbeit angewiesen sein etc. Wenn zwei Klassen sehr stark aufeinander angewiesen sind, kann es sinnvoll sein, sie zu einer Klasse zu verschmelzen.

Grundsätzlich geht es bei der ganzen Geschichte darum: Du hast eine gewisse Menge an Aufgaben und Daten, wie verteilst Du sie sinnvoll? Einfache Beispiele sind da schwierig zu finden, weil da die Fehler zu offensichtlich sind.

Sichtbar wird die ganze Problematik oft erst, wenn man bestimmte Dinge auf verschiedene Arten erreichen können will, beispielsweise die gleichen Daten auf unterschiedlichen Geräten/Größen/... ausgeben, mit den Daten aus unterschiedlichen Datenbanken das gleiche tun,...

Loose Kopplung:

Denk einfach mal an java.util.List<E>.

Es gibt mehrere implementierungen Klassen, ArrayList, LinkedList, Vector etc...

Es geht darum, wenn man geringe Kopplung hat kann man einfach Programmteile austauschen... 

Stell dir vor ich habe ein Programm geschrieben und 

List<String> list = new ArrayList<>(); 

.

.

.

Und ich denke mir ab einem Punkt, ich möchte gerne das Verhalten meiner Liste ändern, ich Programmiere einfach eine neue Klasse welche von List erbt und muss in meinem Code genau an einem Ort etwas ändern, der Rest bleibt gleich...


Bindung:



Starke Kohäsion (Quelle: Wikipedia)

Das Single-Responsibility-Prinzip besagt, dass jede Klasse nur genau eine fest definierte Aufgabe zu erfüllen hat. Diese Aufgabe wird durch das Zusammenspiel aller Attribute und Methoden dieser Klasse erfüllt. Das Zusammenspiel der Attribute und Methoden dieser Klasse ist dadurch sehr eng. Man spricht von starker Kohäsion.

Schlechte (schwache) Kohäsion sollte vermieden werden. Sie führt unter anderem dazu, dass gemeinsame Funktionalitäten einer Klasse nicht wiederverwendet werden, sondern mehrfach umgesetzt werden. Code-Duplizierung[1] ist somit ein Zeichen schwacher Kohäsion. Das DRY-Prinzip (Don't Repeat Yourself — ‚Wiederhole dich nicht‘) hilft, diese zu vermeiden.



densch92 05.07.2017, 17:47

Achso, Bindung heißt dann dass ich bspw. Code in Methoden auslagere anstatt immer wieder die selben 5 Zeilen zu tippen.

Oder halt die Geschichte mit den Attributen, wenn ich einfach mehrere "Dinge" mit ähnlichen Werten haben will.

z.B. 5 Punkte, wobei jeder eben eine x und eine y Koordinate hat.

Dass man da nicht 5 x,y Paare anlegt, sondern einfach eine Punktklasse hat mit x und y als Attribut.

Der Kapselung Kram also im Groben.

0
ciscodisco09 05.07.2017, 17:48
@densch92

Genau!




Wenn wir schon bei Geometrie sind

Zb.

Punkt ( x,y Attribut)

Dreieck (hat jetzt nicht 3 x,y, attribute, sondern 3 Punkt Objekte)



0

Was möchtest Du wissen?