Softwareentwicklung 2 (Objektorientierte Programmierung in Java)

339.191 2VO Prähofer Do 8:30 - 10:00 Raum: HS 10 Beginn: 5.3.2020

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 25.6.2020 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!)

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

Links