Subato

 

Objektorientierte Softwareentwicklung (AI) (WS 2021)

 

Responsible Lecturer:
panitz

Lecturers

Tutors

  • dmart001
  • hschw001
  • nhett001

Lecture Times

  • Vorlesung Tue 11:45 B002
  • Vorlesung Thu 14:15 B002

Training Groups

  1. A Mon 10:00 C213
    (ydeus001)
  2. B Mon 11:45 C213
    (ydeus001)
  3. C Mon 14:15 C413
    (ydeus001)
  4. D Tue 10:00 C213
    (panitz)
  5. E Wed 08:15 C213
    (lbehl001)
  6. F Wed 10:00 C213
    (lbehl001)
  7. G Thu 10:00 C377
    (panitz)
  8. H Thu 11:45 C377
    (panitz)
  9. I Wed 11:45 C413
    (dlerc002)
  10. Tutorium A Mon 14:15 C361
    ()
  11. Tutorium B Wed 14:15 C377
    (nhett001)
  12. Tutorium C Thu 17:45 digital
    (dmart001)
  13. Tutorium D Fri 17:45 digital
    (dmart001)

Exercise Sheets

 


Wiesbaden eine  triste Stadt ohne Straßenbahn...

 

Auf dieser Seite finden sich Lehrmaterialien zum Modul »Objektorientierte Softwareentwicklung« im Studiengang Angewandte Informatik.

NEU: Email Support durch Tutoren bei Fragen zu den Übungsblättern unter: tutor.oose(at)subato.org

 

Die Vorlesungen finden über Big Blue Button mit Zugang über ZAPP statt. Die Vorlesung wird aus dem B002 gestreamt. Teilnehmer, die auf dem Campus sind, können die Vorlesung auch im B002 verfolgen.
 
Praktikumsstunden fanden bis Mitte Dezember in Präsenz statt. Für den rest des Semesters digital über ZAPP.
 
 

Vorlesungsskript:

Das Skript lässt sich jeweils zum aktuellen Stand direkt unter diesen Link als PDF-dokument herunter laden.

Die Programme aus dem Skript lassen sich hier direkt erhalten.

Karteikartenkurse

Es gibt mehrere Lernkurse auf Karteikartenbasis. Diese lassen sich hier über Subato im Browser üben, oder aber für Android Telephone mit der App Cardelli (www.cardelli.org)

Folienfilme

Auf der Hochschulplattform AMIGO finden sich kurze Folienfilme zu Themen aus der Vorlesung: Videoplattform Amigo Kurs: Objektorientierte Softwareentwicklung
Direkte öffentliche Links zu den Filmen (kein Login erforderlich):

Praktikum

Die Praktikumsgruppen beginnen am 25.10.

Im Praktikum sind wöchentliche Übugsblätter zu bearbeiten. Als Abschluss ist ein kleines Spielprojekt zu realisieren.

Das Praktikum wird als bestanden gewertet, wenn 90% der Übungsblätter als erfolgreich bearbeitet vom Dozenten des Praktikums abgenommen wurden und das Spielprojekt individuell gelöst wurde.

Einige Beispielabgaben als Browser Spiel.

 

 

Lessons

January 27, 2022, 2:15 PM
January 25, 2022, 11:45 AM
January 20, 2022, 2:15 PM
 Ein und Ausgabe II.
  • Encodings
  • ObjectOutputStream
  • Serializable
  • io.zip
January 18, 2022, 11:45 AM
  • LayoutManager in Swing: FlowLayout (default), GridLayout, BorderLayout, GridBagLayout (nicht gezeigt)
  • IO in Java: Reader, FileReader, Writer, FileWriter, BufferedWriter, InputStream, InputStreamReader
January 13, 2022, 2:15 PM

Verschiedene Arten ein Interface zu implementieren anhand eines ActionListener-Objekts in der Swing GUI Programmierung.

  1. externe Klasse, die Schnittstelle implementiert
  2. innere Klasse, die Schnittstelle implementiert
  3. anonyme innere Klasse
  4. Lambda-Ausdruck
  5. monolithisch, indem die GUI Klasse direkt die Schnittstelle implementiert. (kein guter Stil)

Beipiel:

January 6, 2022, 2:15 PM
December 21, 2021, 11:45 AM
Beispiel für den Start eine Spiels in der Projektabgabe:
(Bilddateien sind durch Dummies ersetzt)
December 16, 2021, 2:15 PM
Details zu Generischen Typen:
  • java.util Standardschnittstellen: List, Set, Map und deren Implementierungen: ArrayList, LinkedList, TreeSet, HashSet, TreeMap, HashMap

  • Comparable Standardschnittstelle
  • generische Methoden, z.B.:
    static <T> T log(T o){
      System.out.println(o);
      return o;
    }
  • Vererbung und Instanzen der Typvariablen;
    List<String> xs = List.of("hallo");
    List<Object> os = List.of("String");
    List<Integer> is = List.of(42);
    //das geht nicht
    //os=is;

    List<? extends Object> o2s = List.of("String");
    //hier geht es
    o2s = is;
    //aber man kann nichts hinzufügen
    //os.add("");
December 14, 2021, 11:45 AM

Generische Typen.

December 9, 2021, 2:15 PM
December 7, 2021, 11:45 AM
December 2, 2021, 2:15 PM
Die Methode equals überschreiben:
  • Apfel.java
  • instanceof
  • Mit Typzusicherung
    if (obj instanceof Apfel){
      Apfel that = (Apfel)obj;
    ...
    }
  • Mit Pattern ab Java 16:
    if (obj instanceof Apfel that){
    ...
    }
  • Mit Klassenobjekt
    if (obj.getClass()==Apfel.class){
      Apfel that = (Apfel)obj;
    ...
    }
November 30, 2021, 11:45 AM

Überladen und Überschreiben

  • Konstruktoren überladen
  • Methoden überladen
  • this., this(), super., super()
November 25, 2021, 2:15 PM
  • Beispiel für Komponentenbildung mit Vererbung.
  • KnopfLogik mit Unterklassen und Dialog
  • abstrakte Klasse
November 23, 2021, 11:45 AM
Vererbung
November 18, 2021, 2:15 PM

Arrays (Reihungen)

  • Die TicTacToe Klasse mit zweidimensionalen Array: TTT.java
November 16, 2021, 11:45 AM
Rekursion
November 11, 2021, 2:15 PM
  • Schfeifen mit break und continue
  • switch-Anweisung
  • switch-Asudrücke
November 9, 2021, 11:45 AM
Anweisungen:
  • if Anweisung
  • Schweilfe
    • while Schleife
    • do while Schleife
    • for Schleife
  • v20211109.jshell
November 4, 2021, 2:15 PM
  • Überblick Methoden
  • statische vs Objektmethoden
  • Seiteneffekte
  • void-Methoden
  • v20211104.jshell
November 2, 2021, 11:45 AM
  • Methoden in Klassen. Skript Kapitel 2.1
  • Der this-Bezeichner
  • Methoden der Klasse String
  • v20211102.jshell

 

October 27, 2021, 2:15 PM
Modellieren und Schreiben von Klassen.
  • Im Skript S.40-51.
  • erste Klasse schrittweise  mit der Jshell entwickelt
  • v20211028.jshell
October 26, 2021, 11:45 AM
  • Ausdrücke mit Operatoren
  • primitive Datentypen: byte, short, int, long, float, double, boolean
  • Compilieren und Starten auf der Kommandozeile

Im Skript Kapitel 1.3.3 und 1.4.

October 21, 2021, 2:15 PM
  • erste Berechnungen mit der Jshell
    v20211021.jshell
  • Compiler und Interpreter
  • erste Methode geschrieben