Programmieren, WS15/16, Vorlesung
Podcast af Karlsruher Institut für Technologie (KIT)
Denne podcast er gratis at lytte på alle podcastafspillere og Podimo-appen uden abonnement.
Alle episoder
14 episoder12: 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
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
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: 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
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
Tilgængelig overalt
Lyt til Podimo på din telefon, tablet, computer eller i bilen!
Et univers af underholdning på lyd
Tusindvis af lydbøger og eksklusive podcasts
Ingen reklamer
Spild ikke tiden på at lytte til reklamepauser, når du lytter til Podimos indhold.