JAVA & Objektorientiertes Programmieren 2
Erweiterung der ersten Kartei
Erweiterung der ersten Kartei
Set of flashcards Details
Flashcards | 203 |
---|---|
Language | Deutsch |
Category | Computer Science |
Level | University |
Created / Updated | 19.01.2017 / 09.01.2024 |
Weblink |
https://card2brain.ch/box/20170119_java_objektorientiertes_programmieren_2
|
Embed |
<iframe src="https://card2brain.ch/box/20170119_java_objektorientiertes_programmieren_2/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Create or copy sets of flashcards
With an upgrade you can create or copy an unlimited number of sets and use many more additional features.
Log in to see all the cards.
Was ist der ActionListener?
Ein populärer (GUI-)Event in Java, der für unmittelbare Aktionen wie z.B. das Drücken eines Buttons genutzt wird:
- Event-Quelle: z.B. Button-Objekt
- Event Click: ActionEvent-Objekt wird gefeuert
- Event-Verarbeitung: Beliebiges Objekt, welches das ActionListener-Interface implementiert hat, und in der Methode actionPerformed(...) auf Ereignis reagieren kann
Bei der GUI-Programmierung kommen viele Dinge zusammen:
Man steuert, welche Daten, auf welche Art wo und wann dargestellt werden.
Gemäss SRP versucht man mind. diese 3 Teile möglichst voneinander zu trennen.
Wie?
Mit MVC (Model-View-Control)
- Model: eigentliche Datenobjekte, z.B. Person
- View: GUI-Komp. welche Daten anzeigt
- Control: Steuerung, welche das Ganze koordiniert
Welche drei GUI-Frameworks kennt Java?
- AWT (Seit Java 1.0)
- Swing (Seit Java 1.2), Weiterentwicklung eingestellt, aber grösste Verbreitung
- JavaFX (Seit 1.8), Entwicklung seit 2008, modernstes Framework
Was macht AWT und was ist ihr Hauptproblem?
Abstract Window Toolkit, wrapped die nativen GUI-Komponenten des jeweiligen BS!
- dadurch schlank, einfach und effizient
- Look&Feel entspricht voll der Zielplattform
Hauptproblem: Weil Java-Programme auf allen Plattformen laufen müssen, wird nur die kleinste gemeinsame Menge der auf allen Plattformen verfügbaren GUI-Komponenten unterstützt!
- Eingeschränkte Möglichkeiten
- auf einzeln. Plattformen fehlen evtl. für typische essentielle Komponenten
Was ist anders in Swing als in AWT?
Java implementiert für Swing ein eigenes Set von umfangreichen leichtgewichtigen GUI-Komponenten. Quasi eine eigene Oberfläche mit eigenem Look&Feel
- Java-Applikationen sahen nun auf allen Plattformen identisch aus
Was ist in JavaFX anders als in Swing?
Implementiert wie Swing eigenständige Komponenten, wurden aber stark erweitert und die API ist mehr "Nutzergetrieben"
- Vereinfachtes, stark modernisiertes Programmiermodell (Stage und Scenes)
- Möglichkeit GUIs per FXML zu definieren
- Möglichkeit Darstellung mittels Stylesheets (CSS) anzupassen (ohne Codeänderung oder Neukompilierung)
Weshalb ist JavaFX im Vergleich zu Swing ein echtes Framework?
Weil es den Aufbau eines GUIs deutlich mehr abstrahiert, vereinfacht und automatisiert!
In JavaFX wurde das Konzept durch Stage, Scene, Node und Scene Graph, stark vereinfacht. Inwiefern?
- Stage ist eine Analogie zum Frame (Window)
- Scene ist eine Analogie zum (Root-)Panel (Content)
- Node ist eine Basisklasse für alle GUI-Elemente / Komponenten
- Scene Graph ist eine logische hierarchische Datenstruktur welche alle Nodes enthält
Was erlaubt FXML?
Es erlaubt (mit JavaFX) das Design der Visualisierung (GUI) vollständig von der eigentlichen Programmierung zu trennen
Wie geschieht die Verbindung zwischen FXML und dem Code?
Über die fx:id, einfach String-Bezeichner die als Identifikation (ID) dienen.
- Fluch und Segen: Tippfehler können sich stark auswirken!
Programmierung wird vereinfacht, indem sogenannte _____________ verwendet wird, um die vom JavaFX-Framework aus der FXML-Beschreibung erzeugten GUI-Elemente in die Controller-Objekte zu setzen
Dependency Injection
Weshalb sollte man eher auf Frameworks setzen für das Erstellen von GUIs?
Ein GUI von A bis Z zu Programmieren ist sehr aufwändig, Hauptnachteil: NUR ProgrammiererInnen können das GUI verändern, DesignerInnen sind in der Regel überfordert
Welche Implementationen der List<E> gibt es?
ArrayList, LinkedList, Stack*, Vector* etc
*Hinweis: Sehr alte Klassen, bessere Alternativen vorhanden
Wie ist das Interface Queue aufgebaut?
Was sind Eigenschaften einer Queue<E>?
Definiert eine Queue von Elementen vom Typ E
- Queue kann eine statische, beschränkte Grösse haben
- Elemente werden am Schwanz (tail) angehängt
- Elemente werden am Kopf (head) entnommen
Was ist der typische Verwendungszweck von einer Queue<E>?
Zwischenspeichern von Objekten vor der Verarbeitung
Beispiele: Warteschlange, Buffer, Unix-Pipe, Druckerqueue
Semantik meist nach FIFO-Prinzip
Welche Arten von Implementationen gibt es für die Queue<E>?
ArrayDeque, DelayQueue, LinkedBlockingQueue, PriorityQueue etc.
Wie ist die Deque<E> aufgebaut?
Spezialisiert die Semantik der Collection zu einer Queue welche in beide Richtungen verwendet werden kann
Das ermöglicht u.a. auch einen Stack: FILO-Semantik (first in, last out), was einen klassischen "Stapelspeicher" repräsentiert.
push() - Element auf Stack legen
pop() - Element von Stack abheben
(siehe Bild)
Was sind Eigenschaften einer Deque<E>?
Definiert eine Deque (double ended queue) von Elementen vom Typ E
- Eine Queue welche in beide Richtungen arbeiten kann
Semantik somit wahlweise nach FIFO- oder FILO-Prinzip (abhängig von konkreter Verwendung)
Was ist der typische Verwendungszweick einer Deque<E>?
Zwischenspeichern von Objekten vor/für die Verarbeitung, aber mit flexibler Semantik
Welche Arten von Implementationen gibt es für Deque<E>?
ArrayDeque, ConcurrenLinkedDeque, LinkedBlockingDeque, LinkedList etc
Was sind Eigenschaften einer Map<K,V>
Definiert eine Map mit Schlüssel vom Typ K (key) und für Werte vom Typ V (value)
Ein Schlüssel muss inerhalb einer Map eindeutig sein (Schlüssel werden intern als Set<K> abgelegt
Sowohl Wert als auch Schlüssel dürfen auch null sein (nur einmal pro Map). Ein Wert-Objekt kann mehrfach in einer Map abgespeicher werden (unter verschiedenen Schlüsseln)
Kann man Schlüssel-Objekte in einer Map<K,V> nach dem Einfügen verändern?
Ja, sollte man aber nicht!
Tipp: Für die Bearbeitung entnehmen und danach neu einfügen
-
- 1 / 203
-