Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Awards
Teaching
Lectures
Exams
B.Theses
M.Theses
PhD Theses
Go Abroad
Misc
Talks
Library
Gallery
Links
Search
Webmaster
|
Softwareentwicklung 2
LVA Nr |
SSt |
LVA Leiter |
Zeit |
Raum |
Beginn |
339.191 |
2VO |
Prähofer |
Do 8:30 - 10:00 |
HS 7 |
7.3.2024 |
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 (Planung)
- 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
- Lambda-Ausdrücke und Streams
- Grundlagen
- Zugriff auf äußere Variablen und Felder
- Methodenreferenzen
- Streams
- 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)
- 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.
Links
|