Please enable JavaScript.
Coggle requires JavaScript to display documents.
OOP-Master - Coggle Diagram
OOP-Master
KE7 Objektorientierter Stil
Namenwahl
Verwendung von Abkürzungen (nur wenn Leser Abkürzung kenn)
Namenskonvention
Mechanische (syntaktische) Namneskonvention
Grammatikalisch-inhaltliche (semantische) Namenskonenvtionen
Klassen
Substantive
Methoden
Verben
Adjektive
Instanzvariablen
Attribute
Größe, Farbe -> Substantive aber klein geschrieben
Boolean -> Adjektiv (z.B. leer)
Beziehung
Name der Gegenrolle bspw. Vater
Bei :n-Beziehungen Plural z.B. kinder
Interfaces
Bezeichnen Rollen ("ible", "able" -> z.B. Serializable)
Formatierungskonvention
Kurze Methoden
Teile der Methode in andere auslagern
Erhöht Lesbarkeit
Deklarativer Stil
Bemüht sich mehr um das Was als um das Wie
Bibliotheksgedanke
Jede gesparte Zeile ist ein Erfolg
Ausgewogene Verteilung
Klasse zu groß? 2 Erklärungen
Klasse steht nicht für eine Abstraktion der Anwendungsdomäne, sondern für mehrere
Klasse steht für Abstraktion der Anwendungsdomäne aber auf höherem Abstraktionsniveau als das der Implementierung.
Abstraktion ist Generalisierung & es wurde aber eine Spezialisierung in der Klasse zusammengefasst
Abstraktion ist eine Aggregation, also eine Zusammensetzung auf mehreren Teilen.
Law of Demeter
Sprich nicht mit Fremden
Ziel: Verringerung der Entwurfsabhängigkeit durch Verringerung der Kopplung zwischen den Klassen
Klassenhierarchie
Macht alle Superklassen abstract oder final
KE6 Probleme der OOP
Substituierbarkeit
Verhaltensbasiertes Subtyping
Relativität der Substituierbarkeit
Liskov-Substitutionsprinzip
Fragile-base-class-Problem
Schlechte Tracebarkeit
Goto-Anweisung
VS
Lokalitätsprinzip
Strukturierte Programmierung
VS
Eindimensionale Strukturierung
mangelnde Skalierbarkeit
Granularität von Klassen
mangelnde hierarchische (De-) Komponierbarkeit von Klassen
mangelnde Kapselung
starke Abhängigkeit durch Vererbung
Umgehung der Kapselung durch Aliasing
Aliasing Problem
mangelnde Eignung