Programmieren, WS18/19, Vorlesung Karlsruher Institut für Technologie (KIT)
-
- Bildung
– Objekte und Klassen
– Typen, Werte und Variablen
– Methoden
– Kontrollstrukturen
– Rekursion
– Referenzen, Listen
– Vererbung
– Ein/-Ausgabe
– Exceptions
– Programmiermethodik
– Implementierung elementarer Algorithmen (z.B. Sortierverfahren) in Java
Literaturhinweise:
P. Pepper, Programmieren Lernen, Springer, 3. Auflage 2007
Weiterführende Literatur
B. Eckels: Thinking in Java. Prentice Hall 2006
J. Bloch: Effective Java, Addison-Wesley 2008
Vorlesungsaufzeichnung: KIT | WEBCAST: http://webcast.kit.edu
-
- video
14: Programmieren, Vorlesung, WS 2018/19, 06.02.2019
14 |
0:00:00 Start
0:00:19 Überblick heute
0:00:46 Vorlesungsüberblick
0:01:15 Vom Programm zur Maschine
0:02:27 Lernziele heute
0:03:59 Motivation
0:06:08 Halde (engl. heap)
0:07:46 Kellerspeicher
0:10:57 Wdh.: Variablen und Speicher
0:13:54 Wdh.: Mehtoden im Aufrufstapel
0:14:54 Speichereinteilung
0:22:31 Bedingte Sprünge - Verzweigung
0:28:02 Best Practises
0:28:14 Lernziele heute 2
0:29:43 Prinzipien des guten Programmierens
0:32:08 Prinzip 1 - Polymorphie >> instanceof
0:39:20 Prinzip 2 - Unterscheidung == und equals()
0:46:50 Prinzip 3 - Standardimplementierung von equals() überschreiben
1:03:18 Prinzip 4 - Vorsicht bei Implementierung von equals()
1:05:03 Prinzip 5 - super.equals() verwenden
1:10:37 Prinzip 6 - Vorsicht bei instanceof in equals()
1:15:53 Ausblick -
- video
13: Programmieren, Vorlesung, WS 2018/19, 30.01.2019
13 |
0:00:00 Start
0:00:13 Überblick
0:02:23 Zerteilen (engl. parsing)
0:08:53 Top-Down Parsing
0:12:28 Recursive Descent Parser: Hilfsfunktionen
0:17:01 Zusammenfassung Parsen
0:17:40 Suchen
0:18:05 Lineare Suche
0:21:14 Binäre Suche
0:27:19 Sortieren
0:27:45 Bubblesort
0:33:49 Selectionsort
0:36:44 Insertionsort
0:44:47 Zusammenfassung
0:45:12 Objekt-orientierte Design-Prinzipien
0:45:50 Überblick
0:46:26 Prinzip 1 - Datenkapselung
0:49:59 Prinzip 2 - Bevorzuge Komposition gegenüber Vererbung
1:01:22 Prinzip 3 - Programmiere gegen Schnittstellen und nicht gegen eine Implementierungen
1:03:17 Prinzip 4 - Open Closed Prinzip
1:09:57 Prinzipien für den Schnittstellenentwurf
1:10:37 Gute Schnittstellen
1:12:37 Trennung von Befehl und Anfrage
1:14:19 Schlechte Abstraktion
1:15:20 Bessere Abstraktion
1:15:40 Klassen und Schnittstellen auftrennen
1:17:29 Abstrakionsniveau
1:18:36 Wahl von Methodennamen
1:21:05 Zusammenfassung
1:21:29 Weiterführende Literatur -
- video
12: Programmieren, Vorlesung, WS 2018/19, 23.01.2019
12 |
0:00:00 Start
0:00:39 Vorlesungsüberblick
0:01:04 Lernziele heute
0:03:19 Software-Katastrophen
0:15:52 Testen: Vorgehen
0:16:42 Beispiel: Klassifikation Dreiecke
0:22:07 Kriterien für gute Testfälle
0:24:19 Definition: Testen
0:29:15 Kategorien von Tests
0:31:59 Schwierigkeit von Tests
0:34:11 Testselektion
0:35:38 Testende
0:36:54 Teststrategien
0:37:56 Testgetriebene Entwicklung
0:39:54 Refactoring
0:41:49 Statische Analyse
0:43:45 Assertions
0:44:59 Zusicherungen
0:47:58 Zusicherungen in Java
0:49:38 Vor-/Nachbedingungen, Invarianten
0:50:40 Beispiel Invariante
0:51:56 Assertion oder If-Abfrage
0:53:21 JUnit: Übersicht
0:55:03 Beispiel: JUnit 4
0:55:52 Struktur/Terminologie von JUnit
0:56:47 JUnit: Testfall
0:57:15 Test-Urteil
0:58:19 JUnit: Assertions
1:00:42 Text-Fixture
1:03:11 Test-Suiten
1:04:09 Parametrisierte Tests
1:08:43 Ausführen von Tests
1:10:30 Test-Runner in Eclipse
1:11:27 Zusammenfassung -
- video
11: Programmieren, Vorlesung, WS 2018/19, 16.01.2019
11 |
0:00:00 Starten
0:00:06 Begrüßung
0:00:23 Überblick
0:00:42 Vorlsesungsüberblick
0:01:32 Rekursion
0:03:05 Motivation
0:09:42 Rekursive Methode
0:12:09 Beispiel
0:15:57 Binomialfunktion
0:22:01 Methoden im Aufrufstapel
0:30:26 Rekursion vs. Iteration
0:34:31 Beispielaufgabe
0:39:54 Rekursion Zusammenfassung
0:42:14 Finden und Beheben von Fehlern
0:42:53 Vorlesungsüberblick
0:43:21 Lernziele
0:44:02 Wiederholung: ""Bug""
0:52:00 Debugging
1:02:59 Zwischenfazit
1:03:50 Tipps für die Fehlersuche
1:13:28 Zusammenfassung -
- video
10: Programmieren, Vorlesung, WS 2018/19, 09.01.2019
10 |
0:00:00 Starten
0:00:05 Begrüßung
0:01:27 Semesterplan - Überblick
0:02:38 Lernziele
0:08:46 Interfaces
0:28:56 Aufgaben zu Interfaces
0:32:37 Generics
1:05:09 Java-API
1:24:26 Zusammenfassung -
- video
08: Programmieren, Vorlesung, WS 2018/19, 12.12.2018
08 |
Aus technischen Gründen konnte die Vorlesung:
Programmieren | 08 | Vorlesung | 12.12.2018 (WS 2018/19)
Prof. Dr. Ralf H. Reussner
Karlsruher Institut für Technologie (KIT)
Institut für Programmstrukturen und Datenorganisation
nicht aufgezeichnet werden.
Die nachfolgende Vorlesungsaufzeichnung des vergangenen Jahres (08, Programmieren, Vorlesung, 20.12.2017, WS 2017/18) behandelt aber einige inhaltliche Aspekte.
Bitte beachten Sie, dass die organisatorischen Inhalte nicht stimmen und die Folien nicht identisch sind.
0:00:00 Start
0:00:23 8. Vererbung
0:02:16 Vorlesungsüberblick: Objekt-orientiertes Programmieren in Jav
0:03:14 Lernziele heute
0:04:20 Einführendes Beispiel
0:07:28 Konzept der Vererbung (I)
0:09:03 Konzept der Vererbung (II)
0:11:26 Vererbung in Java
0:15:15 Beziehung zwischen Ober- und Unterklasse
0:17:38 Beispiel Verebung in Java
0:21:50 Jetzt sind Sie gefragt: Vererbung
0:22:39 Lösung: Vererbung
0:23:29 Überschreiben von Methoden
0:26:30 Dynamische Bindung
0:28:35 Dynamische Bindung – Defintion
0:33:32 Dynamische Bindung – Beispiel (I)
0:35:24 Dynamische Bindung – Beispiel (II)
0:38:33 Dynamische Bindung
0:41:31 Dynamische Bindung vs. Fallunterscheidung
0:43:24 Jetzt sind Sie gefragt: Dynamische Bindung
0:48:25 Dynamische Bindung: Lösung
0:51:32 Überschreiben von Attributen
0:54:56 Das Schlüsselwort super
0:57:30 Konstruktoren
0:59:35 Sichtbarkeit und Modifier
1:00:53 Jetzt sind Sie gefragt: Attribute und Methoden
1:03:26 instanceof
1:04:54 Typ-Umwandlungen (type casts)
1:07:05 Up- und Down-Casts
1:09:02 Die Klasse object
1:10:47 Auszug Java-Klassenhierarchie
1:12:58 Inhaltliche Gleichheit: equals (object obj)
1:16:57 Grenzen der Vererbbarkeit: final
1:18:28 Abstrakte Klasse
1:21:14 Zusammenfassung
1:23:07 Debugging