Prog2 Live Coaching

Aktueller Status
Nicht eingeschrieben
Preis
 

Am Anfang des Semester sind hier noch nicht viele Lektionen, es wird aber jede Woche mehr. Komm mit dazu, solange der Kurs noch günstig ist!

Kurs Inhalt

Einführung
Einführung


Inhalte:
Termine
Vererbung - Theorie


Inhalte:

02:17 Methoden und Attribute
03:20 Beispiel Zugriff in Hierarchie
04:22 protected
06:06 Verständnisfrage - wie kann man den Zugriff ermöglichen?
10:51 Überschreiben
12:43 Verständnisfrage - was wird ausgegeben?
14:00 instanceof
15:18 Verständnisfrage - was wird ausgegeben?
16:30 Auflösung
18:22 super
20:36 super - Beispiel 2 - Konstruktorkaskade
21:45 Verständnisfrage - super erforderlich?
23:34 super - weitere Regeln
24:42 super - wann brauchen wir es?
26:13 Polymorphie
26:42 Verständnisfrage - was wird bei f.reisen() ausgegeben?
28:48 Verständnisfragen - was würde ausgegeben werden?
29:30 Beispiel mit Vererbung und Arrays
29:57 was wird ausgegeben?
30:30 Verständnisfragen - was ist der Datentyp?
31:55 Frage: jede Klasse erbt von Object …
32:38 Start Übungsaufgabe "Vererbung Schreibtisch 15" - siehe Materialien

Vererbung - Aufgabe


Inhalte:


Ab 5:33 wird die Lösung besprochen (vorher gibt es Fragen zur Aufgabenstellung und Hinweise zur Bearbeitung)

Interfaces


Inhalte:


Ablauf allgemein in diesem Termin: Interfaces, (ab hier nächstes Video) abstrakte Klassen, Besprechung der Aufgaben, Start Exceptions

01:10 Interfaces Theoriestart
04:34 interfaces und Vererbung gemeinsam
06:45 Benutzung von Interface-Beziehungen im Code
08:44 mit Arrays
10:20 in einer for-Schleife
12:00 Markerinterface
13:10 Vererbung bei Interfaces
14:54 Aufgabe "Zaehlbar Metallbalken"
16:04 Aufgabe "Bebaubar"
16:29 ab hier Anmerkungen zu den Lösungen zur Aufgabe "Zaehlbar Metallbalken"
21:05 Besprechung Lösung "Zaehlbar Metallbalken"

Abstrakte Klassen und Start Exceptions


Inhalte:


00:50 Start Theorie
02:33 Abstrakte Methoden
03:48 erben von abstrakten Klassen
05:10 Implementierung in der Unterklasse
06:30 Abgrenzung interfaces und abstrakte Klassen
08:38 Besprechung Lösung der Teilnehmer zur Aufgabe "Bauteile"
11:53 Lösungsvorschlag wird erklärt
14:00 Besprechung Lösung der Teilnehmer zur Aufgabe "Geschenke"
16:39 Hinweis für das einfache Bearbeiten von Aufgaben
17:00 Lösungsvorschlag wird erklärt (ist hier wirklich alles gut?)
19:30 packages und default-Zugriffsmodifizierer
22:58 Exceptions Start
23:06 selbst mal ausprobieren!
25:27 Fall 1 - try catch
27:33 catch-Blöcke
28:10 allgemeiner Hinweis
29:08 Überprüfungsreihenfolge
33:18 keine catch-Blöcke mehr übrig? Weiter in der übergeordneten Methode
35:04 Aufgabe Blockreihenfolge A
36:30 Auflösung

Exceptions und Generische Datentypen


Inhalte:


00:35 Vorwort zu Fall 2 mit checked und unchecked Exceptions
02:30 Fall 2 - propagieren mit throws
07:50 Fall 3 - throw und eigene Exceptions
11:52 finally
13:39 Exceptionshierarchie (Vererbungshierarchie)
15:25 Upcast - Downcast (Start mit Upcast)
18:13 Downcasts
20:15 Bemerkung zu diesem Thema allgemein - lieber Polymorphie verwenden
21:12 Generische Klassen - Was ist das überhaupt?
25:50 Zweites Beispiel
29:20 Wofür überhaupt das alles?
30:20 Typparameter niemals direkt Standarddatentypen -> Wrapperklassen verwenden
32:15 Überlegung: Klasse für Arrays
34:23 Instanziierung einer generischen Klasse - Verwendung der Diamond-Operators
34:45 Beispielklasse Paar
37:30 Einschränkungen für Typparameter
38:28 Frage an die Teilnehmer: was sollte gehen und was nicht?

Generische Datentypen Teil 2


Inhalte:

00:00 Auflösung der Frage
03:26 Frage an die Teilnehmer: Klassenkopf sinnvoll?
06:38 Generische Methoden
07:24 Arrays von generischen Datentypen
09:42 Generische Interfaces
11:23 Wofür das Ganze?
13:10 Besprechung der Lösungen der Teilnehmer zu Beheizbar
16:05 Lösungsvorschlag wird gezeigt
16:58 Besprechung der Lösungen der Teilnehmer zu Bebaubar
18:53 Besprechung der Lösungen der Teilnehmer zu Stapelbar
28:01 Knackpunkt wird gezeigt
33:40 Besprechung der Lösungen der Teilnehmer zu Blockreihenfolge B
34:20 Lösung wird besprochen

Streams - Grundlagen


Inhalte:


01:00 Frage wegen Visitor-Pattern
01:48 Start Streams
02:04 Streamkategorien
04:13 Aufgabe für die Teilnehmer: Streamaufgaben in Kategorien einordnen
10:10 Typen von Dateien - Textdokumente vs. binäre Dokumente
12:33 Vorlagen für Streamkategorien - Textdateien lesen mit FileReader und BufferedReader
13:20 Erwähnung try-with-resources - mehr Infos hier: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
15:54 Textdateien schreiben mit FileWriter und BufferedWriter
18:00 Textdateien schreiben live Testing
19:16 Frage eines Teilnehmers: neuen Text speichern - wird überschrieben?
19:45 So wird hinten angefügt - zweiter Konstruktorparameter von BufferedWriter: true
20:24 Double und andere Basisdatentypen lesen mit FileInputStream und DataInputStream
20:34 Eigene Instanzen lesen mit FileInputStream und ObjectInputStream, Serializable, EOFException, transient
26:08 Eigene Instanzen schreiben mit FileOutputStream und ObjectOutputStream
27:23 Bytes lesen mit FileInputStream
30:24 Bytes schreiben mit FileOutputStream
30:48 Lesen von der Konsole mit InputStreamReader und BufferedReader (ähnlich wie Scanner)
32:30 Zusammenfassung Streams

Streams - Aufgabe Textstreams und Lösungen


Inhalte:


00:00 Start Aufgabe Matrikelnummern sortieren
01:06 Erklärung der Schlüsselpunkte der Aufgabe und Lösungsmöglichkeiten
05:28 Start Bearbeitung der Teilnehmer
06:35 Ergänzung Aufteilung der Matrikelnummern
08:26 Besprechung Teillösungen
12:43 Besprechung Lösungen der Übungsaufgaben
13:10 Besprechung Lösung der Teilnehmer zu Quadrupel
22:50 Besprechung Lösungsvorschlag zu Quadrupel
24:22 Besprechung Lösung Blockreihenfolge C
28:12 Allgemeine Hinweise zu Lektionen und Aufgaben
29:15 Dreieck Aufgabe - hast du sie gemacht? Die Lösung gibt es nächstes Mal.

Streams - Aufgaben


Inhalte:


01:23 Besprechung Lösungsvorschläge der Teilnehmer zu Matrikelnummer sortieren
03:45 Hinweise zu geschweiften Klammern
07:30 Beispiel try-with-resources
09:20 Besprechung Lösungsvorschläge der Teilnehmer zu Positionsbytes
17:43 Besprechung Lösung zu Positionsbytes
19:07 Besprechung Lösungsvorschläge der Teilnehmer zu Textstudenten
28:00 Besprechung Lösung zu Textstudenten
29:20 split und Umwandlung von Text in eine Instanz von Student
30:25 static - Klassenmethoden Erwähnung

Decorator und Comparable


Inhalte:


00:14 Start Decorator
01:40 Beispielaufruf
02:56 Decorator für Textstreams
07:33 Decorator für Bytestreams
14:00 Woher weiß man, wann man Decorator in der Klausur braucht?
15:41 Start Comparable
16:28 Aufruf der Sortierung
17:20 Wann braucht man Comparable?
17:55 Anpassung der Klasse für die Verwendung von Comparable (Implementierung von Comparable) - einzige wichtige Punkte
20:25 Vorgehen bei mehreren Attributen
22:16 Durchführung des Vergleichs von Attributen bei verschiedenen Datentypen
25:28 Absteigend sortieren
25:50 Kein Sortierverfahren selbst programmieren!
26:25 Tipps für die Bearbeitung von Aufgaben
27:42 Start Aufgabe nach Fakultät sortieren
32:25 Anmerkung zur Priorisierung von Attributen bei der Sortierung
33:12 Anmerkung zu return 0

Collections - Einführung


Inhalte:


00:00 Streams fortgeschrittene Themen (ByteArrayInputStream, ByteArrayOutputStream)
05:20 Streams fortgeschrittene Themen (InputStreamReader)
07:30 Streams fortgeschrittene Themen (OutputStreamWriter) mit TestOSW.java
10:00 Collections Einführung (List, Map, Set)
18:20 Einführungsbeispiele Stufe 1 - ArrayList
19:48 Einführungsbeispiele Stufe 1 - HashMap
22:08 Einführungsbeispiele Stufe 1 - HashSet
24:35 Collections wichtige Methoden (nur Namen)
28:30 Beispiele Stufe 2 - ArrayList
29:52 Beispiele Stufe 2 - HashMap
36:00 Beispiele Stufe 2 - HashSet

Beispiellektion
Collections - Übung


Inhalte:


00:00 Aufgabe "Einstieg Welche Datenstruktur"
09:20 Start praktisches Beispiel auf Basis der Teilaufgabe e
12:35 Aufbau der einzulesenden Datei
21:35 Code Beispiel läuft
23:35 Code Beispiel ohne Spam
25:40 Besprechung Übungsaufgaben - Messwert
28:18 komplette Musterlösung
29:41 Besprechung Lösung "Bytes mit EOF"
32:50 Besprechung Lösung "Instanzen mit null"
34:35 Besprechung "Decorator Doppelbytes"
40:13 Besprechung "Decorator Header"
42:20 Besprechung Lösung "Decorator Header"

Iterator


Inhalte:


00:45 Collections abschließen (Stufe 3)
03:30 Collections abschließen (Stufe 4)
04:28 Beispiel (Stufe 4)
06:25 Thema Iterator
11:17 Iterator selbst implementieren - Beispiel Zufallsfolge
16:30 Iterator selbst implementieren - Beispiel ArrayPlusZwei
20:00 Iterator selbst implementieren - Beispiel StreamIterator (Textdatei lesen)
21:50 Wann ist es sinnvoll, Iterator zu benutzen?

Iterator Aufgabe und Übungen


Inhalte:


00:25 Besprechung "Auto Hashmap"
03:00 Testklasse für Auto Hashmap
05:30 Besprechung "ArrayList Index ausgeben"
10:14 verbesserte Lösung wird gezeigt
10:53 Lösungsvorschlag wird gezeigt
11:55 Besprechung "Ergebnis ausgeben"
15:13 Lösungsvorschlag wird gezeigt
19:47 Besprechung "Texteditor"
22:45 Lösungsvorschlag wird gezeigt
24:24 Aufgabe "GebäudeIterator" gemeinsam lösen

JUnit und Unit Testing


Inhalte:


00:25 JUnit
03:18 Wie verwendet man JUnit? Inklusive Installationshinweise der Teilnehmer
06:30 Annotations
08:18 Wichtige Methoden
09:13 Ausführlicheres Beispiel Glas und GlasTest
14:57 Warum das ganze?
16:45 Aufgaben zu JUnit - was muss man beachten?
19:30 Beispielaufgabe (Test zur Messwert-Aufgabe)
31:00 Alternative für die Prüfung, ob das Ergebnis stimmt (noch zur Aufgabe)

Innere Klassen und Übungen


Inhalte:


00:00 Start - Innere Klassen
01:57 Außerhalb der Klassen
03:05 Anonyme innere Klassen
08:00 Zwischenfrage: kann man das mehrmals hintereinander machen?
12:45 Einschränkungen für anonyme innere Klassen
14:20 Besprechung "Füllwörter entfernen"
15:46 Tipps zur weiteren Bearbeitung der Aufgabe, weil die Teilnehmer noch keine Lösung wollten
18:05 Besprechung "Tische im Raum"
22:45 Besprechung "Count Elements"
28:15 Besprechung "Verkettete Liste zurückgeben"
35:06 Wünsche für neue Aufgaben?

Beispiellektion
Threads


Inhalte:


01:00 Start Threads
02:23 Beispiel Code 2 (mit extends Thread) inkl. Thread.sleep, InterruptedException
03:25 Zwischenfragen (Wiederholung Methoden und static bzw. Klassenmethoden)
05:04 Ende Wiederholung
06:00 Beispiel Code 3
07:28 Zwischenfrage: was gibt das parallele Programm aus?
10:20 Grafik mit Zeitstrahl des Ablaufs
13:05 join bei Threads in Java
15:01 Zustände eines Threads (Übersicht der wichtigsten Infos)
16:51 Beispiel mit thread.stop() während des Schlafens (bei den Materialien als Datei "Thread mit stop.java")
20:05 Threads und anonyme innere Klassen
26:20 Frage zu Threads mit Streams
28:51 Besprechung Lösungsvorschläge "Füllwörter"
32:48 Test der Lösung

Übungen (Collections, Iterator, Streams, Comparable)


Inhalte:


00:00 Fortführung der Besprechung von "Füllwörter"
03:53 Besprechung Musterlösungsvorschlag
04:29 Besprechung Lösungsvorschläge "Zufallszahlen bis 100"
15:56 Test der Lösung
18:15 Besprechung Lösungsvorschläge "Baum schreiben" Teilaufgabe 1
19:50 Besprechung Lösungsvorschläge "Hausnummerbestandteil"
22:44 Ergänzung der Lösung
25:50 Eine Klasse - Zugreifen auf eine andere Klasse, Datentypen, Punkte, Klammern usw. - sehr wichtig!
31:10 Das war der ultimative Comparable-Test!
33:20 Besprechung Musterlösungsvorschlag
34:07 Wünsche?

Builder Pattern, Fluent Interface, Method Chaining


Inhalte:


00:30 Builder Pattern
06:57 Aufgabe Auto Attribute - siehe Materialien für Lösung
09:10 Aufgabe Builder Pattern generieren
36:27 Abschluss Teilaufgaben 1 und 2

Übungen Collections und Threads


Inhalte:

00:00 Besprechung Aufgabe "Baum schreiben" Teilaufgabe 2
03:21 Start Besprechung Aufgabe "hashMapKeyCounter"
03:49 Tipps zur Bearbeitung dieser Aufgabe und allgemein, wie ihr den Kurs besser für euch nutzen könnt!
06:52 Code eines Teilnehmers: Aufgabe "hashMapKeyCounter"
12:55 Lösungsvorschlag wird gezeigt
13:43 Besprechung Aufgabe "yo-Threads"
16:39 Lösungsvorschlag wird gezeigt
18:24 Wünsche?

Visitor Pattern, TCP-Server und Threads


Inhalte:

00:00 Visitor-Pattern relevantes Wissen mit Beispiel DosenCalculatorRunnable.java (inklusive Runnable-Interface)
04:32 Visitor-Pattern Anwendungsfälle (normalerweise)
08:03 Anwendungsfälle in der Klausur - noch eine Beispielklasse (Haus.java)
13:31 Beispiel TCP-Server mit Thread - Vorlage von Teilnehmer und gemeinsame Korrektur
24:30 Frage bzgl. Klausur
35:22 Server läuft und Client bekommt richtige Werte zurück
38:08 sleep-Anweisung wird eingebaut
38:25 Simulation jetzt sehr deutlich

Übungen Builder Pattern, JUnit


Inhalte:

00:00 Allgemeine Hinweise zum Ausführen von TCP Server bzw. Client (gilt vor allem auch für Eclipse!)
02:05 Besprechung Aufgabe Builder Pattern generieren
03:55 Hinweise zur Bonusaufgabe
05:20 Besprechung JUnit Tests für Tische im Raum
09:15 Wie kommt man darauf, wie Tests geschrieben werden sollen?
10:25 Beispiel für das Testen des Hinzufügens
14:20 Testen von findeTischeMitFarbe
16:05 Besprechung Aufgabe Zeilenumbruch
16:48 Start Hilfestellung für HM alphabetisch rückwärts

Prüfungshinweise, JUnit Übung mit Decorator


Inhalte:

00:25 Eingehen auf Kommentar von Joey
01:30 Prüfungshinweise zu Comparator
10:30 Prüfungshinweise zu Decorator
14:37 Übungsaufgabe JUnit mit Decorator Zeilennummer
18:25 Fertigstellung Vorbereitung des Tests und Ausführung des zu testenden Codes
21:40 Abschluss erste Testmethode - und Start Beispiel mit BeforeEach (Before in JUnit 4)
30:45 Weitere Ideen für Tests zu dieser Aufgabe

Übungen Collections, JUnit, Decorator


Inhalte:

00:15 Allgemeine Hinweise JUnit für die Prüfung
02:56 Besprechung HM alphabetisch rückwärts
03:35 Lösung wird gezeigt
05:06 Besprechung Indizes entfernen ArrayList (mit JUnit)
11:19 Besprechung Halbe Zeilen lesen
14:10 Frage allgemein: woran sieht man, dass Decorator nötig wird?
17:02 Halbe Zeilen lesen - JUnit Hinweise

DownloadHandler (Fluent-Interface, Method Chaining) und TreeBesucher (Visitor-Pattern)


Inhalte:

00:42 Erklärung Aufgabe DownloadHandler
04:35 DownloadHandler Teilaufgabe 2
06:42 DownloadHandler Teilaufgabe 3
09:55 DownloadHandler Teilaufgabe 4
13:35 DownloadHandler Teilaufgabe 5
17:36 Erklärung Aufgabe TreeBesucher
24:20 TreeBesucher Teilaufgabe 2

Übungen für die Klausur, Thread mit Logging, Multimap


Inhalte:


00:10 Besprechung hashMapKeyCounter mit JUnit
04:00 Beispiel mit einer Exception in einem JUnit Test und allgemeine Hinweise dazu (vor allem auch ab 05:00)
07:55 Besprechung Lösung Projektvorlage
10:40 Besprechung JUnit Test zu Projektvorlage (war nicht Teil der Aufgabenstellung, aber ist gut als Übung)
11:31 Besprechung Lösung Comparator
13:08 Besprechung Lösung Integer absteigend sortieren
13:50 Allgemeine Frage für die Prüfung: Comparable oder Comparator?
15:23 Besprechung TCP Server - Logging Mechanismus
23:05 Zwischenfrage: wie läuft das in der Prüfung mit Exceptions?
24:08 Weitere Hinweise für die perfekte Vorbereitung
26:00 Frage zu Multimap
28:15 Beispiel Multimap

6 Kommentare zu „Prog2 Live Coaching“

  1. Hallo Ronny,

    gerade habe ich erfahren, welche Bereiche laut Professor in diesem Semester als besonders relevant in diesem Semester gelten.
    Falls du Zeit und Lust hast könntest du vielleicht noch folgende Bereiche mit Übungen untermauern:

    Junit : (100% => laut seiner Aussage garantiert er, dass Tests drankommen)
    Maps ( sehr wichtig)
    Comparator und Comparable ( wichtig)
    „Man muss Sockets nicht aufbauen, aber man muss damit umgehen können“
    Method Chaining (kann drankommen)

    Ein anderer Vorschlag aus meiner Seite:
    Wie wäre es, wenn wir eine Aufgabe „aufblähen“ lassen und Sie Schritt für Schritt komplexer gestalten? (z.B. unterschiedliche
    Exceptions bzw. mit anderen Themen kombinieren) oder das wir einen weiteren Blick auf ObjectStream und ByteStream werfen?

    Viele Grüße !

    1. Hallo Joey,

      das sind natürlich spannende Infos! Vor dem gestern entstandenen Video hab ich leider nicht nach Kommentaren geschaut, aber nächstes Mal gehe ich auf Deine Ideen ein. Siehe auch die neuen Aufgaben (in wenigen Stunden alles online)!

      Viele Grüße,
      Ronny

  2. Ich habe eine Frage zur Aufgabe Messwert (Comparable):
    Die Aufgabe und die Ausgabenstellung unterscheiden sich.
    Unabhängig davon werden in der Lösung boolean, double und int Werte innerhalb der Methode

    public int compareTo(Messwert b) {

    miteinander verglichen. Muss man hier nicht für die unterscheidlichen Typen jeweils eine extra Methode machen?

    -public boolean compareTo(Messwert b){
    -public double compareTo(Messwert b){
    -public int compareTo(Messwert b){

    Danke

    1. Hi Sebastian,
      es geht um die Lektion https://progcoaching.de/lektion/decorator-und-comparable/ nehme ich an? Die Lösung gibt es ja zwei Lektionen später.
      Aufgabe und Lösung unterscheiden sich, weil es heißt, man soll die Sortierweise für die Klasse implementieren. Dafür muss die Klasse geändert werden.
      Wegen dem Vergleich den Typen: sieh dir nochmal das Dokument zum Thema Comparable an. Die Lösung passt.
      Wenn man die einzelnen Attribute vergleicht, gibt es für jedes Attribut einen kleinen Block in der compareTo-Methode. […]
      Wenn alle Blöcke geschrieben sind, schreibt am Ende der Methode noch ein return 0; und ist fertig.

      Viele Grüße,
      Ronny

Schreibe einen Kommentar