Discover
Programmieren, WS18/19, Vorlesung
Programmieren, WS18/19, Vorlesung
Author: Karlsruher Institut für Technologie (KIT)
Subscribed: 98Played: 846Subscribe
Share
Description
– 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
– 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
14 Episodes
Reverse
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
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
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
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
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
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
09 |
0:00:00 Starten
0:00:05 09. Ausnahmebehandlung (Exceptions)
0:00:59 Vorlesungsüberblick: Objekt-orientiertes Programmieren in Java
0:01:24 Lernziele
0:01:49 Exceptions: Motivation
0:02:47 Fehlerbehandlung im GOTO-Zeitalter
0:04:19 Fehlerbehandlung ohne GOTO
0:06:06 Lokale Fehlerbehandlung
0:07:33 Ausnahmen (Exceptions)
0:08:41 Exceptions in Java
0:12:52 Auszug aus der Exception-Hierachie
0:16:58 Ausnahmebehandlung in Java
0:21:10 Kontrollfluss bei Exceptions
0:25:24 Deklarieren von Ausnahmen
0:27:28 Error und Exception
0:28:35 Behandeln von Ausnahmen
0:30:52 Eigene Exceptions
0:32:14 Verwendung von Exceptions
0:34:32 Faustregeln
0:37:05 Frühe Fehlererkennung (Fail Fast)
0:39:58 Schlechtes Beispiel
0:41:19 Zusammenfassung Exceptions
0:42:18 Literaturhinweis
0:42:48 10. INTERCAL (Weihnachtsvorlesung)
0:43:29 Einführung in INTERCAL
07 |
0:00:00 Start
0:00:05 Gültigkeit, Lebensdauer von Variablen
0:03:04 Gleichheit von Objekten
0:07:55 Verwendungsbeispiel: Gleichheit von Objekten
0:10:50 Zusammenfassung
0:14:33 7. Listen und Abstrakte Datentypen
0:15:26 Rekursive Datentypen
0:19:39 Einfach verkettete Listen - Idee
0:21:12 Einfach verkettete Listen in Java
0:23:16 Erstellung einer Liste
0:25:21 Operationen auf Listen
0:26:54 Einfügen von Listenelementen: addFirst
0:28:26 Einfügen von Listenelementen: addLast
0:32:19 Löschen von Listenelementen: remove
0:37:11 Suche nach Listenelementen: contains
0:38:18 Listen als abstrakter Datentyp (ADT) - Prinzip
0:43:36 Listen als ADT - Realisierung
0:44:37 Iteratoren
0:49:32 Implementierung Iterator für Vector2DList
0:53:51 Exkurs: Command / Query-Separation
1:03:07 Gesamtstruktur Listenimplementierung in Java
1:05:09 Verwendung der Listenimplementierung
1:06:03 Vergleich Listen - Arrays
1:09:44 Mehr Flexibilität : doppelt verkettete Listen
1:14:24 Implementierung doppelt verkettete Liste
1:15:48 Einfügen von Listenelementen: addLast
1:17:09 Verwendung von Listen: Gerichtete Graphen
1:19:40 Zusammenfassung
06 |
0:00:00 Start
0:00:09 Ploygone erzeugen
0:01:38 Arrays und Schleifen: for-each
0:04:11 Matrizen
0:07:31 Mehrdimensionale Arrays
0:10:09 Beispiel: Sieb des Eratosthenes
0:24:45 Generelles zum Optimieren
0:28:57 Mehr zu Arrays
0:30:51 Mehr zu mehrdimensionalen Arrays
0:32:15 Quiz
0:36:38 Zusammenfassumg
0:37:01 Vorlesungsüberblick: Objekt-orientiertes Programmieren in Java
0:37:51 Literatur
0:38:26 Lernziele
0:39:22 Typ-Konvertierung
0:40:55 Widening Primitive Conversions
0:43:42 Narrowing Primitive Conversions
0:46:46 String Conversions
0:52:04 Casting Conversions
0:52:52 Datenkapselung
0:59:27 Datenkapselung: Zugriffsrechte
1:02:04 Zugriffsrechte: Beispiel
1:04:42 Gültigkeit, Lebensdauer von Variablen
1:05:47 Beispiel Gültigkeitsbereich (lokale Variablen)
1:07:46 Gültigkeit
1:08:11 Überschattung
1:10:23 Überschattung: Beispiel
1:12:14 Sichtbarkeit (Visibility)
1:12:41 Zur Lebensdauer
1:20:57 Pakete
1:22:22 Mehr zu Paketen
1:23:30 Pakete und Sichtbarkeit
05 |
0:00:00 Start
0:00:05 Statische Methoden
0:04:36 Klassen- vs. Objekt-Methode
0:07:24 Lokale Variablen
0:10:17 Parameter als lokale Variablen
0:13:52 Methodenaufrufe und Objektreferenzen
0:18:14 Lokale Variablen vs. Attribute
0:20:45 Klassenvariablen (Statische Attribute)
0:25:55 Überladen von Methoden
0:31:59 Hilfsmethoden
0:34:28 Die Methode main
0:37:33 Methoden zur Ein- und Ausgabe
0:39:33 Typische Struktur eines Java-Programms
0:40:57 Jetzt sind Sie gefragt: Methodenrätsel
0:45:59 Zusammenfassung
0:50:46 Vorlesungsüberblick: Objekt-orientiertes Programmieren in Java
0:52:33 Lernziele heute
0:53:10 Definition
0:54:43 Array-Deklaration
0:57:08 Deklaration und Initialisierung
0:59:01 Ansprechen von Elementen / Länge des Arrays
1:01:14 Arrays und Schleifen: Beispiele
1:07:13 Quiz
1:12:13 Arrays und Schleifen: Weitere Beispiele
1:18:34 Beispiel: Polygone
1:21:47 Polygone erzeugen
04 |
0:00:00 Start
0:00:03 Programmieren von Schleifen
0:01:17 Die while-Schleife
0:08:51 Die for-Schleife
0:10:56 Unterschied For- und While-Schleife
0:12:46 Warum ist dieser Unterschied wichtig?
0:21:08 Beispiel: Collatz-Funktion
0:28:42 Die break-Anweisung
0:31:11 Die continue-Anweisung
0:35:28 Schleifenorganisation
0:43:30 Zusammenfassung
0:45:11 Lernziele heute
0:45:36 Objekte erzeugen und initialisieren
0:47:08 Konstruktoren
0:47:28 Parameter
0:49:03 Syntax von Konstruktoren
0:51:44 this-Referenz
0:53:56 Default-Konstruktor
0:55:16 Mehrere Konstruktoren
1:03:47 Methoden
1:09:19 Beispiel-Methoden
1:10:06 Der Rückgabetyp void
1:11:26 Zugriffsfunktionen (getter/setter)
1:16:10 Bezugsobjekt
1:18:19 Was passiert beim Aufruf einer Methode?
03 |
0:00:00 Start
0:00:03 Wertebereiche der elementaren Datentypen
0:02:27 Zuweisung
0:03:32 Beispiele für Zuweisungen
0:03:53 Initialisierung von Variablen
0:04:12 Variablen und Zuweisung
0:09:27 Zuweisung: Attribute setzen
0:11:23 Variablen und Speicher: Speicherabbild
0:12:29 Objekt-Variablen / Referenzen
0:18:08 Objekt-Identitäten und Zuweisung
0:18:54 Null
0:19:46 Konstantendeklaration
0:22:08 Überprüfung der Datentypen
0:24:19 Zusammenfassung
0:25:21 Vorlesungsüberblick
0:26:16 Literaturhinweis
0:26:26 Kontrollstrukturen
0:26:43 Lernziele
0:27:10 ausdrücke
0:33:17 Anweisungen
0:35:47 Ausdruck vs. Anweisung
0:36:39 Jetzt sind Sie gefragt
0:42:02 Ergänzung: Quiz
0:50:27 Eingaben über die Konsole
0:52:54 Zahlen über die Konsole eingeben
0:53:34 Kontrolfuß-Anweisungen
0:55:40 Die if-Anweisung
0:57:06 if Anweisung: Kontrollfluss-Diagramm
0:57:49 Geschachtelte if-Anweisungen
1:00:35 Jetzt sind Sie gefragt
1:03:29 Die switch-Anweisung
1:09:51 Die switch Anweisung: Beispiel
1:13:14 Programmieren von Schleifen
1:13:45 Die while-Schleife
1:16:05 Jetzt sind Sie gefragt
02 I
0:00:00 Start
0:00:07 Lernziele letzte Woche
0:01:24 Vorlesungsüberblick
0:02:36 Lernziele heute
0:03:45 Datentypen
0:08:18 Die elementaren Datentypen in Java
0:11:09 Wertbereiche der elementaren Datentypen
0:18:45 Vordefinierte Operationen auf elementaren Datentypen
0:23:44 Präzedenz: Beispiele
0:26:36 Die Wahrheitswerte: boolean
0:27:21 Die ganze Zahlen: byte, short, int, long
0:33:10 Die Fließkommazahlen: float und double
0:39:52 IEEE 754 - Gleitkommazahlen
01 |
0:00:00 Start
0:00:19 Was ist Programmieren?
0:00:23 Anfänge der Programmierung
0:03:18 Rückblick: Ferranti Mark 1
0:05:13 Programmierung
0:05:46 Jetzt sind Sie daran
0:09:39 Was das nun ,,Programmieren''
0:12:27 Unsere Programmiersprache: Java
0:13:21 Warum nicht Umgangssprache?
0:14:45 Was Sie in dieser Vorlesung Lernen?
0:15:48 Rolle der Programmierung
0:20:40 Was kann ich mit guten Programmierkenntnissen anfangen?
0:22:36 Wohin geht die Reise?
0:23:34 Lernziele
0:23:52 Summation - Implementierung
0:25:56 Summenformel - Implementierung
0:29:46 Einfaches Programm
0:30:51 Praxis: Übersetzen von Java-Klassen
0:32:51 Praxis: Ausführen von Java-Programmen
0:33:36 Einfaches Programm
0:34:16 Wozu Compiler?
0:37:44 Compiler vs. Interpreter
0:39:35 Übersetzung in maschinennahe Sprache
0:39:43 Interpretation nach Vorübersetzung
0:40:24 Übersetzung und Ausführing in Java
0:41:19 Just In Time Compilation
0:42:44 Einfaches Programm
0:47:49 Literaturhinweis
0:48:23 Zusammenfassung
0:49:33 Lernziele
0:50:08 Billard-Spiel
0:52:25 Objektorientierte Programmierung
0:53:14 OOP am Beispiel ,,Billard-Spiel''
0:54:43 Klassen: Der ,,Bauplan'' von Objekten
0:57:35 Definition: Objekte und Klassen
0:59:03 Ursprung Objektorientierter Programmierung
0:59:55 Klassen in Java
1:00:18 Ist die Klassendefinition gut so?
1:00:55 Abstraktion: Klasse für Koordinatenpaare
1:02:51 Wie erzeugt man Objekte?
1:03:39 Jetzt sind Sie gefragt
1:05:49 Wir modelieren sie Mensa
1:08:28 Jetzt sind Sie gefragt
1:11:12 Zusammenfassung



