Programmieren, WS 2015/2016, gehalten am 27.01.2016, Vorlesung 12
12: Vorlesung |
0:00:00 Starten
0:00:10 Der Begriff ""Bug""
0:03:44 Failure-Fault-Defect-Error-Bug
0:06:11 Debugging
0:07:20 Schritte der klassischen wissenschaftlichen Methode
0:11:08 Wissenschaftliche Methode angewendet auf Debugging
0:13:02 Debugging-Stabilisierung des Fehlers
0:17:59 Tipps für Fehler
0:35:15 Syntaxfehler
0:38:17 Zusammenfassung
16 February 2016, 8:55 am
47 minutes 5 seconds
Programmieren, WS 2015/2016, gehalten am 10.02.2016, Vorlesung 14
14: Vorlesung |
0:00:00 Starten
0:01:20 Bvorzugte Polymorphie gegenüber instanceof
0:01:50 Beispiel für schlechtes Design
0:05:28 Beispiel für ein geeignetes Design
0:07:20 Prinzip 2: Unterscheidung zwischen == und equals
0:07:30 Häufige Fragen
0:07:33 Beispiel
0:10:21 == vs. equals
0:10:29 Weiteres Beispiel
0:13:46 Prinzip 3: Die Standardimplementierung von equals überschreiben
0:14:54 Beispiel
0:17:11 Implementierung der equals-Methode
0:17:29 Abhilfe durch eigene Implementierung
0:21:07 Probleme der vorherigen Implementierung
0:24:16 Mögliche Lösungsideen
0:26:11 Beispiel - MyStringBuffer
0:28:52 Beispiel - Golfball
0:30:05 Prinzip 4: Vorsicht bei der Implementierung von equals
0:30:10 Wichtige Fragen bei der Implementierung
0:31:01 Prinzip 5: super.equals verwenden
0:31:12 Vererbung und equals
0:31:28 Beispiel für einen fehlerhaften Code
0:33:19 Lösung
0:34:10 Alternative Lösung
0:35:29 Mehrere Ebenen in der Vererbungshierarchie
0:36:19 Prinzip 6: Vorsicht bei der Verwendung von intanceof in equals
0:36:41 Vergleich der Objekte
0:38:22 Motivierendes Beispiel für Verhaltensänderung
0:42:18 Zusammenfassung
0:43:46 Was noch fehlt
15 February 2016, 8:34 am
1 hour 17 minutes
Programmieren, WS 2015/2016, gehalten am 03.02.2016, Vorlesung 13
13: Vorlesung |
0:00:00 Starten
0:01:31 Motivation
0:03:20 Halde
0:06:54 Stapelspeicher
0:08:22 Einsatz des Stapelspeichers
0:12:21 Speichereinstellung
0:13:24 Einteilung des Datenbereichs
0:14:01 Sprünge
0:18:52 Kopfgesteuerte Schleife
0:19:28 Adressierung durch 3 Basisadressen
0:20:28 Laufzeitkeller
0:22:43 Schritte beim Aufruf einer Methode
0:23:44 Schritte beim Verlassen der Methode
0:26:20 Best Practices
0:27:07 Prinzip 1: Bevorzuge Polymorphie gegenüber instanceof
0:27:40 Beispiel für ein schlechtes Design
0:31:14 Beispiel für ein geeignetes Design
0:32:31 Prinzip 2: Unterscheidung zwischen == und equals
0:32:59 Beispiel
0:34:53 == vs. equals
0:35:58 Weiteres Beispiel
0:37:58 Prinzip 3: Die Standardimplementierung von equals überschreiben
0:38:07 Beispiel
0:39:55 Implementierung der equals-Methode
0:42:04 Abhilfe durch eigene Implementierung
0:44:49 Probleme der vorherigen Implementierung
0:45:47 Mögliche Lösungsideen
0:47:35 Beispiel - MyStringBuffer
0:51:26 Beispiel - Golfball
0:52:15 Mögliche Lösungsidee Nr. 4
0:53:47 Prinzip 4: Vorsicht bei der Implementierung von equals
0:55:19 Prinzip 5: super.equals verwenden
0:56:16 Beispiel für einen fehlerhaften Code
0:59:28 Lösung
1:00:28 Alternative Lösung
1:02:05 Mehrere Ebenen in der Vererbungshierarchie
1:03:26 Prinzip 6: Vorsicht bei der Verwendung von instanceof in equals
1:03:40 Vergleich der Objekte
1:06:34 Motivierendes Beispiel für Verhaltensänderung
1:07:22 Beispiel für instanceof in equals
1:10:13 Zusammenfassung
1:11:34 Software-Technik
1:15:57 Was noch fehlt
11 February 2016, 1:20 pm
1 hour 17 minutes
Programmieren, WS 2015/2016, gehalten am 20.01.2016, Vorlesung 11
11: Vorlesung |
0:00:00 Starten
0:00:10 Gliederung ""Was erwartet Sie heute?""
0:01:18 Zerteilen (engl. ""parsing"")
0:03:49 Beispiel: Taschenrechner
0:05:42 Beispiel: Taschenrechner: Parsebaum
0:06:33 Top-Down Parsing
0:08:12 Recursive Descent Parser: Hilfsfunktionen
0:09:50 Rekursiver Abstieg: Umsetzung Regeln
0:12:08 Zusammenfassung Parsen
0:13:42 Suchen
0:14:03 Lineare Suche
0:14:45 Lineare Suche - Implementierung
0:16:13 Lineare Suche - Visualisierung
0:17:34 Binäre Suche
0:18:47 Binäre Suche - Implementierung
0:20:33 Binäre Suche - Visualisierung
0:22:26 Sortieren
0:22:57 Bubblesort
0:24:05 Bubblesort - Implementierung
0:24:56 Bubblesort - Beispiel
0:25:56 Bubblesort: Zitat
0:26:44 Bubblesort: Animation
0:27:20 Selectionsort
0:28:30 Selectionsort - Implementierung
0:29:09 Selectionsort - Beispiel
0:30:03 Selectionsort: Animation
0:30:27 Insertionsort
0:31:12 Insertionsort - Implementierung
0:31:59 Insertionsort - Beispiel
0:33:09 Video: The Sound of Sorting
0:35:09 16 Objekt-orientierte Design-Prinzipien
0:35:14 Prinzipien für objekt-orientiertes Design
0:36:25 Prinzip 1: (Datenkapselung) Minimiere die Zugriffsmöglichkeiten auf Klassen und Attribute
0:36:40 Datenkapselung (Information Hiding)
0:37:43 Vorteile Datenkapselung
0:39:56 Prinzip 2: Bevorzuge Komposition gegenüber Vererbung
0:40:02 Komposition
0:41:06 Vorteile/Nachteile Komposition
0:42:55 Vererbung
0:43:24 Vorteile/Nachteile Vererbung
0:44:42 Beispiel Komposition vs. Vererbung
0:48:51 Beispiel mit Komposition
0:51:18 Prinzip 3: Programmiere gegen Schnittstellen und nicht gegen eine Implementierung
0:51:25 Vorteile/Nachteile Interfaces
0:52:27 Beispiel Interface
0:53:52 Prinzip 4: (Open-Closed Principle) Software-Komponenten sollten offen für Erweiterung, aber geschlossen für Änderung sein
0:55:21 Beispiel OCP
0:58:38 OO-Design-Prinzipien
1:01:17 Ausgewählte Prinzipien für den Schnittstellenentwurf
1:02:38 Gute Schnittstellen
1:04:01 Schnittstellenentwurf für Kapselung/Wiederverwendbarkeit
1:05:55 Trennung von Befehl und Anfrage
1:08:57 Schlechte Abstraktion
1:10:09 Bessere Abstraktion
1:10:35 Auftrennung von Klassen und Schnittstellen
1:11:14 Gemischtes Abstraktionsniveau
1:12:12 Konsistentes Abstraktionsniveau
1:12:36 Wahl von Methodennamen
1:15:34 Zusammenfassung der Vorlesung
26 January 2016, 1:10 pm
1 hour 27 minutes
Programmieren, WS 2015/2016, gehalten am 13.01.2016, Vorlesung 10
10: Vorlesung |
0:00:00 Starten
0:02:34 Motivation: Divide and Conquer
0:06:57 Rekursion
0:07:36 Rekursive Methoden
0:08:42 Beispiel: Fakultätsfunktion
0:11:09 Binomialfunktion
0:13:45 Binomialfunktion mit Caching
0:14:51 Rekursion - Zusammenfassung
0:15:46 Rekursion vs. Iteration
0:17:07 Die Kochsche Schneeflockenkurve
0:18:55 12 Java API
0:19:58 Java API
0:23:02 Das Java Collections Framework
0:24:32 Das Interface Collection<E>
0:27:24 Exkurs: Wildcards in generischen Typen
0:28:41 Exkurs: Kovarianz / Invarianz
0:34:26 Sub-Interfaces von Collection<E>
0:35:39 Das Interface Map<K,V>
0:36:52 Map<K,V>: Beispiel
0:37:52 Die Klasse Collections
0:39:28 Das Paket java.io
0:40:28 Ein-und Ausgabe in Java
0:43:33 13 Testen und Assertions
0:44:36 Softwarefehler (""Bugs"")
0:46:21 Berühmte Software-Fehler
0:49:36 Software-Fehler
0:54:12 Beispiel: Klassifikation Dreiecke
0:59:19 Kriterien für gute Testfälle
1:00:45 Was Testen ist...
1:03:45 Failure vs. Fault
1:05:14 Failure vs. Fault vs. Error
1:06:10 Beispiel: Failure vs. Fault
1:09:19 Was Testen nicht ist...
1:10:20 Warum Testen so schwierig ist
1:12:32 Testselektion
1:13:09 Wann sind wir fertig?
1:14:56 Teststrategien
1:15:36 Assertions (Geek & Poke)
1:17:11 Zusicherung
1:20:36 Pre- und Postconditions, Invarianten
1:21:30 Beispiel Invarianten
1:22:31 assert oder if-Abfrage?
1:23:50 Statische Analyse
21 January 2016, 9:50 am
30 minutes 6 seconds
Programmieren, WS 2015/2016, gehalten am 16.12.2015, Vorlesung 09
09: Vorlesung |
0:00:00 Starten
0:05:49 Deklarieren von Ausnahmen
0:08:08 Error und Exception
0:10:37 Behandeln von Ausnahmen
0:12:26 Werfen von Ausnahmen
0:14:30 Eigene Exceptions
0:15:06 Verwendung von Exceptions
0:18:06 Faustregeln
0:18:33 Quiz
0:24:19 Frühe Fehlererkennung (""fail fast"")
0:26:54 Schlechtes Beispiel: java.util.Properties
0:28:43 Zusammenfassung Exceptions
18 December 2015, 3:39 pm
1 hour 24 minutes
Programmieren, WS 2015/2016, gehalten am 09.12.2015, Vorlesung 08
08: Vorlesung |
0:00:00 Starten
0:03:46 Debugging
0:06:05 Motovation - Interfaces
0:09:49 Interfaces als Schnittstellenbeschreibung
0:13:58 Interfaces - Syntax
0:17:23 Interfaces - Verwendung
0:19:53 Beispiel - Liste
0:21:10 Interfaces - Übersicht
0:22:29 Abstrakte Klassen vs. Interfaces
0:24:27 Quiz
0:29:31 Motivation - Generische Klassen
0:31:19 Generics - Konzept
0:35:20 Syntax - Polymorphie in Java
0:36:17 Generische Listen
0:41:54 Mehrere Typ-Parameter
0:42:57 Vergleichen von Objekten
0:47:38 Einschränkungen
0:52:09 Wrapper-Objekte, Autoboxing
0:55:14 Generische Methoden
0:59:05 Zusammenfassung
1:01:05 10 Ausnahmebehandlung (Exceptions)
1:01:47 Exceptions: Motivation
1:04:43 Fehlerbehandlung im GOTO-Zeitalter
1:05:47 Fehlerbehandlung - ohne GOTO, kaum besser
1:07:17 Lokale Fehlerbehandlung
1:09:03 Ausnahmen (Exceptions)
1:09:59 Exceptions in Java
1:13:33 Auszug aus der Exception-Hierarchie
1:14:51 Ausnahmebehandlung in Java
1:20:47 Kontrollfluss bei Exceptions
1:23:40 Ausnahmebehandlung
10 December 2015, 1:29 pm
1 hour 20 minutes
Programmieren, WS 2015/2016, gehalten am 02.12.2015, Vorlesung 07
07: Vorlesung |
0:00:00 Starten
0:00:42 Einführendes Beispiel
0:03:43 Konzept der Vererbung (I)
0:06:17 Konzept der Vererbung (II)
0:09:05 Vererbung in Java
0:13:43 Beziehung zwischen Ober- und Unterklasse
0:15:56 Beispiel Vererbung in Java
0:19:24 Überschreiben von Methoden
0:23:45 Dynamische Bindung
0:27:00 Dynamische Bindung - Definition
0:31:25 Dynamische Bindung - Beispiel (I)
0:33:11 Dynamische Bindung - Beispiel (II)
0:37:44 Dynamische Bindung vs. Fallunterscheidung
0:39:01 Überschreiben von Attributen
0:42:56 Das Schlüsselwort super
0:44:04 Konstruktoren
0:47:35 Sichtbarkeit und Modifier
0:48:50 instanceof
0:51:40 Typ-Umwandlung (type casts)
0:52:50 Up- and Down-Casts
0:53:34 Die Klasse Object
0:58:00 Auszug Java-Klassenhierarchie
0:58:37 Inhaltliche Gleichheit: equals (Object obj)
1:02:15 Inhaltliche Gleichheit
1:02:40 Grenzen der Vererbbarkeit: final
1:03:56 Abstrakte Klassen
1:07:36 Quiz
1:19:01 Prinzipien des Objekt-Orientierten Entwurfs
3 December 2015, 3:06 pm
1 hour 30 minutes
Programmieren, WS 2015/2016, gehalten am 25.11.2015, Vorlesung 06
06: Vorlesung |
0:00:00 Starten
0:00:58 Typ-Konvertierung
0:01:00 Widening Primitve Conversions
0:01:16 Narrowing Primitve Conversions
0:01:18 String Conversions
0:01:43 Casting Conversions
0:02:23 Datenkapselung
0:06:49 Datenkapselung: Zugriffsrechte
0:10:39 Zugriffsrechte: Beispiel
0:14:54 Gültigkeit, Lebensdauer von Variablen
0:16:07 Beispeil Gültigkeitsbereich (lokale Variablen)
0:17:46 Gültigkeit
0:18:24 Überschattung
0:21:02 Überschattung: Beispiel
0:23:38 Sichtbarkeit (Visibility)
0:24:03 Pakete (packages)
0:25:48 Mehr zu Paketen
0:28:42 Pakete und Sichtbarkeit
0:29:45 Gleichheit von Objekten
0:33:58 Verwendungsbeispiel: Gleichheit von Objekten
0:35:23 Zusammenfassung
0:37:11 7. Listen und Abstrakte Datentypen
0:37:21 Rekursive Datentypen
0:41:48 Einfach verkettete Listen - Idee
0:43:21 Einfach verkettete Listen in Java
0:44:45 Erstellung einer Liste
0:48:21 Operationen auf Listen
0:50:11 Einfügen von Listenelementen: addFirst
0:51:31 Einfügen von Listenelementen: addLast
0:53:45 Löschen von Listenelementen: remove
0:58:10 Suche nach Listenelementen: contains
0:59:33 Listen als abstrakter Datentyp (ADT) - Prinzip
1:01:45 Listen als ADT - Realisierung
1:03:05 Iteratoren
1:07:17 Implementierung Iterator für Vector2DList
1:09:25 Exkurs: Command / Query-Separation
1:11:48 Exkurs: Command / Query-Separation (2)
1:16:04 Exkurs: Command / Query-Separation (3)
1:17:47 Gesamtstruktur Listenimplementierung in Java
1:19:27 Verwendung der Listenimplementierung
1:20:54 Vergleich Listen - Arrays
1:23:07 Mehr Flexibilität: doppelt verkettete Listen
1:24:58 Implementierung doppelt verkettete Listen
1:25:53 Einfügen von Listenelementen: addLast
1:26:40 Verwendung von Listen: Gerichtete Graphen
1:28:51 Zusammenfassung
30 November 2015, 12:46 pm
1 hour 24 minutes
Programmieren, WS 2015/2016, gehalten am 18.11.2015, Vorlesung 05
05: Vorlesung |
0:00:00 Starten
0:00:37 Wiederholung
0:01:38 Definition Array
0:04:02 Array Deklaration
0:07:10 Deklaration und Initialisierung
0:09:50 Ansprechen von Elementen / Länge von Arrays
0:12:50 Arrays und Schleifen: Beispiele
0:23:43 Quiz
0:27:53 Arrays und Schleifen: Weitere Beispiele
0:34:17 Beispiel: Polygone
0:39:21 Arrays und Schleifen: for-each
0:42:17 Matrizen
0:43:31 Mehrdimensionale Arrays
0:47:44 Beispiel: Sieb des Eratosthenes
0:58:23 Sieb des Eratosthenes optimiert
1:02:07 Generelles zum Optimieren
1:02:27 Mehr zu den Arrays
1:04:16 Mehr zu mehrdimensionalen Arrays
1:05:17 Quiz
1:09:37 Zusammenfassung
1:10:11 6. Konvertierung, Datenkapselung, Sichtbarkeit
1:10:36 Typ-Konvertierung
1:13:30 Widening Primitiv Conversions
1:17:23 Narrowing Primitive Conversions
1:19:41 String Conversions
1:23:04 Casting Conversions
24 November 2015, 3:53 pm
1 hour 26 minutes
Programmieren, WS 2015/2016, gehalten am 21.10.2015, Vorlesung 01
01: Vorlesung |
0:00:00 Starten
0:00:10 Einführung & Vorstellung
0:04:47 Übungsbetrieb
0:10:09 Semesterplan
0:11:31 Bewertungssystem & Prüfungsordnung
0:16:25 Wo kann ich die Aufgaben bearbeiten?
0:24:39 Zusammenfassung: Was Sie als nächstes tun müssen
0:27:36 Organisatorisches
0:34:50 Was ist Programmierung?
0:38:55 Praxis: Übersetzen von Java-Klassen
0:41:48 Praxis: Ausführen von Java-Programmen
0:44:02 Compiler vs. Übersetzer
0:50:25 Just in Time Compilation
1:02:35 Billard-Spiel
1:09:44 Klassen: Der ""Bauplan"" von Objekten
1:21:01 Jetzt sind Sie gefragt: Wir modellieren die Mensa
1:26:30 Zusammenfassung