## Inhaltliche Fragen zu Kap. 10 * muss man einen Heap mit Speicherlöchern “defragmentieren”, um eine stabile Leistung zu erzielen? * Nein, das macht der Abfallsammler (garbage collector), der die Verweise verfolgt und tote Objekte (ohne Verweis auf sie) beseitigt. * Wieso können Objekte "sterben"? * Sie sterben, wenn kein Verweis mehr auf sie zeigt. Dann räumt sie der Abfallsammler von Java weg. * Wäre dafür in C++ z.B. der Destructor zuständig? * Ja, C++ ist eine Systemprogrammiersprache, in der man die Speicherverwaltung selbst programmieren muss. Das ist sehr fehleranfällig. * Wie kann man im Bsp. der VL den State der Ampel von außen lesen, um das weiterverwenden zu können? (C#: State { get; private set; } ) * In Java gibt es sog. setters und getters für Attribute: * int getState() {... return state; } * void setState(int s) { state=s; } * Warum macht man den State dann nicht direkt public? * zb zur abstraktion, den nutzer interessiert die farbe der ampel vielleicht nicht * Öffentliche Attribute sind erlaubt, bereiten aber bei der polymorphen Vererbung Probleme, da sie nicht genauso zugegriffen werden wie Methoden/Funktionen. Siehe Kap. 11. * Warum Java? * 3 billion devices * REAL-Kassensysteme sind von GK Software aus Schöneck/Vogtland in Java programmiert: Versuche die Kasse beim booten zu beobachten. * aicas.com bietet das Jamaica Real-Time-Java an für das Auto, mit Appstore * Wir werden RUST auch lernen? Nein, aber Rust wird nach der Studienreform im 1. Semester gelehrt werden * Der Repräsentationswechsler wäre doch dann auch zustandsinvariant oder? * Ja, aber nur, wenn das Objekt weiterlebt und nicht auf einen anderen Knoten verschifft wird * Muss man bei einem Objekt auch einen Konstruktor anlegen oder wird er automatisch erstellt? * Für eine Klasse C gibt es nur den Minimalkonstruktor * public C() * ohne die Übergabe von Attributen. Alles andere muss man selbst schreiben.