Guten Entwurf herstellen und erhalten VL 10-12 Flashcards
Was ist Kohäsion?
Den Grad der Aufgaben, die eine Softwareeinheit zu erfüllen hat.
Was ist eine hohe Kohäsion?
Wenn eine Einheit für genau eine logische Aufgabe zuständig ist, herrscht eine hohe Kohäsion.
->Ziel: hohe Kohäsion
Was ist Kopplung?
Der Grad der Abhängigkeiten zwischen den Einheiten eines Softwaresystems.
-> Ziel: lose Kopplung
Was ist explizite Kopplung?
Eine explizite Kopplng ist formal nachweisbar. Z.B. Klient grieft auf öffentliche Exemplarvariable zu.
Was ist implizite Kopplung?
Implizite Kopplungen sind nicht formal nachweisbar. Z.B. implementiert ein Entwickler sein Wissen über die Interna des Dienstleisters in eine Klientenklasse hinein.
Was ist ein Entwurf nach Zustöndigkeiten?
Eine Entwurfsphilosophie. Jedes Objekt ist für eine klar definierte Aufgabe zuständig. Objekte sind verantwortliche Mitglieder einer Objekt Gemeinschaft
Was ist Law of Demeter?
Eine Methode m eines Objekts o sollte ausschließlich Methoden von folgenden Objekten aufrufen können:
- o selbst
- Parameter von m
- Objekten, die m erzeugt
- Exemplarvariablen von o
Was sind CRC-Karten?
Class-Responsibilty-Collaboration
Responsibilty: von der Klasse erbrachte Dienstleistungen
Collaboration: andere Klassen, an die Teile der Dienstleistung delegiert wird
Was ist ein Wert?
- abstrakt(immateriell)
- zeitlos(werden nicht erzeugt)
- unveränderlich
- zustandslos
Was ist ein Objekt?
- zustandsbehaftet(innerer Zustand)
- erzeugbar und zerstörbar(Lebensdauer)
- potenziell veränderbar(Merkmale änderbar)
Wie sind Werttypen in Programmiersprachen definiert?
Sie haben eine unveränderliche Elementmenge. Bieten anstatt Konstruktoren, Selektoren an.
Was ist der Typesafe Enum Pattern
Beschreibt, wie Aufzählungen in Java modelliert werden können.
- public static final für jede Konstante der Aufzählung
- private Konstruktor
Was ist das Risiko bei Änderungen von Software?
- schlechte Verständlichkeit und Wartbarkeit
- neue Fehler
- keine Anpassung der Struktur der Software
- unvollständige Änderungen
Was sind “Bad Smells” im Code?
- Bad Smells sind Mängel der Wartbarkeit
- bei schlechtem Code ist der Aufwand für Änderungen hoch
- z.B. lange Methoden, Code-Duplikate, geringe Kohäsion
Was sind die Auswirkungen bei Code-Duplikate?
- Copy Paste an mehreren Stellen des Systems
- > Änderungen müssen an allen Codes vollführt werden, fehleranfällig
Was ist die Auswirkung bei der Vermischung der Codes?
- Entstehung der God-Class
- >starke Kopplung, Vermischung von Zuständigkeiten, häufige Änderungen
Was sind die Auswirkungen von verletzte Kapselung?
-Methode benutzt Daten anderer Klassen mehr als die der eigenen Klasse
->geringe Übersichtlichkeit, starke Kopplung,
geringe Testbarkeit
Was sind die Auswirkungen bei zu großen Klassen/Methoden?
- zu komplex
- geringe Übersichtlichkeit
- hohes Fehlerrisiko
- Bearbeitung und Test schwer
- wahrscheinlich Vermischung von Zuständigkeiten
Was ist Refactoring?
-interne Struktur einer Software ändern zur Verbesserung von Wartbarkeit und Verständlichkeit, ohne ihr beobachtbares Verhalten zu ändern
Was sind die 4 Refactoring Prinzipien für Akzeptanz?
- Keep it Small(kleine Änderungen)
- Auslösen durch Kunden Bedarf
- Team-Zusammenhalt(mehr Verständnis)
- Transparenz der Kosten
Was sind die sechs Richtlinien zu Wertklassen(Fachwerten) in Java?
- Wertobjekte haben keinen veränderbaren Zustand
- Werte und Wertobjekte beziehen sich nicht auf Objekte
- Im Quelltext der Wertklasse werden keine Objekte verändert
- Verberge die Erzeuugung von Wertobjekten
- equals und hashCde implementieren
- Immer equals statt == bei Prüfung der Gleichheit verwenden
Warum ist eine lose Kopplung erstrebenswert?
- Klassen besser verstehen, da man nicht viele andere Klassendefinitionen lesen muss
- leichter änderbar
->erleichtert die Wartung
Warum sind Softwaresysteme besser änderbar, wenn sie ähnlich der realen Welt aufgebaut sind?
Änderungen von realen Elementen der Welt lassen sich leichter auf Änderungen des Softwaresystems umsetzen.
Was sind fachliche Werte?
- haben eine fachliche Bedeutung, z.B. PLZ, BLZ
- haben andere Operationen, Geldbeträge kein multiplizieren
Was sind die Unterschiede zwischen Wert und Objekt?
Wert:
- abstrakt
- zeitlos
- unveränderlich, zustandslos
Objekt:
- zustandsbehaftet
- erzeugbar und zerstörbar
Was ist der Unterschied zwischen Werttypen und Objekttypen in Programmiersprachen?
Werttypen:
- unveränderliche Elementmenge
- bieten Selektoren an
Obejekttypen:
- dynamische Elementmenge
- bieten Konstruktoren an