Guten Entwurf herstellen und erhalten VL 10-12 Flashcards

1
Q

Was ist Kohäsion?

A

Den Grad der Aufgaben, die eine Softwareeinheit zu erfüllen hat.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist eine hohe Kohäsion?

A

Wenn eine Einheit für genau eine logische Aufgabe zuständig ist, herrscht eine hohe Kohäsion.

->Ziel: hohe Kohäsion

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist Kopplung?

A

Der Grad der Abhängigkeiten zwischen den Einheiten eines Softwaresystems.

-> Ziel: lose Kopplung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist explizite Kopplung?

A

Eine explizite Kopplng ist formal nachweisbar. Z.B. Klient grieft auf öffentliche Exemplarvariable zu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was ist implizite Kopplung?

A

Implizite Kopplungen sind nicht formal nachweisbar. Z.B. implementiert ein Entwickler sein Wissen über die Interna des Dienstleisters in eine Klientenklasse hinein.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist ein Entwurf nach Zustöndigkeiten?

A

Eine Entwurfsphilosophie. Jedes Objekt ist für eine klar definierte Aufgabe zuständig. Objekte sind verantwortliche Mitglieder einer Objekt Gemeinschaft

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist Law of Demeter?

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was sind CRC-Karten?

A

Class-Responsibilty-Collaboration

Responsibilty: von der Klasse erbrachte Dienstleistungen

Collaboration: andere Klassen, an die Teile der Dienstleistung delegiert wird

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was ist ein Wert?

A
  • abstrakt(immateriell)
  • zeitlos(werden nicht erzeugt)
  • unveränderlich
  • zustandslos
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist ein Objekt?

A
  • zustandsbehaftet(innerer Zustand)
  • erzeugbar und zerstörbar(Lebensdauer)
  • potenziell veränderbar(Merkmale änderbar)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wie sind Werttypen in Programmiersprachen definiert?

A

Sie haben eine unveränderliche Elementmenge. Bieten anstatt Konstruktoren, Selektoren an.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist der Typesafe Enum Pattern

A

Beschreibt, wie Aufzählungen in Java modelliert werden können.

  • public static final für jede Konstante der Aufzählung
  • private Konstruktor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist das Risiko bei Änderungen von Software?

A
  • schlechte Verständlichkeit und Wartbarkeit
  • neue Fehler
  • keine Anpassung der Struktur der Software
  • unvollständige Änderungen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was sind “Bad Smells” im Code?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was sind die Auswirkungen bei Code-Duplikate?

A
  • Copy Paste an mehreren Stellen des Systems

- > Änderungen müssen an allen Codes vollführt werden, fehleranfällig

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was ist die Auswirkung bei der Vermischung der Codes?

A
  • Entstehung der God-Class

- >starke Kopplung, Vermischung von Zuständigkeiten, häufige Änderungen

17
Q

Was sind die Auswirkungen von verletzte Kapselung?

A

-Methode benutzt Daten anderer Klassen mehr als die der eigenen Klasse

->geringe Übersichtlichkeit, starke Kopplung,
geringe Testbarkeit

18
Q

Was sind die Auswirkungen bei zu großen Klassen/Methoden?

A
  • zu komplex
  • geringe Übersichtlichkeit
  • hohes Fehlerrisiko
  • Bearbeitung und Test schwer
  • wahrscheinlich Vermischung von Zuständigkeiten
19
Q

Was ist Refactoring?

A

-interne Struktur einer Software ändern zur Verbesserung von Wartbarkeit und Verständlichkeit, ohne ihr beobachtbares Verhalten zu ändern

20
Q

Was sind die 4 Refactoring Prinzipien für Akzeptanz?

A
  1. Keep it Small(kleine Änderungen)
  2. Auslösen durch Kunden Bedarf
  3. Team-Zusammenhalt(mehr Verständnis)
  4. Transparenz der Kosten
21
Q

Was sind die sechs Richtlinien zu Wertklassen(Fachwerten) in Java?

A
  1. Wertobjekte haben keinen veränderbaren Zustand
  2. Werte und Wertobjekte beziehen sich nicht auf Objekte
  3. Im Quelltext der Wertklasse werden keine Objekte verändert
  4. Verberge die Erzeuugung von Wertobjekten
  5. equals und hashCde implementieren
  6. Immer equals statt == bei Prüfung der Gleichheit verwenden
22
Q

Warum ist eine lose Kopplung erstrebenswert?

A
  • Klassen besser verstehen, da man nicht viele andere Klassendefinitionen lesen muss
  • leichter änderbar

->erleichtert die Wartung

23
Q

Warum sind Softwaresysteme besser änderbar, wenn sie ähnlich der realen Welt aufgebaut sind?

A

Änderungen von realen Elementen der Welt lassen sich leichter auf Änderungen des Softwaresystems umsetzen.

24
Q

Was sind fachliche Werte?

A
  • haben eine fachliche Bedeutung, z.B. PLZ, BLZ

- haben andere Operationen, Geldbeträge kein multiplizieren

25
Q

Was sind die Unterschiede zwischen Wert und Objekt?

A

Wert:

  • abstrakt
  • zeitlos
  • unveränderlich, zustandslos

Objekt:

  • zustandsbehaftet
  • erzeugbar und zerstörbar
26
Q

Was ist der Unterschied zwischen Werttypen und Objekttypen in Programmiersprachen?

A

Werttypen:

  • unveränderliche Elementmenge
  • bieten Selektoren an

Obejekttypen:

  • dynamische Elementmenge
  • bieten Konstruktoren an