Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:modul:ffit:3-jahr:java:learningunits:lu16:b [2026/01/06 00:53] apeterde:modul:ffit:3-jahr:java:learningunits:lu16:b [2026/01/06 10:08] (aktuell) apeter
Zeile 1: Zeile 1:
 ====== LU16b - Prinzipien 3 (OCP, Law of Demeter) ====== ====== LU16b - Prinzipien 3 (OCP, Law of Demeter) ======
  
-Wir betrachten dieses Mal die Prinzipien **OCP** und das **Law of Demeter**.+Wir betrachten dieses Mal die Prinzipien **OCP** und das **LoD**.
  
 ===== Prinzipien ===== ===== Prinzipien =====
Zeile 14: Zeile 14:
   * //YAGNI (You Ain’t Gonna Need It)//   * //YAGNI (You Ain’t Gonna Need It)//
   * //SoC (Separation of Concerns)//   * //SoC (Separation of Concerns)//
-  * **Law of Demeter (Principle of Least Knowledge)**+  * **LoD (Law of Demeter Principle of Least Knowledge)**
  
 P.S.: SOLID steht für SRP, OCP, LSP, ISP, DIP P.S.: SOLID steht für SRP, OCP, LSP, ISP, DIP
Zeile 22: Zeile 22:
 Das Open/Closed Principle besagt, dass ein Programm, zwar offen sein soll für (sinnvolle) Weiterentwicklung, aber geschlossen für Änderungen (Manipulationen). Das Open/Closed Principle besagt, dass ein Programm, zwar offen sein soll für (sinnvolle) Weiterentwicklung, aber geschlossen für Änderungen (Manipulationen).
  
-Als Faustregel kann man Klassen tendenziell schliessen, während Interfaces geöffnet werden. Der Modifier ''public'' sollte bei Klassen also sparsam eingesetzt werden, während ''final'' bei vielen Implementierungsklassen in Frage kommt.+Schlecht wäre in diese Hinsicht zum Beispiel ein zentrales Switch-Case-Konstrukt, welches man laufend ergänzen muss, wenn man die Applikation erweitert. 
 + 
 +Als Faustregel kann man Klassen tendenziell schliessen, während Interfaces geöffnet werden. Der Modifier ''public'' sollte bei Klassen also sparsam eingesetzt werden, während ''final'' bei vielen Implementierungsklassen in Frage kommt. (Bei einer Klasse mit ''final'' können keine anderen Klassen erben.)
  
 Der Modifier ''protected'' bei Klassenattributen ist oft ein Indiz für eine Offenheit gegenüber Änderungen via Vererbung. Sie sollten daher immer kritisch hinterfragt werden. Der Modifier ''protected'' bei Klassenattributen ist oft ein Indiz für eine Offenheit gegenüber Änderungen via Vererbung. Sie sollten daher immer kritisch hinterfragt werden.
  
-==== Law of Demeter ====+==== LoD ====
  
-Das Law of Demeter +Das Law of Demeter sagt aus, dass Objekte lediglich mit seinen unmittelbaren Abhängigkeiten interagieren sollte. 
 + 
 +Ein konkretes Beispiel finden Sie auf https://luiskueng.com/5-Publish/Blog/Clean+Code/Prinzipien+OO-Design/Law+of+Demeter 
 + 
 +Ein starkes Indiz, dass dieses Prinzip verletzt wurde sind (lange) Getter-Ketten.
  
 <code java> <code java>
-get().get();+customer.getCart().getItems().get(0).getProduct().getPrice();
 </code> </code>
 +
 +Solche Fälle sollten in mehrere kleinere Methoden in ihren jeweiligen Entitäten aufgeteilt werden, so dass keine Klasse alle Entitäten der Kette kennen muss.
  • de/modul/ffit/3-jahr/java/learningunits/lu16/b.1767657198.txt.gz
  • Zuletzt geändert: 2026/01/06 00:53
  • von apeter