DiscoverProgrammieren, WS18/19, Vorlesung
Programmieren, WS18/19, Vorlesung
Claim Ownership

Programmieren, WS18/19, Vorlesung

Author: Karlsruher Institut für Technologie (KIT)

Subscribed: 98Played: 846
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
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
Comments 
loading