Grobe Themenübersicht

A. Java-Grundlagen: Datentypen, Ausdrücke, Kontrollstrukturen, Arrays
B. Syntax: Reguläre Ausdrücke, Syntaxbäume, Kontrollflussdiagramme
C. Rekursion
D. Objektorientierung (Klassen, Objekte, Listen, Interfaces, ...) und Vererbung
E. Sortier- und Suchalgorithmen
F. Polymorphie
G. Threads

Zur Orientierung habe ich mir die Themen der Vorlesung grob zusammengefasst. Die nachfolgende Zusammenfassung habe ich eigentlich nur für mich erstellt (bspw. zur Erstellung obiger Übersicht). Die Nummern in Klammern beziehen sich auf die Kapitel im Vorlesungsskript.



Grundlagen (2)
- Variablen/Datentypen
  - statische Typisierung (steht schon bei Kompilierung fest)
  - primitive Datentypen vs. Referenzdatentypen
  - primitive Datentypen (5.1; blatt 4)
    - Ganze Zahlen
    - Gleitkommazahlen
    - Gruppierung mit _ (zwischen Ziffer)
    - boolean (1): true, false
  - implizite Typecasts (Folie 98): byte -> short -> int -> long -> float -> double,  char -> int;  implizit zu String, falls einer der beiden String ist, sonst nicht
    Casting von int/long nach float wird durchgeführt, kann aber zu Informationsverlust führen
    Auswertung von Ausdrücken (5.3, 107)
  - Referenzdatentypen:
    - String (5.2)
    - Arrays (5.4): type[] name, type name[], new int[5], new int[]{1, 2, 3};
    - Wrapper-Klassen: Integer.byteValue
- Operatoren (5.3) (http://bmanolov.free.fr/javaoperators.php)
  - Zuweisung (=): Achtung: Zuweisung ist Ausdruck mit Wert = Wert nach Zuweisung (rechte Seite) (a = b = c++)
  - arithmetische Operatoren (+, -, *, /, %, unär +/-); sind nur für int, long, float & double definiert, d. h. short, byte, char -> int
  - Konkatenationsoperator (+) (5.2)
  - Vergleichsoperatoren (==, !=, >, <, >=, <=, instanceof): Vorsicht: bool x = false, if (x = true) print error
  - boolesche Operatoren (!, &&, ||, ^), davon &&, || Kurzschlussauswertung
  - bitweise Operatoren (~, &, |, ^), Shifts (<<, >>, >>>)
  - zusammengesetzte Zuweisungsoperatoren (+=, -=, /=, ...) a += b <=> a = (type(a)) (a + b)
  - Post-/Pre-inkrement/dekrement (++, ++, --, --); x++ entspricht x = (type(x)) (x + 1)
  - ternärer Operator / Bedingungsoperator (?:) (9)
  - Präzedenzordnungen (höhere Priorität -> zuerst ausgewertet)
  - Fallstricke: ++y++ syntaktisch inkorrekt (Ink. braucht Variable)
                 kein Zurücksetzen der Variablen bspw. in a++ == ++b || --a == b
- Kontrollstrukturen
  - Selektion (bedingte Anweisung, if-Abfrage)
  - Iterationen (Schleifen):
    - while: Vergleich - ss
    - for (5.5): Init. - Vergleich - ss - Ink./Dek. (Manipulation)
    - do-while: ss - Vergleich
  - switch (e) {case x: ss break; default: ss} (9)
  - Verlassen durch break und return, continue
- Kommentare (// /* */)
- Klassen: (max.) eine öffentliche Klasse mit gleichem Dateinamen pro Datei
- Funktionen (5.6)

Syntax (3):
- Syntax (Lehre vom Satzbau) <-> Semantik (Lehre von der Bedeutung)
- reguläre Ausdrücke (::=, Alternative, Iter., Konkat. Opt.; rechte Seite nur Terminale/Tokens)
- Syntaxbäume: Blätter: Wörter/Terminale, innere Knoten: Nichtterminale
- Kontextfreie Grammatiken (rechts steht ein nicht entfernbares Nichtterminal), Erweiterte Backus-Naur-Form = Sprache zur Darstellung kf Grammatiken

Kontrollflussdiagramme (4)
- Start (Deklarationen) und Stop
- Anweisungen (insb. Zuweisungen)
- Bedingungen
- Ein-/Ausgabe
- Kanten, Kantenzusammenlauf

Speicherverwaltung (6):
- Heap, Stack, statisch
- Call by Value/Reference
- Rekursion
- Memoisation

Sortieren (7):
- Insertionssort

Suchen (8):
- naives Suchen
- binäre Suche
- Endrekursion

Objektorientierung (10):
- Klassen, Objekte
- innere Klassen
- Selbstreferenz this
- Klassenattribute, Objektattribute
- Klassenmethoden

Abstrakte Datentypen (11):
- Listen (11.1), Mergesort
- Stacks (11.2)
- Queue (11.3)

Vererbung (12):
- Schlüsselwort super
- Verschattung
- Überschreiben von Methoden

Polymorphie (13):
- statischer vs. dynamischer Typ
- Überladen
- Object
- Generics (13.2)
- Wrapper-Klassen (13.3)

Abstrakte Klassen, finale Klassen, Interfaces (14)
- abstrakte Methoden, Klassen
- final
- (funktionale = genau 1 methode) Interfaces

Fehler / Error/Exceptions (15):
- Fehlerklassen: checked/unchecked
- try catch finally
- selbstdefinierte Fehlerklassen

Threads (16):
- Scheduling
- Zustände
- Futures
- Deadlock
- Monitore
- Locks/synchronized
- Semaphore
- wait/notify (Consumer/Producer)

Weiteres:
- anonyme Klassen
- Iteratoren
(- Lambda-Asudrücke)
(- Methodenreferenzen)
(- GUIs)
(- Collections: Set, Map, ...)

Zuletzt geändert: Sonntag, 9. April 2017, 13:54