Bean-Mapping mit MapStruct

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Bean-Mapping mit MapStruct"

Transkript

1 Machst Du noch Reflection oder annotierst Du schon? Bean-Mapping mit MapStruct Thomas Much 1

2 20 Jahre Java, 18 Jahre Beans JavaBeans JAXBEntities JPAPOJOs Entities Form Beans DTOs Typsicheres, schnelles BeanMapping! 2

3 Alte Architekturen 3

4 Was Java EE 5+ und JPA versprechen 4

5 Die moderne Realität 5

6 Das = "KUNDEN") public class Kunde Long id; long kundennummer; String KundenArt kundenart; public class KundeDTO { long id; String kundennummer; String name; String kundenart; Getter und Setter! Getter und Setter! 6

7 kann aufwendig werden DTO JPA- Entity REST- Entity JAXB- Entity View- Bean 7

8 Mapping-Implementation wie? Selbst programmiert alle Getter/Setter von Hand aufrufen eigene Reflection-Routinen Reflection-Bibliotheken: Apache BeanUtils Dozer Probleme: Aufwand, Typunsicherheit, Performance 8

9 MapStruct MapStruct: Annotations-Prozessor, der Mapping-Code generiert Keine Reflection! Typsicher und schnell Mind. Java 6, spezielle Unterstützung für Java 8 Minimale Laufzeitabhängigkeit (< 20 K) Je nach Komponentenmodell gar keine Abhängigkeit 9

10 Achtung, Beta! Seit 2013 in Entwicklung Aktuelle Version Beta4 Finale Version bald erwartet 10

11 Artefakte (Dependencies)

12 Beispiel JPA-Entity = "KUNDEN") public class Kunde Long id; long kundennummer; String KundenArt kundenart; Alle public-properties sollen gemappt werden (auch aus Oberklassen) public class KundeDTO { long id; String kundennummer; String name; String kundenart; Getter und Setter! Getter und Setter! 12

13 Beispiel MapStruct minimal import org.mapstruct.mapper; import public interface KundeMapper { KundeMapper INSTANCE = Mappers.getMapper(KundeMapper.class); KundeDTO kunde2kundedto(kunde kunde); Live Demo KundeDTO dto = KundeMapper.INSTANCE.kunde2KundeDto( kunde ); 13

14 Beispiel generierter value = "org.mapstruct.ap.mappingprocessor", date = " T22:01: ", comments = "version: Beta4, compiler: Eclipse JDT (IDE) " ) public class KundeMapperImpl implements KundeMapper public KundeDTO kunde2kundedto(kunde kunde) { if ( kunde == null ) { return null; date- und comments- Attribute können unterdrückt werden Mapper sind Thread-sicher! KundeDTO kundedto = new KundeDTO(); kundedto.setname( kunde.getname() ); kundedto.setkundennummer( String.valueOf( kunde.getkundennummer() ) ); if ( kunde.getkundenart()!= null ) { kundedto.setkundenart( kunde.getkundenart().tostring() ); if ( kunde.getid()!= null ) { kundedto.setid( kunde.getid() ); return kundedto; 14

15 Typsicherheit 15

16 Meldungen für Target-Properties Alternativ global per System-Property konfigurieren 16

17 Mapper in Komponentenmodellen default cdi spring value = "org.mapstruct.ap.mappingprocessor", public class KundeMapperImpl implements KundeMapper { 17

18 Updates Beans public interface KundeMapper { Alternativ Target- Typ als Rückgabe (für fluent-aufrufe) void updatekundefromdto( KundeDTO Kunde kunde); Max. ein Mapping-Target 18

19 Objektgraphen mappen public class Kunde { Adresse adresse; public class KundeDTO { AdressDTO adresse; Getter und Setter! Getter und public interface KundeMapper { KundeDTO kunde2kundedto(kunde kunde); AdresseDTO adresse2adressedto(adresse adresse); 19

20 Unterschiedliche public interface target="kundenname") ) KundeDTO kunde2kundedto(kunde target="postleitzahl") AdresseDTO adresse2adressedto(adresse adresse); 20

21 public interface KundeMapper target="kundennummer", target="name", dependson={"vorname","nachname") KundeDTO kunde2kundedto(kunde kunde); setkundennummer() wird nach setkundenart() aufgerufen Keine zugesicherte Reihenfolge innerhalb des Arrays 21

22 Autom. (implizite) Typumwandlung Primitive Typen Wrapper (inkl. null-checks) int Integer etc. int/long/byte Integer etc. Primitive Typen & Wrapper String int/integer/boolean String etc. enum String BigInteger/BigDecimal Primitive/Wrapper/String 22

23 Autom. Typumwandlung (JAXB) JAXBElement<T> T List<JAXBElement<T>> List<T> XMLGregorianCalendar Date/Calendar 23

24 Autom. Typumwandlung (Datum+Zeit) Date/Calendar/XMLGregorianCalendar String / dateformat Joda String / dateformat Joda Date, Calendar java.time String / dateformat java.time Date, Calendar 24

25 Autom. Typumwandlung public interface KundeMapper dateformat="dd.mm.yyyy") KundeDTO kunde2kundedto(kunde List<String> datelist2stringlist(list<date> list); 25

26 Mehrere Quell-Objekte Beans public interface KundeMapper { Bel. Verschachtelungstiefe (null-checks bei source="gewicht") ) Lieferanschrift buildlieferanschrift( Kunde kunde, Adresse adresse, Integer gewicht); Bel. viele Quell-Parameter 26

27 Arrays und public interface KundeMapper { CollectionMappingStrategy (Setter vs. Adder) konfigurierbar KundeDTO kunde2kundedto(kunde kunde); List<KundeDTO> kunden2dtos(list<kunde> kunden); KundeDTO[] kunden2dtos(kunde[] kunden); KundeDTO[] kundenlist2dtoarray(list<kunde> kunden); List<KundeDTO> kundenarray2dtolist(kunde[] kunden); Set<String> ints2strings(set<integer> ints); 27

28 Maps public interface KundeMapper { KundeDTO kunde2kundedto(kunde kunde); Ebenso Map<String,String> mapknrdatum(map<long,date> map); 28

29 enum-werte public interface KundeMapper { KundeDTO kunde2kundedto(kunde source="normal") DtoKundenArt kundenart2dtokundenart(kundenart art); 29

30 Eigener Mapping-Code public abstract class KundeMapper ) public abstract KundeDTO kunde2kundedto(kunde k); public AdresseDTO adresse2adressedto(adresse adr) { eigener Mapping-Code 30

31 Eigener Mapping-Code (2) Eigene Mapping-Klasse muss dasselbe Komponentenmodell wie der MapStruct-Mapper public interface KundeMapper ) KundeDTO kunde2kundedto(kunde kunde); 31

32 Bean-Fabriken public class DtoFactory { public KundeDTO createkundedto() { return new KundeDTO(); public class EntityFactory { public <T extends BaseEntity> T Class<T> entityclass) { return EntityFactory.class) public interface KundeMapper { KundeDTO kunde2kundedto(kunde kunde); Kunde kundedto2kunde(kundedto dto); 32

33 Exceptions beim Mapping public class SelbstgeschriebenerMapper { public KundenArt long2kundenart(long zahl) throws KundenArtException, SchwereException { Nicht deklarierte Checked-Exceptions werden als RuntimeExceptions weiter public interface KundeMapper { Kunde dto2kunde(kundedto dto) throws KundenArtException; 33

34 Konstante Werte im Ziel public interface KundeMapper target="stringattribut", constant="mein target="intattribut", target="longwrapperattribut", target = "dateattribut", dateformat = "dd.mm.yyyy", constant = " " ) KundeDTO kunde2kundedto(kunde kunde); 34

35 Berechnete Werte im Ziel public interface KundeMapper target="geburtsdatum", expression= "java( new Date(kunde.getGeburtsdatumMillis()) )" ) KundeDTO kunde2kundedto(kunde kunde); 35

36 Methoden per Qualifier auswählen (1) public class AnredeMapper { public String deutsch2englisch(string anrede) { public String englisch2deutsch(string anrede) public interface KundeMapper { KundeDTO kunde2kundedto(kunde kunde); 36

37 Methoden per Qualifier auswählen public class AnredeMapper public String deutsch2englisch(string anrede) public String englisch2deutsch(string anrede) public interface KundeMapper qualifiedby={ AnredeUebersetzer.class,EnglischNachDeutsch.class ) KundeDTO kunde2kundedto(kunde kunde); 37

38 null-mapping anpassen Bei null-wert wird standardmäßig null gesetzt. Mit nullvaluemappingstrategy = NullValueMappingStrategy.RETURN_DEFAULT werden stattdessen Default-Werte gesetzt (für primitive Type, Listen etc.) Verfügbar etc. 38

39 Mapping-Konfiguration public interface KundeMapper ) KundeDTO ) void updatedtofromkunde( Kunde KundeDTO dto); 39

40 Umgekehrte public interface KundeMapper ) KundeDTO kunde2kundedto(kunde Kunde kundedto2kunde(kundedto dto); 40

41 Gemeinsam genutzte mappinginheritancestrategy= MappingInheritanceStrategy.AUTO_INHERIT_FROM_CONFIG ) public class MeineKonfiguration ) BasisDTO entity2dto(basisentity entity); Hier wird noch kein Mapping-Code public interface KundeMapper ) KundeDTO kunde2kundedto(kunde kunde); 41

42 Ausblick Eclipse-Plugin Frühes Entwicklungsstadium 42

43 MapStruct Fazit Trotz Beta schon produktiv einsetzbar! Zur Not wird der generierte Code eingecheckt und später von Hand weiter gepflegt. Generierter Code ist einfach und lesbar. Flexible (Custom-)Mappings Einfache Einbindung in div. Komponentenmodelle 43

44 Fragen? Vielen Dank!

Einfache Bean-Mappings mit MapStruct 1.2

Einfache Bean-Mappings mit MapStruct 1.2 t 11. 14.12.2017 Frankfurt am Main Thomas Much Einfache Bean-Mappings mit MapStruct 1.2 @thmuch #ittage Wer steht hier vorne? Thomas Much Agile Developer Coach & XP Coder (Java et al.) Mag coole kleine

Mehr

WER ERZÄHLT DIE NÄCHSTEN 55+ MINUTEN ETWAS?

WER ERZÄHLT DIE NÄCHSTEN 55+ MINUTEN ETWAS? WER ERZÄHLT DIE NÄCHSTEN 55+ MINUTEN ETWAS? Gerrit Brehmer, Karlsruhe Auf der Arbeit: Software-Entwickler/Architekt ( / Projektleiter) bei der inovex GmbH In der Freizeit: Smart Home BEAN-MAPPING: EINSATZ

Mehr

Bean-Mapping mit MapStruct

Bean-Mapping mit MapStruct Bean-Mapping mit MapStruct Thomas Much @thmuch www.muchsoft.com www.jughh.de 1 Java und Beans, eine lange Geschichte 1995 Form Beans 1998 DTOs 1999 POJOs 2000 JPA- Entities 2006 Typsicheres, schnelles

Mehr

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.4.2 Abstrakte Klassen und Interfaces - 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.2 Abstrakte Klassen und Interfaces - 1

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 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

Mehr

ADT: Java Collections und ArrayList

ADT: 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,

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate 1 von 43 Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate 27.11.11 Agenda Einleitung Ist-Zustand Bookstore Was ist Hibernate? Wie funktioniert Hibernate? Was ist Spring? Architektur

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Auszug aus JAX-WS Folien

Auszug aus JAX-WS Folien Auszug aus JAXWS Folien Dieses Dokument ist ein Auszug aus unserem Skript zur Java Web Services Schulung. Es dient lediglich als Beispiel für unsere Kursunterlagen. Thomas Bayer Hauptstraße 33 75050 Gemmingen

Mehr

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk Workshop Java Webentwicklung Einführung in Hibernate Ulrich Stärk Ablauf Montag bis Donnerstag 09:00 Uhr s.t. Beginn, bis ca. 17:00 Uhr 1 Stunde Mittagspause Donnerstag Experiment Aufzeichnung der Programmiertätigkeit

Mehr

http://www.tutego.com/ JdbcTemplate

http://www.tutego.com/ JdbcTemplate http://www.tutego.com/ JdbcTemplate JdbcTemplate Die Klasse org.springframework.jdbc.core.jdbctemplateist zentral im JDBC-Paket von Spring. Die Klasse führt einfach SQL-Anweisungen aus liest Ergebnisse

Mehr

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

Mehr

II.4.5 Generische Datentypen - 1 -

II.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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Lambda Expressions in Java 8

Lambda 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

Mehr

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 - ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete II.4.2 Abstrakte Klassen und Interfaces - 1 - Ähnliche Programmteile public class Bruchelement { Bruch wert;

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. 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

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

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

Kapitel 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

Mehr

1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete II.4.2 Abstrakte Klassen und Interfaces - 1 - Ähnliche Programmteile public class Bruchelement { Bruch wert;

Mehr

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl. Vorbereitungen Download AVO-Übung ICE Andreas I. Schmied (andreas.schmied@uni-ulm.de) AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS005 Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation

Mehr

Java Generics & Collections

Java Generics & Collections Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes

Mehr

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring? oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut 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

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

Kapitel 5: Interfaces

Kapitel 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,

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Vererbung. CoMa-Übung XI TU Berlin. CoMa-Übung XI (TU Berlin) Vererbung / 47

Vererbung. CoMa-Übung XI TU Berlin. CoMa-Übung XI (TU Berlin) Vererbung / 47 Vererbung CoMa-Übung XI TU Berlin 16.01.2013 CoMa-Übung XI (TU Berlin) Vererbung 16.01.2013 1 / 47 Themen der Übung Themen heute Evaluation Rücksprachen IDEs Eclipse & Netbeans Packages, innere Klassen

Mehr

Properties und Proxies

Properties und Proxies g n årà Dr. Winfried Grünewald service@grnwld.de Properties und Proxies Dr. Winfried Grünewald, Stutensee 2011 Version 0.9 2/10 1 Einleitung Die Java Entwicklungsumgebung bietet mit den Properties-Dateien

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

5. Übung zu Software Engineering

5. Übung zu Software Engineering 5. Übung zu Software Engineering WS 2009/2010 Henning Heitkötter Desktop-Anwendung AUFGABE 13 1 Schichtenarchitektur Strukturierung komplexer Anwendungen Anforderungen: Flexibilität, Robustheit, Wartbarkeit,

Mehr

Java Reflection. Andreas Lochbihler. 15. Mai Lehrstuhl Programmierparadigmen Universität Karlsruhe

Java Reflection. Andreas Lochbihler. 15. Mai Lehrstuhl Programmierparadigmen Universität Karlsruhe Java Reflection Andreas Lochbihler Lehrstuhl Programmierparadigmen Universität Karlsruhe 15. Mai 2008 Was ist Reflection? Ein Paket (package) von Interfaces und Klassen, die dem Programm zur Laufzeit Zugriff

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 1 - n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen

Mehr

3 Objektorientierte Konzepte in Java

3 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

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Java Beans. http://java.sun.com/beans/

Java Beans. http://java.sun.com/beans/ Java Beans http://java.sun.com/beans/ Software Komponenten Eine Software Komponente ist ein eigenständiges, flexibles und einfach wieder verwendbares Stück Software. In Java: + Plattformunabhängigkeit

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

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte 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

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

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Type Erasure in Java 5 Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Warum Generics? Containerklassen in Java 1.4 sind generisch nutzbar aber typunsicher. Public class LinkedList

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

Java Concurrency Utilities

Java 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(),

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Informatik 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.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Programmierung von Client/Server- Anwendungen

Programmierung von Client/Server- Anwendungen Programmierung von Client/Server- Anwendungen Komponenten des Web-Containers (Java EE) SoSe2015 Prof. Dr. Andreas Schmietendorf 1 Übersicht zur Vorlesung Entwicklung der Java Enterprise Edition Servlets,

Mehr

Arten des universellen Polymorphismus

Arten des universellen Polymorphismus Arten des universellen Polymorphismus enthaltender Polymorphismus durch Untertypbeziehungen: Ersetzbarkeit: ev. unvorhersehbare Wiederverwendung kann Clients von lokalen Codeänderungen abschotten nicht

Mehr

Prozessautomatisierung mit BPMN 2.0 und Java. bernd.ruecker@camunda.com

Prozessautomatisierung mit BPMN 2.0 und Java. bernd.ruecker@camunda.com Prozessautomatisierung mit BPMN 2.0 und Java bernd.ruecker@camunda.com Bernd Rücker camunda services GmbH Demo Was ist Prozessautomatisierung mit BPMN 2.0 Prozessautomatisierung mit Process Engine Monitoring

Mehr

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.

Mehr

Selbststudium OOP7 & ALG2 Auftrag

Selbststudium OOP7 & ALG2 Auftrag Selbststudium OOP7 & ALG2 Auftrag Kapitel 5.6 1. zu bearbeitende Aufgaben: 5.24 bis 5.30 5.24: Return Method Set entryset() V get(object key) Set keyset() V put(k key, V value) void

Mehr

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Erzeugungsmuster. Kapselung der Objekt-Erzeugung Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory

Mehr

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring Dennis Schulte / Tobias Flohre Enterprise Java Batch mit Spring Dennis Schulte Düsseldorf @denschu www.github.com/denschu blog.codecentric.de/author/dsc tel +49 (0) 1515 _ 288 2395 dennis.schulte@codecentric.de

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Codegeneratoren mit Xtend2. 11.04.2012, A. Arnold

Codegeneratoren mit Xtend2. 11.04.2012, A. Arnold Codegeneratoren mit Xtend2 11.04.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was ist Xtend2? 2. Xtend2 Konzepte 3. Hands On! 3 4 8 20 2 Was ist Xtend2? Funktionale, objektorientierte Sprache

Mehr

Dynamische Typinformation A01 OOP. Dynamische Typinformation

Dynamische Typinformation A01 OOP. Dynamische Typinformation 2013-11-13 Dynamische Typinformation 1 185.A01 OOP Dynamische Typinformation 2013-11-13 Dynamische Typinformation 2 OOP Dynamische Typabfragen Abfrage der Klasse eines Objects: Class y = x.getclass();

Mehr

Arten des universellen Polymorphismus

Arten des universellen Polymorphismus Arten des universellen Polymorphismus enthaltender Polymorphismus durch Untertypbeziehungen: Ersetzbarkeit: ev. unvorhersehbare Wiederverwendung kann Clients von lokalen Codeänderungen abschotten nicht

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Kapitel 12: Übersetzung objektorienter Konzepte

Kapitel 12: Übersetzung objektorienter Konzepte Kapitel 12: Übersetzung objektorienter Konzepte Themen Klassendarstellung und Methodenaufruf Typüberprüfung Klassenhierarchieanalyse Escape Analyse 12.1 Klassendarstellung bei Einfachvererbung class Punkt

Mehr

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung

Mehr

Javakurs für Anfänger

Javakurs 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:

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

JOGGA Der Jogging-Companion

JOGGA Der Jogging-Companion JOGGA Der Jogging-Companion GLIEDERUNG: (1) Idee (2) Funktionen (3) Codebeispiele IDEE: Jeder Jogger kennt das Problem: Man rafft sich auf um eine Runde zu laufen, schwitzt während dessen ohne Ende und

Mehr

8. Generics Grundlagen der Programmierung 1 (Java)

8. 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.

Mehr

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte 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/

Mehr

M. Biebl. 15. Mai Hochschule München Fakultät für Informatik/Mathematik Fach: Clojure. Clojure - Java Interoperabilität. M. Biebl.

M. Biebl. 15. Mai Hochschule München Fakultät für Informatik/Mathematik Fach: Clojure. Clojure - Java Interoperabilität. M. Biebl. Hochschule München Fakultät für Informatik/Mathematik Fach: Clojure 15. Mai 2011 1 sverzeichnis 1 Classpath und Compilepath setzen Beispiel Skript 2 Spezial-Formen Java Arrays Eigene Klassen einbinden

Mehr

Info B VL 14: Java Collections/Reflections

Info 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

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Wiederholung aus SWE2

Wiederholung aus SWE2 Wiederholung aus SWE2 Innere Klassen Diverse neue Sprachfeatures bei Java 1.5 Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Inhalt Innere Klassen Diverse neue Sprachfeatures bei Java 1.5 Pratikum

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

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

FH 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

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

Mehr

Wo sind wir? Übersicht lexikale Struktur von Java

Wo sind wir? Übersicht lexikale Struktur von Java Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 09: Vergleichen und Schranken Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 38 Ziel

Mehr

Praktisches API-Design

Praktisches API-Design Praktisches API-Design Kai Spichale adesso AG 13.07.15 Eine API ist wie die Spitze eines Eisbergs.. 2 http://www.pixelio.de/media/685029 Klassische Funktionen einer API Entkopplung von Implementierung

Mehr

Info B VL 8: Abstrakte Klassen & Interfaces

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

Mehr

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: Typprüfung (Compiler / Laufzeit) In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: 1) Der Compiler prüft

Mehr

Ich liebe Java && Ich liebe C# Rolf Borst

Ich liebe Java && Ich liebe C# Rolf Borst Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Java I Vorlesung Collections

Java I Vorlesung Collections Java I Vorlesung 5 Collections 24.5.2004 Abstrakte Klassen und Interfaces Arrays Java Collections Framework Abstrakte Klassen: Motivation Häufig will man eine Klasse schreiben, die nur als Basisklasse

Mehr

Programmieren 2 11 Objekt-Serialisierung

Programmieren 2 11 Objekt-Serialisierung Programmieren 2 11 Objekt-Serialisierung Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Noch eine Persistenzalternative Eine Adresse als

Mehr

Informatik II Übung 6

Informatik II Übung 6 Informatik II Übung 6 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 11.03.2013

Mehr

Prinzip des Exception Handling

Prinzip des Exception Handling Prinzip des Exception Handling geschützter Block p(); catch (Exception e) { System.out.println(e.toString()); void p() throws Exception { throw new Exception(); Auslösen einer Exception Exception Handler

Mehr