Programmieren, WS15/16, Vorlesung

Inhalte und Lernziele:

  • 39 minutes 4 seconds
    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
    24 November 2015, 3:28 pm
  • More Episodes? Get the App
© MoonFM 2024. All rights reserved.