JVM Functional Language Battle

Größe: px
Ab Seite anzeigen:

Download "JVM Functional Language Battle"

Transkript

1 JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str Mannheim Version:

2 Ihr Sprecher Falk Sippach Trainer, Berater, Entwickler Co-Organisator Architektur Agile Softwareentwicklung Codequalität 2

3 Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence Center) Schlüsselfertige Realisierung von Java Software Individualsoftware Pilot- und Migrationsprojekte Sanierung von Software Software Wartung Unterstützung laufender Java Projekte Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme Methoden, Standards und Tools für die Entwicklung von offenen, unternehmensweiten Systemen 3

4 Abstract Funktionale Programmierung soll so viel ausdrucksstärker sein, aber leider ist dieses Programmier-Paradigma nicht ganz kompatibel zu der prozedural- und objektorientierten Denkweise von uns Java-Entwicklern. Anhand eines kleinen Algorithmus werden wir uns verschiedene Lösungen zunächst im klassischem imperativen Java (vor Java 8) und als Vergleich dazu in alternativen JVM-Sprachen (Groovy, Frege, ggf. Scala bzw. JavaScript) anschauen und die verschiedenen Lösungen diskutieren. Herauskommen soll eine saubere und verständlichere Struktur, die zu besser les- und wartbarem Code führen wird. Die gewonnenen Erkenntnisse wollen wir dann letztendlich in Java 8 mittels Streams und Lambda-Ausdrücken umsetzen, so dass jeder Zuhörer die Grundideen der funktionalen Programmierung mit in seine tägliche Arbeit nehmen kann. Es sind keine speziellen Vorkenntnisse in den angesprochenen alternativen Sprachen notwendig, ein solides Verständnis für die Programmiersprache Java genügt. 4

5 Agenda <x> <y/> </x> Einführung Imperativ Deklarativ Functional Java 5

6 Experiment 6

7 Java Groovy Scala Clojure Haskell Frege Imperativ Funktional 7

8 Imperative Programmierung Imperative Programmierung (lat. imperare anordnen, befehlen ) ist ein Programmierparadigma, nach dem ein Programm aus einer Folge von Anweisungen besteht, die vorgeben, in welcher Reihenfolge was vom Computer getan werden soll. 8

9 Funktional Imperativ Deklarativ 9

10 Funktionale Programmierung Funktionale Programmierung ist ein Programmierparadigma, bei dem Programme ausschließlich aus Funktionen bestehen. Dadurch wird bewusst auf die aus der imperativen Programmierung bekannten Nebenwirkungen verzichtet. 10

11 Problemstellung 11

12 ? 12

13 Prüfsummen-Berechnung Luhn-Algorithmus; Luhn-Formel; "Modulo 10"-Algorithmus; Double-Add-Double-Methode 13

14 Validierung von Kreditkarten Luhn Algorithmus Kreditkartennummern können sich selbst prüfen rein clientseitige Prüfung möglich Berechnung einer Prüfsumme aus den einzelnen Ziffern wenn Prüfsumme modulo 10 = 0 => valide <> 0 => nicht valide 14

15 Wie funktioniert die Validierung genau 1. (Umwandlung in Ziffern) 2. Reihenfolge vertauschen 3. jede zweite Zahl verdoppeln 4. einzelne Zahlen zusammenaddieren bei Zahlen größer 9 werden die einzelnen Ziffern aufaddiert 5. valide, wenn die Summe modulo 10 == 0 15

16 Beispiel " " % 10 == 0 gültig 16

17 17

18 18

19 Java klassisch Variante 1 19

20 Java klassisch Variante 2 20

21 Java klassisch mit sprechenden Methodennamen 21

22 Demo Kreditkarten-Nummer prüfen mit Java: public static void main(string[] args) { } System.out.println(isValid(" ")); 22

23 Programm: Folge von elementaren Schritten Typischer Schritt ist die Wertzuweisung Speicherung von Daten erfolgt in Variablen Kontrollstrukturen: Sequenzen ( ; ;) Alternativen (if, switch) Schleifen (for, while, do while) Sprünge und Unterprogrammaufrufe (goto) 23

24 Imperativ vs. Deklarativ Imperativ: Wie erreiche ich mein Ziel? Deklarativ: Was will ich erreichen? 24

25 Imperativ Funktional 25

26 Java klassisch Spaghetti-Code Aufspalten in Ziffern Reihenfolge drehen Jede 2. Ziffer verdoppeln Aufsummieren Validierungsprüfung 26

27 Und in anderen Sprachen? 27

28 Groovy objektorientiert dynamisch und/statisch typisiert ausdrucksstarke/prägnante Syntax sehr gute Integration mit Java (JVM, Bibliotheken, Vererbung, ) Metaprogrammierung, Closures, Operatorüberladung 28

29 Demo Kreditkarten-Nummer prüfen mit Groovy groovy> isvalid true 29

30 JavaScript objektorientierte Skriptsprache aber klassenlos (Prototyp-basiert) dynamisch typisiert Funktionen sind First-Class-Citizens Client (Browser) und Server (Node.js, Nashorn auf JVM) 30

31 Demo Kreditkarten-Nummer prüfen mit JavaScript > isvalid( ) true 31

32 Scala funktional und objektorientiert statisch typisiert (Typinferenz) Funktionen als First-Class-Citizens Pattern Matching Java-Integration 32

33 Demo Kreditkarten-Nummer prüfen mit Scala scala> isvalid( ) true 33

34 Frege Haskell for the JVM rein funktionale Programmiersprache statisch typisiert mit Typinferenz und Typvariablen frei von Nebeneffekten Monaden zur Kapselung von imperativen Konstrukten Pattern Matching Typklassen 34

35 Demo Kreditkarten-Nummer prüfen mit Frege (Haskell) frege> isvalid True 35

36 Algorithmus in Frege Validierungsfunktion Kreditkartennummer isvalid n = (sumdigits (double2nd (todigitsrev n))) % 10 == 0 Summe der Ziffern Verdoppeln jede 2. Ziffer Ziffern rückwärts Teilbar durch 10? 36

37 Haskell/Frege todigits n = todigits (n `div` 10) ++ [(n `mod` 10)] todigitsrev n = reverse (todigits n) double2nd = zipwith (*) (cycle [1, 2]) sumdigits xs = sum (concat (map todigits xs)) isvalid n = mod (sumdigits (double2nd (todigitsrev n))) 10 == 0 isvalid n = (sumdigits (double2nd (todigitsrev n))) % 10 == 0 37

38 Keine veränderbaren Zustände Seiteneffekt-frei Referentielle Transparenz First-Class-Citizens Higher-Order Functions Lambdas/Closures Lazy Evaluation Rekursion 38

39 Funktionen 39

40 Warum Funktionale Programmierung einfach zu testen, zu debuggen einfach zu verstehen durch einfache Abstraktionen und referentielle Transparenz seiteneffektfrei, lässt sich leicht parallelisieren modularisierbar und einfach wieder zusammenführbar erhöht Code-Qualität 40

41 OO vs. Funktional 41

42 Ist Java 8 funktional? 42

43 "Funktional Programmieren" mit Java 8 Lambdas: Funktionsliterale als First-Class-Citizens Higher-Order Functions Currying und Funktionskomposition Streams Erweiterungen Collections mit Default-Methoden (Rekursion) 43

44 Java 8: Currying und partielle Funktionsaufrufe Currying: Konvertierung einer Funktion mit n Argumenten in n Funktionen mit jeweils einem Argument. 44

45 Java 8: Funktionskomposition 45

46 Luhn-Algorithmus in Java 8 Variante 1 46

47 Was fehlt Java 8 zur besseren funktionalen Unterstützung? Erzwingen von Immutability persistente Datenstrukturen Vermeidung von Seiteneffekten referentielle Transparenz Lazy Evaluation funktionale Bibliotheksfunktionen 47

48 Immutable Klassen genau ein Zustand keine Prüfung von Invarianten und von Zustandsübergänge (API-Doc) abgeleitete Größen können in Cache gehalten werden Thread-safe keine Zustandsänderung keine Synchronisation gemeinsame Nutzung von Instanzen public Konstanten Instanzkontrolle durch statische Factories keine defensive Copies gemeinsame Nutzung innerer Zustände BigInteger#negate() String#subString() 48

49 Funktionale Erweiterungen für Java Project Lombok 49

50 Project Lombok Compile-Time Metaprogrammierung Reducing Boilerplate Code durch Annotationen Generation des Immutable-Gerüsts Lazy Evaluierung = true) 50

51 private, final, keine Setter, Argument-Konstruktor equals/hashcode Lazy-Evaluierung 51

52 FunctionalJava funktionale Programmierbibliothek für Java Lernplattform für funktionale Programmierung mit der gewohnten Sprache unterstützt Java 6+ (mit Retro Lambda) Basis Datenstrukturen (Funktionen, partielle Funktionen, Unit, Void, Option, Either, Immutable Collections (Array, List, Stream, Set, Map, Monaden, Zipper 52

53 53

54 Demo Kreditkarten-Nummer prüfen mit Java 8 + FunctionalJava: public static void main(string[] args) { } System.out.println(isValid(" ")); 54

55 Javaslang "Javaslang is a functional library for Java 8+ that provides persistent data types and functional control structures." Persistent Data Structures LinkedList, Queue, Sorted Set, Stream Tuple Functions, CheckedFunctions 55

56 Javaslang: Tuple (bis Tuple8) 56

57 Javaslang: Partielle Funktionsaufrufe und Komposition 57

58 Javaslang: Currying 58

59 Javaslang: Function Lift (Fangen von Exceptions) 59

60 Links Learn You a Haskell for Great Good! LYAH (Learn You a Haskell) adaptions for Frege Project Lombok Functional Java Javaslang 60

61 Literaturhinweise Functional Programming in Java: Harnessing the Power Of Java 8 Lambda Expressions Venkat Subramaniam The Pragmatic Programmers, Erscheinungsdatum: Februar 2014 ISBN: Sprache: Englisch Mastering Lambdas Maurice Naftalin Oracle Press Erscheinungsdatum: Oktober 2014 ISBN: Sprache: Englisch 61

62 Literaturhinweise Learn You a Haskell for Great Good!: A Beginner's Guide Miran Lipovaca No Starch Press, Erscheinungsdatum: April 2011 ISBN: Sprache: Englisch Real World Haskell Bryan O'Sullivan und John Goerzen O'Reilly, Erscheinungsdatum: 2010 ISBN: Sprache: Englisch 62

63 ??? Fragen?? Orientation in Objects GmbH? Weinheimer Str Mannheim 63

64 Vielen Dank für Ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str Mannheim

JVM Functional Language Battle

JVM Functional Language Battle JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator

Mehr

JVM Functional Language Battle

JVM Functional Language Battle JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator

Mehr

Ant + Ivy Building with dependencies

Ant + Ivy Building with dependencies Ant + Ivy Building with dependencies Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Björn Feustel Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory

Mehr

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

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

Struts 2 Das Imperium schlägt zurück?

Struts 2 Das Imperium schlägt zurück? Struts 2 Das Imperium schlägt zurück? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Tobias Kieninger www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software

Mehr

Funktionale Programmierung (in Clojure)

Funktionale Programmierung (in Clojure) Funktionale Programmierung (in Clojure) Einführung Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2014/15 Übersicht Paradigmen von Programmiersprachen Paradigmen von Programmiersprachen

Mehr

VL06: Haskell (Funktionen höherer Ordnung, Currying)

VL06: Haskell (Funktionen höherer Ordnung, Currying) VL06: Haskell (Funktionen höherer Ordnung, Currying) IFM 5.3 Spezielle Methoden der Programmierung Carsten Gips, FH Bielefeld 18.05.2015 Wiederholung Wiederholung Wie können Sie die ersten n Elemente einer

Mehr

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Motivation Überblick Was macht Funktionale Programmierung aus? Sind Funktionale Programmierung und Objektorientierte Programmierung

Mehr

Last- und Stresstest mit the Grinder 3

Last- und Stresstest mit the Grinder 3 Last- und Stresstest mit the Grinder 3 Orientation in Objects GmbH oder auch mein Leben mit the Grinder 3 Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source

Mehr

Legacy Code meistern in x einfachen Schritten

Legacy Code meistern in x einfachen Schritten Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Abstract In einer idealen Welt würden wir nur "neuen" Code

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken funktionaler Programmierung Was fehlt

Mehr

Legacy Code meistern in x einfachen Schritten

Legacy Code meistern in x einfachen Schritten Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Über mich Falk Sippach (@sippsack) Trainer, Berater, Entwickler

Mehr

Legacy Code meistern in x einfachen Schritten

Legacy Code meistern in x einfachen Schritten Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Über mich Falk Sippach (@sippsack) Trainer, Berater, Entwickler

Mehr

Java 8. basierend auf Folien von Florian Erhard

Java 8. basierend auf Folien von Florian Erhard Java 8 basierend auf Folien von Florian Erhard Java 8 Erschienen am 18. März 2014 Verbessertes Contended Locking Projekt Lambda Erweiterungen der Collections-API (Streams) Neue Date and Time API Verbesserungen

Mehr

Programmiertechnik II WS 2017/18

Programmiertechnik II WS 2017/18 Programmiertechnik II WS 2017/18 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel WS 17/18 Überblick OOP: Schnittstellen

Mehr

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik Programmiertechnik II SS 2017 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel SS 2017 Überblick! OOP: Schnittstellen

Mehr

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

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1) Stand der Folien: 18. Oktober 2010 Motivation Funktionale Programmiersprachen Haskell Übersicht Einführung in die Funktionale Programmierung: Einleitung & Motivation Dr. David Sabel 1 Motivation Übersicht

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

WS 2013/2014. Robert Giegerich. 11. Dezember 2013

WS 2013/2014. Robert Giegerich. 11. Dezember 2013 WS 2013/2014 Robert AG Praktische Informatik 11. Dezember 2013 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man höherer Ordnung.

Mehr

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

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 - n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information

Mehr

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

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

Imperative vs. Funktionale Programmierung

Imperative vs. Funktionale Programmierung Beispiel: Entwerfe eine Funktion, die testet, ob eine Zahl n eine Primzahl ist oder nicht. Beobachtung: (1) Wenn n Primzahl ist, ist die Menge der Teiler von n leer. (2) Die Menge der Teiler von n sind

Mehr

Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung

Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung Funktionale Programmierung in modernem C++ Funktional in C++ Warum Funktional? Definition Charakteristiken

Mehr

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

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung 09:29:47 2017-01-25 1 [18] Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom 24.01.17: Scala Eine praktische Einführung Christoph Lüth Universität Bremen Wintersemester 2016/17 PI3 WS

Mehr

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN:

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN: Lothar Piepmeyer Grundkurs funktionale Programmierung mit Scala ISBN: 978-3-446-42092-2 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42092-2 sowie im Buchhandel. Carl Hanser

Mehr

Funktionales Programmieren mit objektorientierten Sprachen

Funktionales Programmieren mit objektorientierten Sprachen Funktionales Programmieren mit objektorientierten Sprachen Dr. Dieter Hofbauer d.hofbauer@ba-nordhessen.de Hochschule Darmstadt, WS 2008/09 p.1/21 Function Objects In funktionalen Sprachen (Haskell, ML,...

Mehr

Alles außer Java! JVM-Sprachen sagen Happy Birthday

Alles außer Java! JVM-Sprachen sagen Happy Birthday JUGS 20 Jahre Java Alles außer Java! JVM-Sprachen sagen Happy Birthday Jan-Paul Buchwald BeOne Stuttgart GmbH 15 Jahre JVM Sprachen Jython Rhino 2001: JRuby Groovy Scala 2007: Clojure 1992 2002 2012 1992:

Mehr

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

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

Objekt-Funktionale Programmierung. am Beispiel von SCALA. Thorsten Jolitz 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

Mehr

Einbindung dynamischer Sprachen in Java

Einbindung dynamischer Sprachen in Java Einbindung dynamischer Sprachen in Java Orientation in Objects GmbH Steffen Schluff Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Gliederung Einleitung Einsatzszenarien Java Scripting

Mehr

Web-Techniken Einführung in JavaScript

Web-Techniken Einführung in JavaScript Web-Techniken Einführung in JavaScript Prof. Dr. Axel Böttcher Winter 2012/13 15. September 2012 Ausführung von JavaScript Variante 1: Ausführung im Browser durch direktes Einbetten: 1 2

Mehr

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand Nahtlose Entwicklungsworkflows aus einer Hand Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory )

Mehr

1 Funktionale vs. Imperative Programmierung

1 Funktionale vs. Imperative Programmierung 1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.

Mehr

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber Konsequent agile Entwicklung mit funk4onaler Programmierung Michael Sperber Individualso4ware branchenunabhängig Scala, Clojure, Erlang, Haskell, F# Schulungen, Coaching www.acave- group.de funkaonale-

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

Mehr

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

Einführung in Funktionale Programmierung. Klassifizierung von Programmierparadigmen und -sprachen. Einleitung & Motivation Einführung in Funktionale Programmierung Einleitung & Motivation PD Dr. David Sabel Klassifizierung von Programmierparadigmen und -sprachen Insbesondere: Was unterscheidet Funktionale Programmiersprachen

Mehr

Praktische Informatik 3

Praktische Informatik 3 Praktische Informatik 3 Christian Maeder WS 03/04 Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen 3 Inhalt Wo ist das Problem?

Mehr

Groovy für Java Programmierer. 20. Juli Stefan Kolatzki

Groovy für Java Programmierer. 20. Juli Stefan Kolatzki Groovy für Java Programmierer 20. Juli 2015 Stefan Kolatzki Übersicht Karriere bei LINEAS Groovy für Java Programmierer Closures Literale, Operatoren, Operatoren überladen Extensions Compilerverhalten

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Rainer Grimm Softwarearchitekt Partner: Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken

Mehr

13. Funktionale Konzepte in Java

13. Funktionale Konzepte in Java Funktionale vs. Imperative Programmierung 13. Funktionale Konzepte in Java Funktionale Programmierung, Lambda Ausdrücke, Datenströme, Pipelines Imperative Konzepte Ausführen von Anweisungen Zustand (z.b.

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische Einteilung: Programmiersprache imperativ deklarativ prozedural objektorientiert funktional logisch Zusammenhänge tatsächlich

Mehr

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence Center) Schlüsselfertige

Mehr

Prozeduren vs. Funktionen

Prozeduren vs. Funktionen Prozeduren vs. Funktionen Mit der Formalisierung wird auch der Unterschied zwischen Prozeduren und Funktionen noch einmal klar. Der Aufruf beider Varianten bewirkt zunächst das Gleiche: die Eingabevariablen

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische

Mehr

Gliederung der Folien

Gliederung der Folien 1 Gliederung der Folien 1. Einführung 1.1. Gliederung 1.2. Literatur 1.3. Einstieg in Java 1.3.1. Geschichte von Java 1.3.2. Hello World 1.3.3. Übersetzen eines Java-Programms 1.4. Die Entwicklungsumgebung

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

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

Beispiel: Hamming-Folge Erzeuge eine Folge X = x 0,x 2,... mit folgenden Eigenschaften: 1. x i+1 > x i für alle i Beispiel: Hamming-Folge Erzeuge eine Folge X = x 0,x 2,... mit folgenden Eigenschaften: 1. x i+1 > x i für alle i FP-8.7 2. x 0 = 1 3. Falls x in der Folge X auftritt, dann auch 2x, 3x und 5x. 4. Nur die

Mehr

Das Doppelpack für die Informatik

Das Doppelpack für die Informatik Das Doppelpack für die Informatik Einführung in die Informatik 1 (EIDI 1) Praktikum Grundlagen der Programmierung (PGdP) Prof.Dr. Anne Brüggemann-Klein Übungsleitung: Raphaela Palenta N.N.s Im Kontext

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt 24.03.2014 ORGANISATORISCHES tobias.witt@hhu.de 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber später in den Übungen!

Mehr

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Teil II: Datenstrukturen Datenstrukturen Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Nichtlineare Datenstrukturen: Bäume Modell(e): spezielle

Mehr

Einführung in die Funktionale Programmierung: Einleitung & Motivation

Einführung in die Funktionale Programmierung: Einleitung & Motivation Einführung in die Funktionale Programmierung: Einleitung & Motivation Prof Dr. Manfred Schmidt-Schauß WS 2011/12 Stand der Folien: 25. Oktober 2011 Motivation Funktionale Programmiersprachen Haskell Übersicht

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Automat versus Computer Ein Automat ist eine Maschine,

Mehr

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

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 - 1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von

Mehr

Fragenkatalog ESOP WS 16/17

Fragenkatalog ESOP WS 16/17 Fragenkatalog ESOP WS 16/17 1. Einleitung 1.1 Was ist Programmieren? 1.2 Was ist ein Programm? 1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.4 Was ist ein Algorithmus? 1.5 Was sind

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

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

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1) Motivation Funktionale Programmiersprachen Haskell Übersicht Einführung in die Funktionale Programmierung: Einleitung & Motivation Prof Dr. Manfred Schmidt-Schauß 1 Motivation Übersicht Programmierparadigmen

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

Funktionale Programmierung

Funktionale Programmierung Schleifen 1 Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 3 Teil I Jedem Anfang wohnt ein Zauber inne 4 Über mich Diplom in Informatik in Saarbrücken

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Einführung Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 04.10.2017 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello World 04.10.2017 Dr. Werner Struckmann

Mehr

Funktionale Programmierung bringt s! Ein Ausflug mit Haskell in die Praxis

Funktionale Programmierung bringt s! Ein Ausflug mit Haskell in die Praxis Funktionale Programmierung bringt s! Ein Ausflug mit Haskell in die Praxis Stefan Wehr (wehr@factisresearch.com) factis research GmbH, Freiburg im Breisgau 17. Juli 2013 Developer MeetUp Freiburg Funktionale

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Funktionale Programmierung mit Java. Manuel Mauky & Max Wielsch

Funktionale Programmierung mit Java. Manuel Mauky & Max Wielsch Funktionale Programmierung mit Java Manuel Mauky & Max Wielsch Manuel Mauky Software Architect manuel.mauky@saxsys.de http://lestard.eu @manuel_mauky SPEAKER Max Wielsch Software Engineer max.wielsch@saxsys.de

Mehr

Funktioniert s? Funktionale Programmierung für Anfänger

Funktioniert s? Funktionale Programmierung für Anfänger Funktioniert s? Funktionale Programmierung für Anfänger Funktional, das ist doch nur für Esoteriker?! Funktional, das ist doch nur für Esoteriker?! ABN AMRO Amsterdam Risikoanalysen Investmentbanking AT&T

Mehr

Programmieren im Web 2.0

Programmieren im Web 2.0 Programmieren im Web 2.0 Inhaltsverzeichnis JavaScript Einführung DHTML als eine Grundlage Do s and Dont s Inhaltsverzeichnis / 2 Ajax Einführung Technische Grundlagen Das XMLHttpRequest Objekt Beispielanwendung

Mehr

Sieben Wochen, sieben Sprachen

Sieben Wochen, sieben Sprachen The Pragmatic Programmers Sieben Wochen, sieben Sprachen Verstehen Sie die modernen Sprachkonzepte Deutsche Übersetzung von O REILLY Bruce A. Tate Übersetzt von Peter Klicman Ein wenig über viele Sprachen

Mehr

Funktionale Programmierung Mehr funktionale Muster

Funktionale Programmierung Mehr funktionale Muster Mehr funktionale Muster Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 07.12.2017 06:56 Inhaltsverzeichnis Pattern Matching..................................

Mehr

Java: Der Einstieg. Algorithmen und Datenstrukturen II 1

Java: Der Einstieg. Algorithmen und Datenstrukturen II 1 Java: Der Einstieg Algorithmen und Datenstrukturen II 1 Grundlegendes zu Java: Historisches 1990-1991: Entwicklung der Programmiersprache OAK durch James Gosling von Sun Microsystems (zunächst für Toaster,

Mehr

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

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren Hanspeter Mössenböck Sprechen Sie Java? Eine Einführung in das systematische Programmieren 3., überarbeitete und erweiterte Auflage Tm\ dpunkt.verlag 1 Grundlagen 1 1.1 Daten und Befehle 2 1.2 Algorithmen

Mehr

Wie entwerfe ich ein Programm?

Wie entwerfe ich ein Programm? Wie entwerfe ich ein Programm? Welche Objekte brauche ich? Flussdiagramme für Programmablauf Vorcode Testcode Hauptcode Wir spielen Lotto! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 +

Mehr

Typklassen, Eingabe und Monaden In Haskell

Typklassen, Eingabe und Monaden In Haskell Typklassen, Eingabe und Monaden In Haskell Felix Rahmati Jonathan Beierle 1 Einleitung In dieser Ausarbeitung befassen wir uns mit den Vorteilen einiger fortgeschrittener Konzepte der funktionalen Programmierung

Mehr

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. Juni 2004

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. Juni 2004 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 21. Juni 200 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

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

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217 EIDI 1 Einführung in die Informatik 1 PGdP Praktikum Grundlagen der Programmierung Harald Räcke 2/217 Wie löst man Probleme mithilfe von Computern? 0 Harald Räcke 3/217 Inhalte: EIDI 1 1. Was ist das Problem?

Mehr

Agile Ressourcenplanung

Agile Ressourcenplanung Agile Ressourcenplanung Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI Ausdrücke in Scala Funktionale Programmierung Christoph Knabe FB VI 17.10.2014 Inhalt Einfache Ausdrücke Infix-Notation für Methodenaufruf Sonderzeichen in Bezeichnern Schlüsselwörter Konstanten Variablen

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.

Mehr

Workshop Einführung in die Sprache Haskell

Workshop Einführung in die Sprache Haskell Workshop Einführung in die Sprache Haskell Nils Rexin, Marcellus Siegburg und Alexander Bau Fakultät für Informatik, Mathematik und Naturwissenschaften Hochschule für Technik, Wirtschaft und Kultur Leipzig

Mehr

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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Einführung Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 04.10.2016 Technische Universität Braunschweig, IPS Überblick Organisatorisches Hello! 04.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Funktionen höherer Ordnung. 3. Dezember 2014

Funktionen höherer Ordnung. 3. Dezember 2014 höherer Ordnung Universität Bielefeld AG Praktische Informatik 3. Dezember 2014 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man

Mehr

Einführung in Java. Ausgewählte Quellen zu Java

Einführung in Java. Ausgewählte Quellen zu Java Einführung in Java Wesentliche Eigenschaften und Merkmale der Programmiersprache Java Prof. Dr. Stefan Böttcher Universität Paderborn im Rahmen der Vorlesung: Webbasierte Informationssysteme SS 2004 Einführung

Mehr

Mobile Anwendungsentwicklung - Überblick über ios & Swift I -

Mobile Anwendungsentwicklung - Überblick über ios & Swift I - Mobile Anwendungsentwicklung - Überblick über & I - Prof. Dr. Michael Cebulla 4. November 2016 Hochschule Schmalkalden Wintersemester 2016/17 1 / 38 M. Cebulla Mobile Anwendungsentwicklung Gliederung 1

Mehr

Methoden und Funktionen in Scala

Methoden und Funktionen in Scala Methoden und Funktionen in Scala Kapitel 11 und 12 des Buches 1 Jede Methode hat einen Typ Für die folgende Methode def square(v: Int) = v*v erhalten wir von der Scala-Shell die Rückmeldung square: (Int)Int

Mehr

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert

Mehr

Programmieren von Webinformationssystemen

Programmieren von Webinformationssystemen Programmieren von Webinformationssystemen Wolfgang Gassler Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 HTML Hypertext Markup

Mehr

Softwaretechnik. Funktionale Programmierung. Christian Lindig. 23. Januar 2006. Lehrstuhl für Softwaretechnik Universität des Saarlandes

Softwaretechnik. Funktionale Programmierung. Christian Lindig. 23. Januar 2006. Lehrstuhl für Softwaretechnik Universität des Saarlandes Softwaretechnik Funktionale Programmierung Christian Lindig Lehrstuhl für Softwaretechnik Universität des Saarlandes 23. Januar 2006 Quicksort in Java static void sort(int a[], int lo0, int hi0) { int

Mehr

Kontinuierliche Architekturdokumentation im agilen Umfeld

Kontinuierliche Architekturdokumentation im agilen Umfeld Kontinuierliche Architekturdokumentation im agilen Umfeld Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer,

Mehr

SmallTalk - Eine kurze Einführung

SmallTalk - Eine kurze Einführung SmallTalk - Eine kurze Einführung Andreas Lochbihler Lehrstuhl Programmierparadigmen Universität Karlsruhe 15. Juni 2009 SmallTalk Entwickelt seit Anfang der 70er bei XEROX PARC Alan Kay, Dan Ingalls,

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse Innere Klassen in Java Java 1.0: nur top-level Klassen Seit Java Version 1.1: Innere Klassen Deklaration einer Klasse innerhalb einer anderen Klasse Illustration Eigenschaften Vorteile Anwendungsmöglichkeiten

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr