Objekt-Funktionale Programmierung. am Beispiel von SCALA. Thorsten Jolitz

Ähnliche Dokumente
Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN:

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

III.1 Prinzipien der funktionalen Programmierung - 1 -

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Java-Grundkurs für rtschaftsinformatiker

Java-Grundkurs für Wirtschaftsinformatiker

Programmierparadigmen

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

Programmierung Paradigmen und Konzepte

Objektorientiertes Programmieren

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Objektorientierung in Oracle

Funktionale Programmiersprachen

Programmierparadigmen A01 OOP. Programmierparadigmen

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung

Java als erste Programmiersprache

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung

Inhalt. TEIL I Grundlagen. Einleitung 15

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Inhaltsverzeichnis. 4.9 Aufgaben... 63

Künstliche Intelligenz

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Scala LIGHTNING TALK 03

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Praktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl

(Building) Flexible Functional Programming Interfaces. Von Amos Treiber

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Objektorientierte Konzepte

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21

Programmieren in COMMON LISP

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Programmierparadigmen und Sprachen

Objektorientierte Programmierung

14. Java Objektorientierung

Die Klasse Vertiefung

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object

Java. Von den Grundlagen bis zu Threads und Netzen von Prof. Dr. Ernst-Wolfgang Dieterich Fachhochschule Ulm

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Haskell for Hackers... or why functional programming matters

Objektorientierte Programmierung

Praxisbuch Objektorientierung

Die С ++-Programmiersprache

Einführung in Funktionale Programmierung. Klassifizierung von Programmierparadigmen und -sprachen. Einleitung & Motivation

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

vii 4 t.scheme: Funktionale Programmierung Funktionen als Daten erster Klasse

7. Zusammenfassung (1)

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1)

Grundlagen der Programmierung in C Klassen

Kapitel 1 - Widerholungsfragen

1.3 Geschichte der Programmiersprachen

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Programmieren in Java

Programmiertechnik II WS 2017/18

Kurze Einführung in die Benutzung des Dokumentationswerkzeugs Doxygen

PHP Programmierung. Seminarunterlage. Version 1.07 vom

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

14. Java Objektorientierung

9. Ausnahmebehandlung 10. Softwareentwicklung: Anforderungsanalyse und Problemdefinition - ein Beispiel Abstrakte Datentypen,

Workshop Einführung in die Sprache Haskell

Einführung in die Funktionale Programmierung: Einleitung & Motivation

Programmieren in Lua

Sieben Wochen, sieben Sprachen

Teil III. Objektorientierung und SW-Entwicklung

Beispiel: Hamming-Folge Erzeuge eine Folge X = x 0,x 2,... mit folgenden Eigenschaften: 1. x i+1 > x i für alle i

Praktische Informatik 3

Programmieren I. Überblick. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

PHP OOP, Design Patterns und UML. Marco Skulschus

Programmierung in C/C++

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 -

Objektorientierte Programmierung Teil 1: Einführung

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Python. Grundlagen, fortgeschrittene Programmierung und Praxis

Funktionale Programmierung

Einführung in die objektorientierte Programmierung

Abschnitt 10: Datenstrukturen

Das Einsteigerseminar Objektorientierte Programmierung in Java

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Paradigmen zur Algorithmenbeschreibung

Objektorientierte Programmierung mite**

Gliederung der Folien

Ivan van Laningham. Deutsche Übersetzung: Dirk Steinkamp, Maik Hester, Ulrich Lindtner. Jetzt lerne ich. Python. Markt+Technik Verlag

2 Anlegen und Konfigurieren von Datenbanken 35

7. Objektorientierung. Informatik II für Verkehrsingenieure

Objektorientierte Anwendungsentwicklung

TURBO PASCAL VERSION 5.5

Einführung in das Natural Language Toolkit

JavaScript objektorientiert

Manfred Schüttengruber. Objektorientierte Programmierung mit Visual Basic 2005

Zum Buch Hinweise Handhabung des Buchs Website In eigener Sache... 19

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595

Transkript:

Objekt-Funktionale Programmierung am Beispiel von SCALA Thorsten Jolitz 1. Auflage 2012

Inhaltsverzeichnis 1. Einleitung 1 1. Ausgangspunkt Imperative Programmierung 5 2. Elemente der Imperativen Programmierung 7 2.1. Entstellung und Erfolgsfaktoren 7 2.2. Variablen 8 2.2.1. Eigenschaften von Variablen 8 2.2.2. Name 8 2.2.3. Adresse und Wert 9 2.2.4. Typ 10 2.2.5. Lebenszeit 11 2.2.6. Sichtbarkeit 12 2.3. Zuweisungsoperation 13 2.4. Kontrollanweisungen 16 2.4.1. Steuerung des Kontrollflusses 16 2.4.2. Sequenz 16 2.4.3. Auswahl 18 2.4.4. Iteration 20 3. Abstraktion und Strukturierung 23 3.1. Abstraktion in der Programmierung 23 3.2. Prozeßabstraktion 24 3.3. Datenabstraktion 25 3.3.1. Kapselung und modulare Programmierung 25 3.3.2. Abstrakte Datentypen (ADT) 26 3.3.3. ADT vs Objekt 27 I

II. Grundlagen der OO-Programmierung 33.... 50... 4. Programmieren mit Objekten 35 4.1. Objekt-Orientiertes Software-Engineering 35 4.2. Daten und Methoden 36 4.2.1. Prozedurale Datenabstraktion 36 4.2.2. Objekte als Konstruktoren einer Datenabstraktion 37 4.2.3. Klassenparameter und Klassenkonstruktor 38 4.2.4. Klassen und Objekte 40 4.2.5. Instanzvariablen 41 4.2.6. Getter und Setter 45 4.2.7. Zugriffsmodifikatoren 46 4.2.8. Methoden 46 4.3. Komposition und Vererbung 49 4.3.1. Begrifflichkeiten 49 4.3.2. Objekt-basierte Programmierung und Komposition 49 4.3.3. Objekt-orientierte Programmierung und Vererbung. 4.3.4. Parameterlose Methoden 56 4.3.5. Polymorphismus und dynamisches Binden 56 4.4. Mehrfachvererbung vs Traits 58 4.4.1. Das Diamantenproblem 58 4.4.2. Java's Interfaces 59 4.4.3. Scala's Traits 60 4.4.4. Linearisierung 61 4.4.5. Komposition mit Traits 65 4.5. Alles ist ein Objekt 71 4.5.1. Smalltalk als Vorreiter 71 4.5.2. Scala's Klassenhierarchie 72 4.5.3. Scala's Pakete 74 4.6. CLOS 75 4.6.1. Jenseits der Smalltalk-Klasse 75 4.6.2. Multi-Methoden 76 4.7. Probleme der Objekt-orientierten Programmierung 78 4.7.1. Das Problem der Substituierbarkeit 79 4.7.2. Das Fragile-base-class Problem 81 4.7.3. Das Problem der schlechten Tracebarkeit 82 4.7.4. Das Problem der eindimensionalen Strukturierung 83 4.7.5. Das Problem der mangelnden Kapselung 85 4.7.6. Das Problem der mangelnden Skalierbarkeit 87 II

4.7.7. Das Problem der mangelnden Eignung 87 III. Grundlagen der Funktionalen Programmierung 89 5. Konzepte funktionaler Programmierung 91 5.1. Abgrenzung zur imperativen Programmierung 91 5.2. Ausgangspunkt Mathematik 93 5.2.1. Mathematische Funktionen 93 5.2.2. Rekursion 96 5.2.3. Lambda-Notation 97 5.2.4. Currying 97 5.3. Funktionale Programme 101 5.3.1. Verzögerte Evaluierung 101 5.3.2. Programme als Funktionen 103 5.3.3. Modellieren von Zuständen 104 5.4. Funktionale Datentypen 105 5.4.1. ADT und Mustervergleich 105 5.4.2. Unveränderliche Daten und Kollektionen 107 5.4.3. Monaden als Tor zur realen Welt 108 6. Elemente Funktionaler Programmierung in Scala 113 6.1. Funktionen und Closures 113 6.1.1. Funktionen 113 6.1.2. Closures 115 6.2. Listen und Tupel 117 6.2.1. Listen 117 6.2.2. Tupel 120 6.3. Case Classes und Pattern Matching 121 6.4. Konstruktoren und Extraktoren 126 6.5. For Ausdrücke als Syntax für Monaden 126 IV. Typsysteme 131 7. Typsysteme 133 7.1. Typen vs. Typsysteme 133 7.2. Grundlagen Objekt-Orientierter Typsysteme 136 III

7.3. Scala's Typsystem 138 7.3.1. Theoretische Grundlagen 138 7.3.2. Typen als gleichberechtigte Sprachelemente 140 7.3.3. Funktionale Typabstraktion 140 7.3.4. Typschranken und Varianzen 142 7.3.5. Objekt-Orientierte Typabstraktion 145 7.3.6. Verbesserungen gegenüber Java's Typsystem 14G V. Objekt-Funktionale Programmierung 149 8. Warum Objekt-Funktionale Programmierung? 151 8.1. Java-Frust 151 8.2. Neue Lösungen für alte und neue Probleme 153 8.3. Komponenten-basierte Programmierung 154 8.3.1. Was sind Komponenten? 154 8.3.2. Abstraktionen für Komponentensysteme 155 8.4. Service-Orientierte Programmierung 160 8.5. Parallele Programmierung 161 8.5.1. Nebenläufigkeit und Parallelität 161 8.5.2. Probleme und Lösungsansätze 162 9. Zwischenlösung oder neues Paradigma? 167 9.1. Objekt-Funktional vs Funktional 167 9.2. Objekt-Funktional vs FRP 169 9.3. Lisp oder nicht Lisp? 173-173... 9.3.1. Zurück in die Zukunft der neue Trend zu Lisp 9.3.2. Die Jahrhundertsprache 174 9.3.3. Skalpell vs Schweizer Armeemesser 178 9.4. PL/I, die erfolglose Jahrhundertsprache 183 9.5. Scala in zwei Modi 184 9.6. Fazit 185 VI. Anhang 191 A. Scala Code ausführen 193 A.l. Der Scala Interpreter 193 A.2. Scala Applikationen 193 IV

die B. Ausnahmebehandlung in Scala 197 C. Anwendungsgebiet XML-Verarbeitung 199 C.l. Scala's XML Unterstützung 199 C.l.l. XML - Sprache des Web 199 C.l.2. Scala's Datenmodell für XML 200 C.1.3. XML-Dokumente erzeugen 201 C.l.4. XML-Dokumente einlesen 203 C.1.5. Pattern Matching auf XML 204 C.1.6. XML-Queries mit For Comprehensions 205 C.l.7. XML-basierte Web-Services 205 V