Programmiertechnik II WS 2016/17

Programmiertechnik II
WS 2016/17
Fakultät Informatik
Bachelor Angewandte Informatik
Prof. Dr. Oliver Bittel
[email protected]
www-home.htwg-konstanz.de/~bittel
WS 16/17
Überblick
!  OOP:
– Schnittstellen und Klassen
– Implementierung und Vererbung
– generische Datentypen
– Entwurfsmuster
interface List<E>
class ArrayList<E>
class LinkedList<E>
!  Funktionale Programmierung:
- Funktionale Interfaces und Lambda-Ausdrücke
- Ströme
!  Datenstrukturen und Algorithmen:
- Felder, verkettete Listen, Bäume
- Suchen und Sortieren
!  Java Collections (Behälter):
Anwenden können und internen Aufbau verstehen
!  Grafische Benutzeroberflächen
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
2
Inhaltsverzeichnis (1)
1.  Grundlagen (Wiederholung und Ausblick)
Klassen, Interfaces, Vererbung, abstrakte Klassen, Subtypen,
Ausblick auf geschachtelte Klassen, generische Typen und Java 8
2.  Programmiermethodik
Kapselung, Substitutionsprinzip, immutable Klassen,
vertragsbasiertes Programmieren
3.  Datentyp Liste
Listen-Interface, Liste als Feld, Liste als verkettete Liste,
doppelt verkettete Listen
4.  Datentyp Keller und Schlange
Anwendungen, Keller bzw. Schlange als Feld
und als verkettete Liste
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
3
Inhaltsverzeichnis (2)
5.  Generische Datentypen
Motivation, generische Typen und Methoden, generischer Keller,
obere und untere Typschranken, Platzhalter (Wildcards),
Ko- und kontravariante Typen.
6.  Iterierbare Container
Iterator, Iterable, Foreach- und Iterator-Schleife
Generische Liste mit Iterator
7.  Java Collections - Teil I
Collection, List, LinkedList und ArrayList,
Queue und Deque, ArrayDeque
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
4
Inhaltsverzeichnis (3)
8.  Rekursion
Grundbegriffe, viele Beispiele, Teile-und-Hersche-Verfahren,
Endrekursion, Rekursion und Keller
9.  Komplexitätsanalyse
Größenordnungen von Laufzeiten, Worst-, Best- und
Average-Case-Analyse, Teile-und-Herrsche-Verfahren
10. Sortierverfahren
Sortieren durch Einfügen, Auswählen bzw. Vertauschen, QuickSort,
MergeSort, HeapSort, stabiles Sortieren, externes Sortieren,
generisches Sortieren
11. Bäume
Allgemeine Bäume und Binärbäume, binäre Suchbäume
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
5
Inhaltsverzeichnis (4)
12. Java Collections - Teil II
Set und TreeSet, Map und TreeMap,
Arrays und Collections
13. Graphische Benutzeroberflächen
AWT und Swing, Hauptfenster und Container, Swing-Komponenten,
Layout-Manager, Ereignisverarbeitung, Dialogfenster, Zeichnen
14. Java 8
Lambda-Ausdrücke, Funktionale Interfaces, Ströme,
funktionale Programmierung, Parallelität
15. Entwurfsmuster
Uni- und bidirektionale Assoziationen, Kompositum, Strategie,
Schablonenmethode, Adapter, Dekorierer, Fabrikmethode,
Beobachter
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
6
Wichtige Literatur (1)
!  Ken Arnold, James Gosling and
David Holmes,
The Java Programming Language,
Addison, 4. Auflage: 2005.
!  Das Standardwerk.
!  Java 5.0
!  Mark Allen Weiss,
Data Analysis and Algorithm Analysis in Java,
Addison Wesley, 2. Auflage, 2005.
!  Geht weit über die Vorlesung hinaus;
Grundlage für Algorithmen-Vorlesung
im 3. Semester
!  Java 5.0
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
7
Wichtige Literatur (2)
!  Christian Ullenboom,
Java ist auch eine Insel,
Galileo Computing; 11. Auflage; 2014.
!  Java 8.0
!  Ältere Ausgabe (Java 7.0) in der Bibliothek als
elektronische Ausgabe verfügbar.
!  Scheffler, Wiesenberger, Seese und Ratz,
Grundkurs Programmieren in Java,
Hanser-Verlag 2014.
!  Einführung in die Java-Programmierumng ohne
Vorkenntnisse.
!  Grafische Oberflächen werden ausführlich behandelt.
!  Java 8.0.
!  Als elektronische Ausgabe in der Bibliothek verfügbar.
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
8
Ergänzende Literatur (1)
!  Joshua Bloch,
Effective Java,
Addison-Wesley Longman, 2. Auflage 2008.
!  Enthält eine Liste von guten JavaProgrammiertechniken.
!  keine Einführung in Java, aber sehr lohnenswert!
!  Java 6.0
!  Maurice Naftalin and Philip Wadler,
Java Generics and Collections,
O'Reilly Media, 1. Auflage, 2006.
!  Spezialliteratur zu den Neuerungen in Java 5 und 6.
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
9
Ergänzende Literatur (2)
!  Maurice Naftalin,
Mastering Lambdas: Java Programming in a
Multicore World
McGraw-Hill Education; 1. Auflage, 2014
!  Spezialliteratur zu den Neuerungen in Java 8.
!  Erich Gamma, Richard Helm,
Ralph Johnson, John Vlissides
Entwurfsmuster: Elemente wiederverwendbarer
objektorientierter Software,
Addison-Wesley, München, 2010.
!  Der Klassiker für Entwurfsmuster und
objektorientierte Software-Entwicklung.
Prof. Dr. O. Bittel, HTWG Konstanz
Programmiertechnik II – Einleitung
WS 16/17
10