depa MSP

71 flashcardsby Ina
Study these flashcardsFree · spaced repetition · iPhone, Android, Mac & web

All cards

1
Werden finale Felder in Java-Clone richtig kopiert? (Shallow Copy)
Ja
2
Werden finale Felder in Copy Ctor richtig kopiert?
Ja, sie können richtig initialisiert werden
3
Werden finale Felder bei Java Reflection richtig kopiert?
Nein, sie dürfen nicht vorkommen
4
Es wird eine Deep Copy erstellt a) bei Java clone und/oder b) mit Copy Ctor
Beides möglich, muss selber gemacht werden
5
Wie wird bei a) Java-clone und b) Copy Ctor mit zyklischen Strukturen / Alias-Referenzen umgegangen?
Müssen selbst korrekt aufgelöst werden
6
Werden Strings in einer Shallow Copy richtig kopiert?
Nein, bei java clone per default nicht
7
Werden finale Felder bei Java Serialization richtig kopiert?
Ja
8
Reflection kopiert automatisch deep
richtig, man hat keine Kontrolle
9
Serialization kopiert automatisch deep
Richtig, eingeschränkte Kontrolle
10
zyklische Strukturen werden sowohl bei Reflection als auch bei Serialization automatisch aufgelöst
richtig
11
ordne Java-Clone, Reflection, Copy Ctor und Serialization nach Effizient
1) Java Clone und Copy Ctor 2) Reflection 3) Serialization
12
Strings werden bei Reflection kopiert
falsch, sie sind als immutable registriert
13
Strings werden bei Serialization kopiert
richtig
14
Welche Methode braucht als einzige einen nicht parametrisierten Konstruktor
Reflection, um Instanzen zu erzeugen
15
Alle Kopiermethoden ausser Serialisierung kompilieren mit Java.lang.Cloneable
nein, alle ausser Copy Ctor
16
Was sollte für Information Hiding kopiert werden?
Alle veränderbaren Objekte beim Herausgeben oder Reinkommen
17
Welche Sachen sind in Sachen Information Hiding sicher?
primitive Datentypen und immutable Objects (Strings, Color...)
18
Was ist eine unveränderliche Klasse?
Klasse, deren Instanzen nicht verändert werden können
19
Nachteil unveränderlicher Objekte
Jeder Wert braucht neue Instanz, kann Performance verschlechtern
20
Welche Schritte um Klasse immutable zu machen
- alle Felder private und final
- keine Setter Methoden
- Klasse ist final
- Zugriff auf alle veränderlichen Komponenten muss exklusiv sein
21
Was sind die Vorteile unveränderlicher Klassen?
- gute Bausteine und Keys für Maps
- sicher, einfach zu benutzen
- einfach zu implementieren
- können nur einen Zustand haben
- threadsicher
- auch Interna können gemeinsam benutzt werden
- weniger fehleranfällig
- vorübergehende Inkonsistenz ist ausgeschlossen
22
Alternative zu final Klassen
private Konstruktoren & öffentliche statische Factory Methode
23
Decorator Objekte haben den gleichen Supertyp wie die dekorierten Objekte
Richtig
24
Das .... Muster erweitert ein Objekt dynamisch um weitere Verantwortlichkeiten. Es bietet eine flexible Alternative zu Subklassen für die Erweiterung der Funktionalität
Decorator
25
Vorteile Decorator Pattern
zusätzliche Funktionalität kann zur Laufzeit hinzugefügt werden
26
Decorator Klassendiagramm
27
Beispiel Decorators ineinander verpacken
Beverage b = new Whip(new Mocca(new Houseblend(Beverage.SIZE_VENTI)))
28
Decorator Sequenzdiagramm
29
Welche Bedingung muss erfüllt sein, wenn eine Decorator zusätzliche Methoden enthält?
Er muss am Angang der Kette stehen.
30
Decorator vs State/Strategy
Decorator fügt zusätzliche Funktionalität dazu und verändert die Identität des Objekts, State/Strategy verändern das Verhalten des Objekts komplett
31
Das ... Muster verkapselt einen Auftrag von einem Objekt und ermöglicht es dadurch, andere Objekte mit verschiedenen Aufträgen zu parametrisieren, Aufträge in Warteschlangen einzureihen oder zu protokollieren oder das Rückgängigmachen von Operationen zu unterstützen.
Command
32
Klassendiagramm Command
33
allgemeine Form der Factory Method
public Product createProduct(String type)
34
Unterschied Factory Method und Abstract Factory
Factory Method = Vererbung, gibt einzelnes Produkt zurück
Abstract Factory = Komposition, gibt Produktfamilien zurück
35
Welche Probleme kann Vererbung verursachen?
- Supertyp verändert Funktionsweise seiner Methoden = Supercalls in überschriebenen Methoden in Subklasse funktioniert nicht mehr wie gewünscht
- Sicherheitslücken (nur neue Methoden ist viel sicherer)
- neue Methoden könnten zufälligerweise die gleiche Signatur haben wie zukünftige neue Methoden in der Parent-Klasse und dann nicht mehr funktionieren
36
Wie löst man Probleme mit Vererbung
Komposition
37
Wie funktioniert Komposition?
Klasse enthält ein Objekt des Types der Superklasse und leitet Methoden an dieses Objekt weiter
38
Wann ist Vererbung sinnvoll?
Wenn die Klasse B ein tatsächlich logischer Subtyp der Klasse A ist (Katze B ist ein Tier A)
39
Klassendiagramm abstract Factory
40
Das ... Muster bietet eine Schnittstelle zum Erstellen von Familien verwandter oder zusammenhängender Objekte an, ohne konkrete Klassen anzugeben.
Abstract Factory
41
Wie kann man eine Factory zur Verfügung stellen?
CurrentFactory Klasse, ConcreteFacotory hat dann:
static { CurrentFactory.setFactory(new ConcreteFactory()); }
42
Was ist ein statischer Initialisierungs-Block?
static {...}
wird aufgerufen, sobald eine Klasse im Runtime Environment ist
43
Wie wird die CurrentFacitory gesetzt?
in der main Methode:
Class.forName(args[0]); ruft static{....} der Klasse an Stelle 0 im args Array auf und setzt so die currentFactory.
args[] wird über die Spring Beans Konfiguration gesetzt
44
Was ist Schnittstellenvererbung?
InterfaceB extends InterfaceA
ist okay, InterfaceA kann weiterhin so verwendet werden wie immer. Wird gebraucht, wenn zB neue Klassen InterfaceA benutzen sollen, aber noch weitere Methoden brauchen, die dann in InterfaceB definiert sind. Man sollte nie ein InterfaceA einfach erweitern, das würde alle anderen Klassen, die InterfaceA implementieren zerstören
45
Was ist Implementierungsvererbung?
die normale Vererbung, wenn eine Klasse B von Klasse A erbt
46
Was ist Dependency Injection?
Form von inversion of Control, Instanzen werden nicht selbst neu erstellt sondern ein Assembler erstellt sie und weiss, an welchen Stellen die INstanzen einzufügen sind. Kann mit Spring gemacht werden
47
Wofür ist Dependency Injection gut?
Um eine enge Kopplung zu vermeiden
48
Was sind Beans?
Objekte, die von Spring erzeugt werden. Es sind Singletons.
49
<beans> definiert alle beans, <bean> definiert ein bean, <property> setzte SwingFactory im CalculatorBuilder -> entspricht Setter Methode
50
Welche Ausgabe ist korrekt?
A
51
Welche Ausgabe ist korrekt?
Laufzeitfehler
52
Was ist die Ausgabe?
B
53
Was ist die Ausgabe
kompiliert nicht, clone() muss in allen Klassen oberhalb implementiert sein
54
Was macht der Code?
Führt zu einem Stack Overflow
55
Was macht der Code?
Führt zu einer Deep-Copy
56
Was wird hier ausgegeben?
false
57
Was wird ausgegeben?
1/2
58
Kompiliert dieser Code?
Nein, die Klasse A verhält sich als wäre sie final und kann nicht erweitert werden wegen dem privaten Konstruktor
59
Was ist hier falsch? (Hint: Decorator Ketten)
Es wird auf den Owner der Handles geprüft, f ist aber nicht immer die konkrete Figur sondern evtl ein Decorator
60
Wie kann man das Problem mit den stehenbleibenden Handles beim Löschen einer Figur lösen? Was ist da überhaupt das Problem?
Die gelöschte Figur ist nicht unbedingt eine konkrete Figur sondern evtl ein Decorator. Lösungen: 1) Handles-Decorator implementieren 2) Gleichheit über die ganze Kette prüfen
61
Was ist das für eine Methode und wo muss sie deklariert werden?
instanceof für Decorator Ketten, wird in der Component Abstraktion deklariert
62
Ordne die Command Rollen diesem Code zu
JButton = Invoker
actionPerformed() = execute
AngelListener = Command
ActionListener = CommandInterface
TheClass = Client
System = receiver
63
in der undo Methode eines Macro Command muss das undo der Command Objekte in welcher Reihenfolge aufgerufen werden?
in umgekehrter Reihenfolge (reverse List Order)
64
Welches Design-Pattern verwendet der Marco-Command?
Composite
65
Im Abstract Factory Pattern ist es aufwändig/schnell umgesetzt eine neues konkretes Produkt hinzuzufügen.
aufwändig (Das Produkt muss in jeder Familie hinzugefügt werden)
66
Im Abstract Factory Pattern ist es aufwändig/schnell umgesetzt eine neue Produktfamilie hinzuzufügen.
schnell umgesetzt
67
Um welches Muster handelt es sich hier?
Abstract Factory
68
Welches Muster ist das?
Factory Method
69
In welcher Reihenfolge werden die Methoden aufgerufen?
B.n, B.m, A.m, B.n, B.m.... Stackoverflow
70
Was wird ausgegeben?
Kompilierfehler
71
Was wird ausgegeben?
0, j wird ausgegeben, bevor es instanziiert wird
-> i ist nicht definiert auf B, also geht es hoch zu A. Dort wird i gesetzt und im Konstruktor init() aufgerufen. init() ist bei B definiert, also wird das dort aufgerufen und returned j, das zu dem Zeitpunkt noch 0 ist.
Study all 71 cards for free