Softwareentwicklung 2 (Objektorientierte Programmierung in Java)

339.191 2VO Mössenböck Do 8:30 - 10:00 Raum: HS 10 Beginn: 8.3.2018

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

  1. Prinzipien der objektorientierten Programmierung
    - Grundideen
    - Objektorientierte Programmstruktur
    - Information Hiding, Datenabstraktion, Vererbung, dynamische Bindung

  2. Klassen
    - Bestandteile (Felder, Methoden, Nachrichten, Konstruktoren, Finalizers)
    - Information Hiding (Sichtbarkeitsattribute, Schnittstelle/Implementierung, get/set-Methoden)
    - Beispiele

  3. Vererbung
    - Wiederverwendung
    - Kompatibilität (Klassenhierarchien, Typkompatibilität, statischer/dynamischer Typ, Laufzeittypprüfungen)
    - Mehrfache Vererbung
    - Klasse Object

  4. Dynamische Bindung
    - Prinzip
    - Statische versus dynamische Bindung
    - Abstrakte Klassen

  5. Interfaces
    - Grundlagen
    - Mehrfache Schnittstellenvererbung
    - Erweiterung von Interfaces
    - Anwendung von Interfaces
    - Beispiele

  6. Innere Klassen
    - Innere Klassen
    - Geschachtelte statische Klassen
    - Lokale Klassen
    - Anonyme Klassen

  7. Generics
    - Grundlagen
    - Constraints
    - Generische Arrays
    - Vererbung
    - Wildcards
    - Generische Methoden
    - Laufzeit-Typinformation

  8. Lambda-Ausdrücke
    - Grundlagen
    - Zugriff auf äußere Variablen und Felder
    - Methodenreferenzen
    - Default-Methoden

  9. Java-Klassenbibliothek (Auszug)
    - java.lang (Object, String, StringBuffer, Math, Kopieren, Wrapper-Klassen)
    - java.util (Collections, Iteratoren, Streams)
    - java.io (IOStreams, Serialisierung)
    - java.net (Sockets)

  10. UML
    - Überblick
    - Klassendiagramme
    - Use-Case-Diagramme
    - Sequenzdiagramme
    - Kollaborationsdiagramme
    - Zustandsdiagramme

  11. 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

  12. 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

  13. Entwurfsmuster
    - Erzeugende Muster
      (Fabrik, Fabrikmethode, Prototyp)
    - Strukturmuster
      (Familie, Adapter, Kompositum, Dekorator, Proxy, Fassade, Zwilling)
    - Verhaltensmuster
      (Iterator, Besucher, Beobachter, Strategie, Nachrichtenobjekt, Schablonenmethode)

  14. Testen
    - Allgemeines
    - Dynamisches Testen (Treiber, Stubs, Black-Box-Test, White-Box-Test, Regressionstest)
    - Statisches Testen (Verifikation, Schreibtischtest, Code-Inspektion, Metriken)
    - Defensives Programmieren (Assertionen, Hilfsdrucke)

  15. Korrektheitsüberlegungen bei Klassen
    - Kontrakte
    - Subkontrakte
    - Schnittstellen überschriebener Methoden

  16. Programmierstil
    - Namensgebung
    - Strukturierung
    - Lesbarkeit
    - Kommentierung
    - Effizienz
    - Beispiele

Vorlesungsaufzeichnungen

Leider gibt es von Minute 3:51 bis Minute 7:30 einen Tonausfall
Aus organisatorischen Gründen, stehen nur die letzten 35min. der Vorlesung als Aufzeichnung zur Verfügung

Skript

Das Skript ist auf der KUSSS-Seite dieser LVA als PDF-Dokument verfügbar.

Prüfung

Die Prüfung in Form einer schriftlichen Klausur wird am 28.6.2018 zur Vorlesungszeit stattfinden. Sie wird heuer auch erstmals anstatt eines abschließenden Übungstests gewertet (was die Anzahl der Prüfungen reduziert).

Links