Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Awards
Teaching
Lectures
Exams
B.Projects
M.Theses
PhD Theses
Go Abroad
Misc
Talks
Library
Gallery
Links
Search
Webmaster
Softwareentwicklung 2 (Objektorientierte Programmierung in Java)
339.191
2VO
Prähofer
Do 8:30 - 10:00
Raum:
Beginn: 11.3.2021
Ziel
Nach Besuch dieser Vorlesung werden Sie ...
Grundlagen und Anwendungen der objektorientierten Programmierung beherrschen
fortgeschrittene Konzepte wie Generizität oder Lambda-Ausdrücke beherrschen
objektorientierte Entwurfsmuster kennen und einsetzen können
erweiterbare Programme auf der Basis objektorientierter Frameworks schreiben können
die wichtigsten Klassen und Pakete der Java-Bibliothek kennen
elementare Testtechniken anwenden können
guten Programmierstil beherrschen
Als Programmiersprache wird Java verwendet.
Inhalt
Prinzipien der objektorientierten Programmierung
- Grundideen
- Objektorientierte Programmstruktur
- Information Hiding, Datenabstraktion, Vererbung, dynamische Bindung
Klassen
- Bestandteile (Felder, Methoden, Nachrichten, Konstruktoren, Finalizers)
- Information Hiding (Sichtbarkeitsattribute, Schnittstelle/Implementierung, get/set-Methoden)
- Beispiele
Vererbung
- Wiederverwendung
- Kompatibilität (Klassenhierarchien, Typkompatibilität,
statischer/dynamischer Typ, Laufzeittypprüfungen)
- Mehrfache Vererbung
- Klasse Object
Dynamische Bindung
- Prinzip
- Statische versus dynamische Bindung
- Abstrakte Klassen
Interfaces
- Grundlagen
- Mehrfache Schnittstellenvererbung
- Erweiterung von Interfaces
- Anwendung von Interfaces
- Default-Methoden
- Beispiele
Innere Klassen
- Innere Klassen
- Geschachtelte statische Klassen
- Lokale Klassen
- Anonyme Klassen
Generics
- Grundlagen
- Constraints
- Generische Arrays
- Vererbung
- Wildcards
- Generische Methoden
- Laufzeit-Typinformation
Java-Klassenbibliothek (Auszug)
- java.lang (Object, String, StringBuffer, Math, Kopieren, Wrapper-Klassen)
- java.util (Collections, Iteratoren, Streams)
- java.io (IOStreams, Serialisierung)
- java.net (Sockets)
UML
- Überblick
- Klassendiagramme
- Use-Case-Diagramme
- Sequenzdiagramme
- Kollaborationsdiagramme
- Zustandsdiagramme
Objektorientierter Entwurf
- Allgemeine Überlegungen (topdown vs. bottomup)
- Ermitteln der Klassen (Entwurfsüberlegungen, Beispiel, Methode von Abbott, CRC-Karten)
- Beziehungen zwischen Klassen (Benutzt-, Hat- und Ist-Beziehung)
- Entwurfstipps (Bindung vs. Kopplung, Designing for Change, Schnittstellenkriterien)
- Entwurfsfehler
Frameworks
- Allgemeines (Definition, Black-Box- und White-Box-Frameworks)
- Beispiele (Menüs, Und/Redo, Dragging, Model-View-Controller)
- Das Swing-Framework
- Vorteile und Probleme von Frameworks
Entwurfsmuster
- Erzeugende Muster
(Fabrik, Fabrikmethode, Prototyp)
- Strukturmuster
(Familie, Adapter, Kompositum, Dekorator, Proxy, Fassade, Zwilling)
- Verhaltensmuster
(Iterator, Besucher, Beobachter, Strategie, Nachrichtenobjekt, Schablonenmethode)
Lambda-Ausdrücke und Streams
- Grundlagen
- Zugriff auf äußere Variablen und Felder
- Methodenreferenzen
- Streams
Testen
- Allgemeines
- Dynamisches Testen (Treiber, Stubs, Black-Box-Test, White-Box-Test, Regressionstest)
- Statisches Testen (Verifikation, Schreibtischtest, Code-Inspektion, Metriken)
- Defensives Programmieren (Assertionen, Hilfsdrucke)
Korrektheitsüberlegungen bei Klassen
- Kontrakte
- Subkontrakte
- Schnittstellen überschriebener Methoden
Programmierstil
- Namensgebung
- Strukturierung
- Lesbarkeit
- Kommentierung
- Effizienz
- Beispiele
Skript
Das Folienskript dieser LVA wird über Moodle bereitgestellt.
Prüfung
Die Prüfung in Form einer schriftlichen Klausur wird am Do, 1.7.2021 zur Vorlesungszeit stattfinden.
Die Übungen werden neben den wöchentlichen Programmieraufgaben durch eigene Übungstests benotet.
Vorlesungsaufzeichnungen aus dem SS 2018
(Achtung: Stimmen NICHT exakt mit der Vorlesung aus diesem Semester überein!)
08.03.2018 - Prinzipien, Klassen, Vererbung
Your browser does not support the video tag.
15.03.2018 - Vererbung, dynamische Bindung
Your browser does not support the video tag.
22.03.2018 - Interfaces, innere Klassen
Your browser does not support the video tag.
12.04.2018 - Generics
Your browser does not support the video tag.
19.04.2018 - Lambda-Ausdrücke
Your browser does not support the video tag.
26.04.2018 - Klassenbibliothek
Your browser does not support the video tag.
03.05.2018 - Objektorientierter Entwurf
Leider gibt es von Minute 3:51 bis Minute 7:30 einen Tonausfall
Your browser does not support the video tag.
17.05.2018 - Frameworks
Your browser does not support the video tag.
24.05.2018 - Entwurfsmuster 1
Your browser does not support the video tag.
07.06.2018 - Entwurfsmuster 2
Your browser does not support the video tag.
14.06.2018 - Testen 1
Aus organisatorischen Gründen, stehen nur die letzten 35min. der Vorlesung als Aufzeichnung zur Verfügung
Your browser does not support the video tag.
21.06.2018 - Testen 2
Your browser does not support the video tag.
Links