Java 8. Programmiermethodik. Eva Zangerle, Nikolaus Krismer Universität Innsbruck
|
|
- Heike Rothbauer
- vor 7 Jahren
- Abrufe
Transkript
1 Java 8 Programmiermethodik Eva Zangerle, Nikolaus Krismer Universität Innsbruck
2 Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle Themen Generische Programmierung Java Collection-Framework Streams Unit-Tests Entwurfsmuster - Eine Einführung GUI-Programmierung Java Virtual Machine Ausblick Java 8 2
3 Java 8 (1) Java 8 wurde von Oracle am 18. März 2014 veröffentlicht Damit wurden einige Features umgesetzt, welche ursprünglich schon für Java 7 geplant waren (etwa Lambdas) Neben Bugfixes wurden weitreichende Änderungen an der Java-Syntax vorgenommen Seit JDK 1.5 ist Java8 das wohl umfangreichste Release Hier werden nur die wichtigsten Änderungen/Erweiterungen aufgeführt 3
4 Java 8 (2) Neu in Java 8 Lambdas Default Methoden Streams Optional Type Annotations Repeating Annotations Änderungen mit Java 8 Nashorn (ersetzt Rhino) Date & Time APIs JavaFX Metaspace (Garbage Collection) 4
5 Neu in Java 8
6 Lambdas - Einführung Bekannt als Project Lambda Hauptfeature von Java 8 Dient vor allem der Vereinfachung des Programmcodes etwa beim Sortieren von Collections Lambdas sind objektlose Methoden Kommen nur einmal im Code vor Angelehnt an funktionale Programmierung (Programme bestehen nur aus Funktionen, keine Seiteneffekte) Funktionen als Parameter Anonyme innere Klasse kapselt diese Verhalten 6
7 Lambdas (1) Syntax: parameters -> body (argument list) -> code Beispiele: (String name, Address address) -> [Implementierung] (name, adress) -> [Implementierung] name -> [Implementierung] () -> return 42 Weitere Information unter Programmiermethodik Java 8 7
8 Lambdas (2) btn.setonaction(new EventHandler<ActionEvent>() public void handle(actionevent arg0) { System.out.println("Button was pressed"); ); vs. btn.setonaction((event) -> { System.out.println("Button was pressed"); ); Programmiermethodik Java 8 8
9 Lambdas (3) Beispiele: (String s1, String s2) -> {return s2.length() - s1.length(); (String str) -> System.out.println(str) Parameter-Typ-Deklaration ist optional; bei einem einzigen Parameter auch die Klammerung: str -> System.out.println(str) () -> System.out.println(this) Bei Verwendung eines einzigen Statements im Body, kann die Block-Definition und return weggelassen werden: (s1, s2) -> s2.length() - s1.length() 9
10 Lambdas (4) public class RunnableTest { public static void main(string[] args) { System.out.println("=== RunnableTest ==="); // Anonymous Runnable Runnable r1 = new public void run(){ System.out.println("Hello world one!"); ; // Lambda Runnable Runnable r2 = () -> System.out.println("Hello world two!"); r1.run(); r2.run(); 10
11 Lambdas (6) Durch die Einführung von Lambdas werden Methoden- Referenzen möglich. Diese sind definiert für: Statische Methoden Instanz-Methoden Methoden einer bestimmten Instanz Konstruktoren (etwa TreeSet::new) Methoden-Referenzen werden mit Hilfe von :: angegeben Beispiel (mit java.nio.file.files.lines (Non-Blocking IO): Files.lines(Paths.get("Nio.java")).map(String::trim).forEach(System.out::println); Weitere Informationen: 12
12 Lambdas (7) Als weitere Erweiterung der Lambdas gibt es in Java 8 so genannte Functional Interfaces. Das sind Interfaces, welche genau eine (abstrakte) Methode beinhalten (Ausnahme sind geerbte Methoden von Objekt sein also etwa tostring()) Single Abstract Method interfaces (SAM) Beispiele: Callable, Comparator, Runnable Solche Interfaces können mit Lambdas einfach verwendet werden (siehe Beispiel) Die kann auf solchen Interfaces verwendet werden, um Compiler- Fehlermeldungen zu erhalten 13
13 Lambdas (8) Beispiel: public class SimpleFuncInterfaceTest { public static void carryoutwork(simplefuncinterface sfi) { sfi.dowork(); public static void main(string[] args) { carryoutwork(new SimpleFuncInterface() public void dowork() { System.out.println("Use anonymous inner class..."); ); carryoutwork(() -> System.out.println("Use lambdaexp..")); 14
14 Default Methoden (1) Default Methoden sind Teile von Interfaces, welche eine Implementierung beinhalten Neben Default-Methoden, können auch static Methoden ausprogrammiert werden Der Hauptunterschied zu abstrakten Klassen ist darin zu sehen, dass es große Unterschiede bei der Vererbung gibt (eine Klasse kann mehrere Interfaces implementieren) Es kommt zu einem Compiler-Fehler, wenn eine Subklasse zwei Interfaces implementiert, welche Default Methoden mit gleichem Namen beinhalten (siehe nächstes Beispiel) 15
15 Default Methoden (2) Beispiel: public interface A { default void foo() { System.out.println("Calling A.foo()"); public interface B { default void foo() { System.out.println("Calling B.foo()"); public class MySubclass implements A, B { // führt zu Compiler-Fehler 16
16 Default Methoden (3) Beispiel: public interface A { default void foo() { System.out.println("Calling A.foo()"); public interface B { default void foo() { System.out.println("Calling B.foo()"); public class MySubclass implements A, B { default void foo() { A.super.foo(); // OK (jede Implementierung ist ok) 17
17 Streams (1) Mit Java5 wurde eine neue for-schleife eingeführt List<String> mylist = Arrays.asList("e0", "e1",..., "e999"); for (String e: mylist) { System.out.println(e); Diese foreach-schleife hat den Nachteil, dass die Elemente nicht parallel, sondern sequentiell abgearbeitet werden (man müsste zuerst händisch das Array in Teile zerlegen und diese dann parallel abarbeiten) Aus diesem Grund gibt es in Java 8 Streams und eine weitere foreach Schleife (das Interface Iterable wurde um eine default Methode foreach erweitert) 18
18 Streams (2) Streams können auch ohne foreach verwendet werden. Dazu gibt es etwa die Collections.stream, Arrays.stream oder die Collections.parallelStream Methoden Streams wurden für viele Anwendungen definiert: Für das Arbeiten mit Dateien und Verzeichnissen (etwa mit Files.lines) Patterns (bei RegularExpressions) können gestreamt werden Die Klasse Stream kann für beliebige Typen verwendet werden (mit Hilfe der Methode Stream.of()) Unendliche Streams sind definiert (Stream.iterate(i, i -> i+1)) 19
19 Streams (3) Map/Filter/Reduce Verfahren können nun einfach umgesetzt werden (und auch parallelisiert werden) Methoden, die angewendet werden können (Auszug): Map Reduce Filter Peek Aggregationen wie Sum Etc. Beispiel (aus Oracle Artikel zu Java 8) 20
20 Streams (4) List<Transaction> grocerytransactions = new Arraylist<>(); for(transaction t: transactions){ if(t.gettype() == Transaction.GROCERY){ grocerytransactions.add(t); Collections.sort(groceryTransactions, new Comparator(){ public int compare(transaction t1, Transaction t2){ return t2.getvalue().compareto(t1.getvalue()); ); List<Integer> transactionids = new ArrayList<>(); for(transaction t: grocerytransactions){ transactionsids.add(t.getid()); List<Integer> transactionsids = transactions.stream().filter(t -> t.gettype() == Transaction.GROCERY).sorted(comparing(Transaction::getValue).reversed()).map(Transaction::getId).collect(toList()); Beispiel und Grafiken entnommen aus html Programmiermethodik Java 8 21
21 Streams (5) Beispiel und Grafiken entnommen aus html Programmiermethodik Java 8 22
22 Optional (1) Optional wurde als neue Klasse eingeführt, um NullPointerExceptions vorzubeugen Beispiel (ohne Optional): String version = computer.getsoundcard().getusb().getversion(); Alternative (??): String version = "UNKNOWN"; if(computer!= null) { Soundcard soundcard = computer.getsoundcard(); if(soundcard!= null) { USB usb = soundcard.getusb(); if(usb!= null) { version = usb.getversion(); 23
23 Optional (2) Optional.of() kann als Wrapper um einen Wert verwendet werden, um null zu vermeiden Optional.isPresent() kann für bisherige Prüfungen verwendet werden Optional.ifPresent(Consumer) wird verwendet, um eine Aktion durchzuführen, wenn Werte gesetzt sind: optionalsoundcard.map(soundcard::getusb).filter(usb -> "3.0".equals(usb.getVersion()).ifPresent(() -> System.out.println("ok")); 24
24 Type Annotations Type Annotations sind Annotationen, welche überall dort verwendet werden können, wo ansonsten Typen stehen. Gedacht sind Type Annotations, um eine bessere Validierung zu ermöglichen (dafür gibt es etwa Frameworks, welche die Überprüfung übernehmen) Beispiel: final String mystring = (@NonNull String) str; 25
25 Repeating Annotations Mit Type Annotations wurden auch Repeating Annotations eingeführt. Damit kann ab Java8 kann die selbe Annotation mehrfach für eine Methode/Typ/Klasse verwendet werden Bei selbst definierten Annotationen verwendet man = = last ) public void doperiodiccleanup() {... Weitere Informationen: 26
26 Änderungen mit Java 8
27 Nashorn (1) Nashorn ersetzt Rhino als JavaScript-Interpreter. Damit wird es möglich JavaScript Code auf der JVM auszuführen Nashorn verwendet invokedynamic und ermöglicht damit eine bessere Performance Das Kommandozeilentool jjs wurde in Java 8 eingeführt und ruft die Nashorn-Engine auf Die Verwendung ist auch direkt im Java Code möglich (siehe Beispiel) 28
28 Nashorn (2) Beispiel: import javax.script.scriptengine; import javax.script.scriptenginemanager; // ScriptEngineManager enginemanager = new ScriptEngineManager(); ScriptEngine engine = enginemanager.getenginebyname("nashorn"); // engine.eval("function myprint(s) { print(s); "); engine.eval("myprint('hello Nashorn');"); 29
29 Nashorn (3) Beispiel (mit invokefunction): import javax.script.scriptengine; import javax.script.scriptenginemanager; // ScriptEngineManager enginemanager = new ScriptEngineManager(); ScriptEngine engine = enginemanager.getenginebyname("nashorn"); // Invocable inv = (Invocable) engine; engine.eval("function myprint(s) { print(s); "); inv.invokefunction("myprint", "Hello Nashorn2"); 30
30 Date & Time API Als ein Nachteil von Java kann die komplexe Arbeitsweise mit Datums- und Zeitfunktionen angesehen werden (etwa ist SimpleDateFormat nicht thread-safe) Deshalb wurde eine neue API eingeführt, welche an die Library Yoda Time angelehnt ist. Für Datums- und Zeitoperationen können nun neue Klassen verwendet werden: LocalDate Datum (also Tag, Monat, Jahr) LocalTime Zeit (innerhalb eines Tages) LocalDateTime Datum und Zeit 31
31 JavaFX (1) Für grafische Oberflächen sollte kein Swing mehr verwendet werden (AWT ist sogar schon länger als deprecated eingestuft) Ab Java8 finden sich alle benötigten Teile für JavaFX im JRE. Damit ist nun JavaFX8 die empfohlene Methode, grafische (Desktop)Applikationen umzusetzen JavaFX8 nutzt verstärkt Lambdas und ermöglicht somit eine einfachere Programmierung von GUIs 32
32 JavaFX (2) Das Theme Modena ist nun die Standarteinstellung, womit Oberflächen moderner aussehen als mit JavaFX2 (und/oder Swing, AWT) Mit Java 8 erhielt JavaFX vollen 3D Support Weitere Informationen 33
33 Metaspace PermGen wurde abgelöst durch den so genannten Metaspace. Der nun verwendete Metaspace wird im nativem Speicher verwaltet. Die Parameter XX:PermSize und XX:MaxPermSize sind nicht mehr verfügbar und werden ignoriert Einstellungen für den Metaspace können vorgenommen werden (etwa ein Größenlimit), sind aber nur in Ausnahmefällen notwendig 34
34 Ausblick
35 Ausblick Java 9 Mögliche Änderungen Project Jigsaw (ursprünglich für Java 8 geplant) ermöglicht verbesserte Modularisierung ähnlich zu OSGI mehr Information: GPU Beschleunigung Cloud Support API für Money & Currency 36
36 Literatur
37 Literatur [Davis 2014] Adam Davis, What s new in Java8, 2014 (Project Lambda) (Method References) (Optional) html (Repeating Annotations) (Nashorn) html (JavaFX) html (Project Jigsaw) 38
Java 8. Programmiermethodik. Eva Zangerle Universität Innsbruck
Java 8 Programmiermethodik Eva Zangerle Universität Innsbruck Java 8 (1) Java 8 wurde von Oracle am 18. März 2014 veröffentlicht Damit wurden einige Features umgesetzt, welche ursprünglich schon für Java
MehrJava 8. Programmiermethodik. Eva Zangerle, Nikolaus Krismer Universität Innsbruck
Java 8 Programmiermethodik Eva Zangerle, Nikolaus Krismer Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete
MehrJava 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
MehrEnumerations und innere Klassen
Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 10: Eigenschaften und Neuerungen in Java 8 Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Neurungen in Java 8 Motivation Lambda-Ausdrücke
MehrProgrammieren 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
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:
MehrOCP Java SE 8. Lambda
OCP Java SE 8 Lambda Lambda-Ausdruck sieht ähnlich wie eine Deklaration einer Methode ohne Name und Ergebnistyp aus (a, b) -> b.compareto(a) Lambda Vor Java 8 Ausführbarer Programmcode ( Verhalten ) nur
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrProgrammiermethodik 1. Klausur
Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung
MehrLambda Expressions in Java 8
Sie sind da Lambda Expressions in Java 8 Rolf Borst Lambda Expressions sind cool Aus dem Internet Stimmt das? Das total uncoole Beispiel Person nachname : String vorname : String alter : int plz : String
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware
Mehr11 Lambda-Ausdrücke. Beispiel: Sortierung nach Länge und kommaseparierte Aufbereitung
795 11 Lambda-Ausdrücke Mit Lambda-Ausdrücken (kurz: Lambdas, zum Teil auch Closures genannt) wurde ein neues und von vielen Entwicklern heiß ersehntes Sprachkonstrukt in Java eingeführt, das bereits in
MehrObjektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrEnhanced Collection API
Enhanced Collection API Die default und static Methoden der Collection API des JDK 1.8 Prof. Dr. Nikolaus Wulff Schnittstelle und Implementierung Die Sprache Java trennte von Anfang an eine Schnittstelle
MehrJava 8. Die wichtigsten Neuerungen. W3L AG info@w3l.de
1 Java 8 Die wichtigsten Neuerungen W3L AG info@w3l.de 2013 2 Agenda Java Versionshistorie und Zeitplan Neue Features in Java 8 Überblick Neue Features im Detail Lambda Expressions Functional interfaces
MehrFunktionale und Objekt-Orientierte Programmierkonzepte
Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1
MehrII.4.5 Generische Datentypen - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
Mehr13. 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.
MehrEinstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung
MehrUML Eine kurze Einführung
UML Eine kurze Einführung Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (2/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Listen Bisher: Collections
MehrObjektorientierte 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
MehrII.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
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 11: Java 8 & JUnit Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Neurungen in Java 8 Motivation Lambda-Ausdrücke Default-Methoden Streams
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrFunktionale 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
MehrJava I Vorlesung Generics und Packages
Java I Vorlesung 9 Generics und Packages 21.6.2004 Generics Packages Qualifizierte Namen Mehr zu Zugriffsklassen Generics (Java 1.5) Die Klassen im Java Collections Framework sind mit dem Typ ihrer Elemente
MehrProgrammiermethodik 3. Klausur Lösung
Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung
MehrFunktionale versus objektorientierte Programmierung
Funktionale Programmierung 19 19. Funktionale Programmierung Lambda-Ausdrücke Funktionale versus objektorientierte Programmierung Java ist als objektorientierte Programmiersprache in den neunziger Jahren
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
MehrNeuerungen in Java 8. Eric Giese adesso AG
Neuerungen in Java 8 Eric Giese adesso AG Neuerungen in Java 8 Sprachänderungen Die Streams API Java Platform, 8th Edition Ein Blick unter die Haube Auswirkungen und Ausblick 20.03.2015 2 Neuerungen in
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute
MehrJava: 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,
MehrProgrammieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik
Programmieren I Dokumentation mit javadoc Heusch 10.4 Ratz 4.1.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Automatische Dokumentation Java bietet standardmäßig das Dokumentationssystem
MehrSpracherweiterungen in Java 5
Spracherweiterungen in Java 5 Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe 17. April 2008 Spracherweiterungen in Java 5 Generics (s. Vorlesung) Annotations Enumerations Methoden
MehrProgrammieren 2 Java Überblick
Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10
MehrShort Introduction to C# C# (C SHARP) Microsofts Antwort auf Java
Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java Standardisierung durch die ECMA und ISO Short Introduction to C# C# (C
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrDurch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei
Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der
MehrJava: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder
Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform
MehrEinführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden
MehrC++ vs. Java. Hello world! Java C++ class HelloWorld { static public void main(string args) { System.out.println("Hello World!
Hello world! Java class HelloWorld { static public void main(string args) { System.out.println("Hello World!"); } } C #include main() { printf("hello World!\n"); } C++ #include using
MehrVererbung und Polymorphie
Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter
Mehr11. Komponenten Grundlagen der Programmierung 1 (Java)
11. Komponenten Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Einordnung im Kontext der Vorlesung
MehrProgrammieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik
Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Prinzip der Vererbung: Aus
MehrII.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.
MehrHeute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1
Heute Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files 17.01.2017 IT I - VO 11 1 Organisatorisches Noch zwei UE und eine Wissensüberprüfung Heute
MehrKapitel 5: Interfaces
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE38-Generics (Stand 28.09.2012) Aufgabe 1: Schauen Sie sich die generischen Klassen des Paketes java.util an. Aufgabe 2: Ausgangslage sind die folgenden
MehrParallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr
3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,
MehrInformatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
MehrJavakurs 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
MehrTutorium zur Vorlesung Programmieren
Tutorium zur Vorlesung Programmieren Sondertutorium Joshua Gleitze 9. Januar 2017 IPD Koziolek Generische Typen Generische Typen Klassen können Typvariablen deklarieren. 1 public Interface List { 2
MehrWeb-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
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrDeklaration 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
MehrADT: Java Collections und ArrayList
ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,
MehrAndroid will doch nur spielen. Java Eine kurze Einführung
Android will doch nur spielen Java Eine kurze Einführung Agenda Einführung in Java Syntax und Semantik Komplexe Datenstrukturen OOP Weitere Java-Elemente 2 Einführung in Java Was ist Java? lt. Sun: einfach
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrProgrammieren 2 16 Java Collections und Generizität
Programmieren 2 16 Java Collections und Generizität Bachelor Medieninformatik Wintersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Faulheit professionell: Fertige Datenbehälter
MehrGraphical User Interfaces
Graphical User Interfaces SEP 184 Toolkits es gibt verschiedene Toolkits (= Sammlungen von Klassen, Anbindungen an Betriebssystem, etc.) für grafische Oberflächen Abstract Windows Toolkit (AWT) Swing Standard
MehrProgrammieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
MehrDie Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff
Die Java Stream API Funktionale Programmierung mit der Stream API des JDK 1.8 Prof. Dr. Nikolaus Wulff Funktionale Programmierung Neben der Collection API mit default Methoden ist als weitere Neuerung
MehrJava 8. Lambdas und Streams. Dr. Jan Schäfer. Big Techday Mai 2014, München
Java 8 Lambdas und Streams Dr. Jan Schäfer Big Techday 7 23. Mai 2014, München Warum sollte mich Java 8 interessieren? Java ist eine der meistverwendeten Programmiersprachen, insbesondere bei Enterprise-Software
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrProgrammieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik
Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:
MehrSchlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
MehrKlausur 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
MehrVorkurs 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
MehrProgrammiertechnik 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
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrProgrammiertechnik 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
MehrSoll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException
Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. Beispiel: NumberFormatException public class Adding extends MiniJava { public static void main(string[] args) { int
MehrInfo B VL 14: Java Collections/Reflections
Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections
MehrProgrammieren in Java
Programmieren in Java Vorlesung 09: Funktionen höherer Ordnung Prof. Dr. Peter Thiemann, Manuel Geffken Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann, Manuel Geffken (Univ. Freiburg)
MehrVererbung. Was versteht man unter dem Begriff Vererbung?
Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &
MehrSchwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen
Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung
MehrNeuere Sprachelemente in Java
Softwaretechnik 1 Vorlesung Neuere Sprachelemente in Java Prof. Dr. Bernhard Rumpe Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Neuerungen seit Java 5.0 Java Spracherweiterungen
MehrRemote Method Invocation
Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf
MehrFunktionales 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,...
MehrJava Concurrency Utilities
Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),
MehrKapitel 4: Klassen und Unterklassen
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
MehrExkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt 26.03.2014 tobias.witt@hhu.de 25.12.01.30 Bürozeiten: 09 Uhr - 12 Uhr FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Mehr8. Generics Grundlagen der Programmierung 1 (Java)
8. Generics Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 6. Dezember 2005 Einordnung im Kontext der Vorlesung 1.
MehrAnwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
MehrKapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt
MehrEinführung in C# Teil 3. Matthias Nübling
Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
Mehr