Learning Outcome
Die Studierende sollen
- (WAS) die grundlegenden Prinzipien, Strukturen und Syntaxelemente der objekt-orientierten Programmierung verstehen und anwenden können, (WOMIT) indem sie die Programmiersprache Kotlin einsetzen, (WOZU) um eigene Algorithmen umsetzen zu können
- (WAS) Standardalgorithmen (z.B. Suchen, Sortieren) verstehen und anwenden, (WOMIT) indem Sie Pseudocode in lauffähigen Code übersetzen, (WOZU) um deren Eigenschaften (z.B. Laufzeitverhalten) und Funktionsweise einordnen zu können
- (WAS) eigene objektorientierte Datenstrukturen entwickeln und die Komposition komplexer Objektstrukturen beherrschen, (WOMIT) indem sie Geschäfts- und Anwendungsfelder der realen Welt als Software modellieren und verschiedene abstrakte Datentypen (z.B. Listen) und unterschiedliche konkrete Implementierungen (z.B. Verkettete Listen) umsetzen, (WOZU) um die Planung und den Entwurf einfacher Softwarearchitekturen durchzuführen und Systeme zu modellieren
- (WAS) gut strukturierten, dokumentierten und wartbaren Code entwerfen können, (WOMIT) indem Prinzipien des Clean Coding, Entwurfsmuster und Teststrategien angewandt werden, (WOZU) um robuste und sichere Software zu entwickeln, eigene Software in einer objektorientierten Programmiersprache planen, entwickeln, umsetzen und testen können
Hierzu werden die Programmiersprache Kotlin, grundlegende Bibliotheken (Java, Android) und eine integrierte Entwicklungsumgebung eingesetzt.
Inhalte
- Arbeiten mit integrierter Entwicklungsumgebung
- Dynamische vs. Statische Typisierung
- Objekte und Abstraktion
- Einfache Klassen
- Datenkapselung
- Konstruktoren
- Veränderbare und unveränderbare Listen
- when-Anweisungen und Ausdrücke
- Vererbung und Typen
- Klassenhierarchien
- Typkompatibilität, Upcast, Downcast und Smart Cast
- Polymorphie und Dynamische Bindung
- Objektkomposition und Objektaggregation
- Parametrisierte Datentypen (Generics)
- Begleit-Objekte für Klassen
- Abstrakte Klassen und Schnittstellen
- Nullfähige Typen
- Abstrakte Datentypen in der Programmierung
- Einfache und doppelt verkette Liste
- Exceptions
- Clean Code
- Testfälle schreiben
- Laufzeiteffizienz und O-Notation
- Entwurfsmuster (Iterator, Observer, Singleton, Strategie u.a.)
- Verschachtelte, innere, statische und lokale Klassen
- Sortieralgorithmen, u.a. Quicksort
- Listen-Funktionen und Lambda-Ausdrücke
- Stacks
- Warteschlange
- Assoziative Speicher
- Nicht-lineare Datenstrukturen
- Binärbäume
- Verarbeitung durch Funktionen höherer Ordnung
- Vergleich mit anderen Programmierparadigmen
Literatur
- Vorlesungsunterlagen: Foliensammlung, ausformuliertes Skript, Beispiellösungen, Screencasts
- Kohls, C., Dobrynin, A., Leonard, F. (2020) Programmieren Lernen mit Kotlin. Mün- chen: Hanser Verlag.
- Dmitry Jemerov & Svetlana Isakova (2017). Kotlin in Action. Manning Publications. Dawn Griffiths, David Griffiths & Jørgen W. Lang (2019). Kotlin von Kopf bis Fuß: Eine Einführung in die Kotlin-Programmierung. O'Reilly.
- Thomas Theis (2019). Einstieg in Kotlin: Apps entwickeln mit Android Studio. Keine Vorkenntnisse erforderlich, ideal für Kotlin-Einsteiger und Java-Umsteiger. Rhein-werk-Verlag
- Karl Szwillus (2019). Kotlin: Einstieg und Praxis. mitp Professional.
- Online-Referenz und Tutorials: https://kotlinlang.org/docs/reference/