Domänenspezifische Sprachen

Größe: px
Ab Seite anzeigen:

Download "Domänenspezifische Sprachen"

Transkript

1

2

3

4 Domänenspezifische Sprachen

5 Agenda: 'Programmiersprachen' 'Domänenspezifische' 'Sprachen' 'Vorteile' 'Technische' 'Erwartungen', 'Xtext' 'Demo';

6 'Programmiersprachen'

7

8

9

10

11

12

13

14 Domäne

15 GPL Domäne

16 GPL Domäne DSL

17 'Domänenspezifische' 'Sprachen'

18 Bestimmte Aufgaben

19 Bestimmte Aufgaben Domäne => Maschine

20 SELECT * FROM Mitarbeiter m INNER JOIN Abteilung a ON m.id = a.mid;

21 \documentclass{article} \begin{document} \LaTeX rockt! \end{document}

22 /bookstore/book[price>35.00] /bookstore/book[price>35.00]/title

23 <!DOCTYPE html> <html> <head> <title>domänenspezifische Sprachen</title> </head> <body> <h1>überschrift</h1> <p>paragraph</p> </body> </html>

24 h1 { text-align: center; color: red; } h2 { text-align: center; color: red; } p { } text-align: center; color: red;

25 OCR DSL Archiv

26 if (beschlagwortung.dokumentenklasse.equals("abrech") && beschlagwortung.dokumentntyp.equals("rechnung")) { foreach (var gruppe in this.gruppen) { if (HatPamSperreBeiGruppe(vorgang.Status, gruppe)) { zuweisung = new ZuweisungGruppe(gruppe)) } } } if (vorgang.basiskennzeichen.equals(versis.kennzeichen_basistarif)) { zuweisung = new ZuweisungBenutzer("AMSHOVE"); } if (vorgang.basiskennzeichen.equals(versis.kennzeichen_standardtarif)) { var name = vorgang.name; if (NameIstImBereich(name, 'A', 'M')) { zuweisung = new ZuweisungBenutzer("MUSTERMANN"); } if (Name.IstImBereich(name, 'N', 'Z')) { zuweisung = new ZuweisungBenutzer("MUSTERFRAU"); } } zuweisung = null;

27 zuweisung = null;???

28 Klammer "Kennzeichen Standardtarif" { BasisKennzeichen = "S" Regel "Name A bis M" => Benutzer "MUSTERMANN" { Name zwischen "A" und "M" } } Regel "Name N bis Z" => Benutzer "MUSTERFRAU" { Name zwischen "N" und "Z" }

29 % Kommentare Durchschnittliche Komplexität % Durchschnittliche Kommentare Durchschnittliche Tiefe Methoden pro Klasse Maximale Tiefe 37 Maximale Komplexität 35 2

30

31

32

33 Vorteile

34

35

36

37

38

39

40

41

42

43

44

45

46

47 'Technische' 'Erwartungen'

48 Abstract Syntax Tree

49

50

51

52

53 public class Main { public static void main(string[] args) { System.out.println("Hello World"); } } => Compiled from "Main.java" public class Main { public Main(); Code: 0: aload_0 1: invokespecial #1 4: return } public static void main(java.lang Code: 0: getstatic #2 3: ldc #3 5: invokevirtual #4 8: return

54

55

56 public void methodeeins() { } int a = 5; public void methodezwei() { } a = 10;

57 public void methodeeins() { } int a = 5; public void methodezwei() { } a = 10;

58

59

60

61

62 'Xtext'

63

64 Textuelle Entwicklung

65 Generate once, develop everywhere

66 Generate once, develop everywhere Grammatik

67 Generate once, develop everywhere Grammatik Sprachinfrastruktur IDE-Integration

68 Generate once, develop everywhere

69 Generate once, develop everywhere

70 Generate once, develop everywhere

71 Generate once, develop everywhere

72 Generate once, develop everywhere

73 Generate once, develop everywhere Language Server Protocol

74 Generate once, develop everywhere Language Server Protocol [ ]

75 Grammatik Language Server Protocol [ ]

76

77

78

79

80

81

82

83

84 Person: 'Person' name=id 'ist' geschlecht=geschlecht;

85 Parserregel Person: 'Person' name=id 'ist' geschlecht=geschlecht;

86 Parserregel Feature (Attribut) Person: 'Person' name=id 'ist' geschlecht=geschlecht;

87 Parserregel Feature (Attribut) Person: 'Person' name=id 'ist' geschlecht=geschlecht;

88 Parserregel Feature (Attribut) Person: 'Person' name=id 'ist' geschlecht=geschlecht; Keyword

89 Person: 'Person' name=id 'ist' ;

90 Person: 'Person' name=id 'ist' ; enum Geschlecht: Maennlich Weiblich;

91 Person: 'Person' name=id 'ist' ; enum Geschlecht: Maennlich Weiblich;

92 Person: 'Person' 'ist' geschlecht=geschlecht; terminal ID : '^'?('a'..'z' 'A'..'Z' '_') ('a'..'z' 'A'..'Z' '_' '0'..'9')*;

93 Person: 'Person' 'ist' geschlecht=geschlecht; terminal ID : '^'?('a'..'z' 'A'..'Z' '_') ('a'..'z' 'A'..'Z' '_' '0'..'9')*;

94 Person: 'Person' name=id 'ist' geschlecht=geschlecht;

95 Person: 'Person' name=id 'ist' geschlecht=geschlecht; Person Markus ist Maennlich

96 Person Markus ist Maennlich

97 Person Markus ist Maennlich public interface Person extends EObject { String getname(); } Geschlecht getgeschlecht();

98 Gruss: 'Hallo' person=[person] '!';

99 Gruss: 'Hallo' person=[person] '!'; Referenz auf Instanz

100 Person Markus ist Maennlich Hallo Markus!

101 Person Markus ist Maennlich Hallo Markus!

102 Hallo Markus!

103 Hallo Markus! public interface Gruss extends AbstraktesModellElement { Person getperson(); }

104 Modell: elemente+=abstraktesmodellelement*; AbstraktesModellElement: Person Gruss;

105 EList<AbstraktesModellElement> getelemente(); List Modell: elemente+=abstraktesmodellelement*; AbstraktesModellElement: Person Gruss;

106 EList<AbstraktesModellElement> getelemente(); List 0.. Modell: elemente+=abstraktesmodellelement*; AbstraktesModellElement: Person Gruss;

107 EList<AbstraktesModellElement> getelemente(); List 0.. Modell: elemente+=abstraktesmodellelement*; AbstraktesModellElement: Person Gruss; Person ODER Gruss

108 Modell: elemente+=abstraktesmodellelement*; AbstraktesModellElement: Person Gruss; Person: 'Person' name=id 'ist' geschlecht=geschlecht; enum Geschlecht: Maennlich Weiblich; Gruss: 'Hallo' person=[person] '!';

109 Modell: elemente+=abstraktesmodellelement*; AbstraktesModellElement: Person Gruss; Person: 'Person' name=id 'ist' geschlecht=geschlecht; enum Geschlecht: Maennlich Weiblich; Gruss: 'Hallo' person=[person] '!';

110

111 if (!Character.isUpperCase(person.name.charAt(0))) { warning( "Namen sollten groß geschrieben werden", Literals.PERSON NAME, NICHT_VALIDER_NAME ) }

112 if (!Character.isUpperCase(person.name.charAt(0))) { warning( "Namen sollten groß geschrieben werden", Literals.PERSON NAME, NICHT_VALIDER_NAME ) } Stelle im Code

113 if (!Character.isUpperCase(person.name.charAt(0))) { warning( "Namen sollten groß geschrieben werden", Literals.PERSON NAME, NICHT_VALIDER_NAME ) } Identifier

114 acceptor.accept(issue, 'Schreibe groß', 'Schreibt den Namen groß.', 'image.png') [ val dokument = it.xtextdocument val ersterbuchstabe = dokument.get(issue.offset, 1) dokument.replace(issue.offset, 1, ersterbuchstabe.touppercase) ]

115 Identifier acceptor.accept(issue, 'Schreibe groß', 'Schreibt den Namen groß.', 'image.png') [ val dokument = it.xtextdocument val ersterbuchstabe = dokument.get(issue.offset, 1) dokument.replace(issue.offset, 1, ersterbuchstabe.touppercase) ]

116

117 Person Markus ist Maennlich Person Tina ist Weiblich Hallo Tina! Hallo Markus!

118 def dispatch void format(person person, extension IFormattableDocument document) { person.append[newline] } def dispatch void format(gruss gruss, extension IFormattableDocument document) { gruss.append[newline] }

119 Person Markus ist Maennlich Person Tina ist Weiblich Hallo Tina! Hallo Markus!

120

121 class Generator extends AbstractGenerator {

122 class Generator extends AbstractGenerator { override void dogenerate(resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) { }

123 private def generieregruss(gruss gruss) { return ''' Hallo «generieregeschlecht(gruss.person.geschlecht)» «gruss.person.name»! ''' }

124 private def generieregruss(gruss gruss) { return ''' Hallo «generieregeschlecht(gruss.person.geschlecht)» «gruss.person.name»! ''' } private def generieregeschlecht(geschlecht geschlecht) { return switch (geschlecht) { case MAENNLICH: "Herr" case WEIBLICH: "Frau" } }

125 Person Markus ist Maennlich Person Tina ist Weiblich Hallo Tina! Hallo Markus!

126 Person Markus ist Maennlich Person Tina ist Weiblich Hallo Tina! Hallo Markus! => Hallo Herr Markus! Hallo Frau Tina!

127 'Demo'

128 Ende Was könnt ihr nun damit machen? Entwickelt eine neue Sprache die in JavaScript übersetzt

Das Unternehmen Die Abteilung

Das Unternehmen Die Abteilung 1 Das Unternehmen Die Abteilung 2 Projektbeschreibung 3 Beschlagworten Routen Erkennen Prüfen BREPL Leisten smartfix BREPL PAM 4 Projektziel 5 Projektbegründung if (beschlagwortung.dokumentenklasse.equals("abrech")

Mehr

Mit 'Babysteps' in die XTEXT-XTEND Welt

Mit 'Babysteps' in die XTEXT-XTEND Welt Mit 'Babysteps' in die XTEXT-XTEND Welt Teil 4: externer Codegenerator mit Umgebungskenntnis dank DSL Anbei noch einmal die Code Listings wie sie der Editor zeigt, also mit Syntax Highlites. Passend zum

Mehr

Mit 'Babysteps' in die XTEXT-XTEND Welt

Mit 'Babysteps' in die XTEXT-XTEND Welt mit 'Babysteps' in die XTEXT-XTEND Welt T9 Codesamples.doc Seite 1, Druckdatum: 26.01.2015, 08:41 Uhr Mit 'Babysteps' in die XTEXT-XTEND Welt Teil 9: Das LUECKEN(X)TEXT Modul, eine DSL mit Unterstützung

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

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung

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

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

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Kapitel 3 Das Typsystem von C#

Kapitel 3 Das Typsystem von C# Kapitel 3 Das Typsystem von C# David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Eine virtuelle Maschine

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

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

Konzeption und Implementierung einer dateibasierten Lösung zum Offline-Zugriff auf eine Enterprise 2.0 Plattform

Konzeption und Implementierung einer dateibasierten Lösung zum Offline-Zugriff auf eine Enterprise 2.0 Plattform Fakultät für Informatik Technische Universität München Konzeption und Implementierung einer dateibasierten Lösung zum Offline-Zugriff auf eine Enterprise 2.0 Plattform 8. August 2011 Bearbeiter: Kilian

Mehr

Programmieren 2 Java Überblick

Programmieren 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

Mehr

Kapitel 9 Schnittstellen

Kapitel 9 Schnittstellen Kapitel 9 Schnittstellen Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Agenda Was ist eine Schnittstelle?

Mehr

Dynamisches EMF und Codegenerierung mit JET. 14. November 2012

Dynamisches EMF und Codegenerierung mit JET. 14. November 2012 Dynamisches EMF und Codegenerierung mit JET 14. November 2012 Überblick Wie kann eine Modell-zu-Text-Transformation entwickelt werden? Referenzanwendung(en) möglichst generell schreiben und analysieren

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/

Mehr

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold DSLs mit Xtext entwerfen 17.08.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was sind DSLs? 2. Xtext Konzepte 3. Einführung ins Sprachdesign 4. Hands On! 3 4 8 20 2 Was sind DSLs? Domain Specific

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2012/2013, SS 2013 Programmieren I + II Regeln der Code-Formatierung Die hier vorgestellten

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

Klausur: Java (Liste P)

Klausur: Java (Liste P) Klausur: Java (Liste P) SS05 Erlaubte Hilfsmittel: Gebundene! Unterlagen (Skript mit Anmerkungen, eigene Mitschrift) und maximal ein Buch. Bitte keine losen Blätter. Lösung ist auf den Klausurbögen anzufertigen.

Mehr

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich 06.07.2006 Gliederung 1 2 3 4 . Autor und Name Features Autor Autor und Name Features Autor: Étienne Gagnon : Teil seiner Masterarbeit an der McGill-Universität Montreal vom März 1998 Name Autor und Name

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

Threading. Arthur Zaczek. Aug 2015

Threading. Arthur Zaczek. Aug 2015 Arthur Zaczek Aug 2015 1 Threading 1.1 Motivation Threading erlaubt die gleichzeitige Ausführung von mehreren Programmteilen. mehrere gleichzeitige Anfragen: Webserver, Datenbank (zu) lange laufende Berechnungen:

Mehr

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 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

Prüfung Softwareentwicklung II (IB)

Prüfung Softwareentwicklung II (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B, IB 2 C Sommersemester 2013 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2013, 08:30 Uhr

Mehr

Java und Eclipse Installation, erstes Beispielprogramm

Java und Eclipse Installation, erstes Beispielprogramm Java und Eclipse Installation, erstes Beispielprogramm Bernfried Geiger, Intellisys GmbH, Sindelfingen www.intellisys.de Jens-B. Augustiny, LIGONET GmbH, Lobsigen bei Bern www.ligonet.ch Agenda Ziele /

Mehr

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Programmieren 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

Mehr

Prüfung Softwareentwicklung I (IB)

Prüfung Softwareentwicklung I (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 3 B, IB 3 C Wintersemester 2013/14 Prüfung Softwareentwicklung I (IB) Datum : 03.02.2014, 08:30

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

3. Übungsbesprechung Programmkonstruktion

3. Übungsbesprechung Programmkonstruktion 3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at November 16, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK November 16, 2011 1 / 22 Rückblick und

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Mit 'Babysteps' in die XTEXT-XTEND Welt

Mit 'Babysteps' in die XTEXT-XTEND Welt mit 'Babysteps' in die XTEXT-XTEND Welt T7 Codesamples.doc Seite 1, Druckdatum: 18.08.2014, 11:08 Uhr Mit 'Babysteps' in die XTEXT-XTEND Welt Teil 7: LUECKEN(X)TEXT, eine DSL mit dynamischer Anbindung

Mehr

pue13 January 28, 2017

pue13 January 28, 2017 pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern

Mehr

jambit academy: Selbsttest Programmierkenntnisse

jambit academy: Selbsttest Programmierkenntnisse jambit academy: Selbsttest Programmierkenntnisse Einleitung Für die Teilnahme am jambit academy-kurs Softwareentwicklung in der Praxis sollten Sie bereits Grundkenntnisse in der Programmierung mitbringen.

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK ECHNISCHE UNIVERSIÄ MÜNCHEN FAKULÄ FÜR INFORMAIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 9 F. Forster,. Gawlitza,

Mehr

Kapitel 3 Das Typsystem von C#

Kapitel 3 Das Typsystem von C# Kapitel 3 Das Typsystem von C# Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Agenda Kurze Wiederholung

Mehr

Grundlagen der Modellierung und Programmierung, Übung

Grundlagen der Modellierung und Programmierung, Übung Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Klaus Küspert LS Datenbanksysteme Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Dr. Wilhelm Rossak

Mehr

Übungen zum Bioinformatik-Tutorium. Blatt 6

Übungen zum Bioinformatik-Tutorium. Blatt 6 Institut für Informatik Wintersemester 2018/19 Praktische Informatik und Bioinformatik Prof. Dr. Ralf Zimmer Übungen zum Bioinformatik-Tutorium Blatt 6 Termin: Dienstag, 27.11.2018, 11 Uhr 1. Klassen und

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Bytecode-Manipulation leicht gemacht. Christian Kumpe, JavaLand 14. März 2018

Bytecode-Manipulation leicht gemacht. Christian Kumpe, JavaLand 14. März 2018 Bytecode-Manipulation leicht gemacht Christian Kumpe, JavaLand 14. März 2018 Agenda Referent Einführung Motivation Werkzeuge Javassist & ClassFileTransformer Fazit Copyright 2018 diva-e Digital Value Excellence

Mehr

Bytecode-Manipulation leicht gemacht. Christian Kumpe, Entwicklertag Karlsruhe 20. Juni 2018

Bytecode-Manipulation leicht gemacht. Christian Kumpe, Entwicklertag Karlsruhe 20. Juni 2018 Bytecode-Manipulation leicht gemacht Christian Kumpe, Entwicklertag Karlsruhe 20. Juni 2018 Agenda Referent Einführung Motivation Werkzeuge Javassist & ClassFileTransformer Fazit Copyright 2018 diva-e

Mehr

JavaCC Rainer Schmidberger

JavaCC Rainer Schmidberger JavaCC Rainer Schmidberger Universität Stuttgart Institut für Softwaretechnologie, Abt. Software Engineering rainer.schmidberger@informatik.uni-stuttgart.de Übersicht JavaCC ist ein in Java implementierter

Mehr

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

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

JUnit. Unit testing unter Java

JUnit. Unit testing unter Java JUnit Unit testing unter Java Was ist Junit? einfaches Framework zum Schreiben von wiederholbaren Tests Besonders geeignet für unit testing Erlaubt Hierarchie von Testsuites Schreiben eines Test Case 1.

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

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

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

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

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

Methoden (fortgeschritten) in C# - 1

Methoden (fortgeschritten) in C# - 1 Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich

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

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

Mit 'Babysteps' in die XTEXT-XTEND Welt

Mit 'Babysteps' in die XTEXT-XTEND Welt mit 'Babysteps' in die XTEXT-XTEND Welt T6 Codesamples.doc Seite 1, Druckdatum: 11.06.2014, 19:39 Uhr Mit 'Babysteps' in die XTEXT-XTEND Welt Teil 6: schnelle Visualisierung von Abhängigkeiten dank DSL

Mehr

ÜBUNGS-BLOCK 8 AUFGABEN

ÜBUNGS-BLOCK 8 AUFGABEN ÜBUNGS-BLOCK 8 AUFGABEN Aufgabe 1: Gegeben sind drei Klassen (linke Spalte) sowie ein Programm (rechts): public class A { this.var = var; public int getvar() { return var; public class Programm { public

Mehr

Informatik I Eprog HS12

Informatik I Eprog HS12 software evolution & architecture lab Informatik I Eprog HS12 Übung 11 1 Aufgabe: Interfaces & Visitor-Pattern 1.1 Lernziele 1. Die Verwendung von Interfaces trainieren. 2. Das Visitor Design-Pattern kennenlernen.

Mehr

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel Java für Anfänger Teil 2: Java-Syntax Programmierkurs 11.-15.10.2010 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.

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

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

16. Dezember 2004 Dr. M. Schneider, P. Ziewer Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf

Mehr

Objektorientiertes Programmieren (Java)

Objektorientiertes Programmieren (Java) Grundlagen Objektorientiertes Programmieren (Java) Java folgt gewissen Rechtschreibregeln die Syntax. Diese besagt, dass hinter jeden Befehl ein Semikolon( ; ) stehen muss, damit der Computer weiß, dass

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben 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

Mehr

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen 1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new

Mehr

Parallele und Verteilte Systeme

Parallele und Verteilte Systeme Parallele und Verteilte Systeme Einführung in die Netzwerk Programmierung mit Java : JavaIDL Hello World (C) J.M.Joller 1 Zeitlicher Ablauf Hello World Übersicht IDL Interface Beschreibung Der Client (Der

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 9 Lösungsvorschlag Objektorientierte Programmierung 26. 06. 2006 Aufgabe 19 (Sieb des Erathostenes)

Mehr

Übung 1: Installation + Test von Eclipse. Übung 2: Hello World

Übung 1: Installation + Test von Eclipse. Übung 2: Hello World Übung 1: Installation + Test von Eclipse Es soll die Installation der Entwicklungsumgebung Eclipse durchgeführt werden gemäss Dokument "InstallationTest.Eclipse.15.0.pdf" auf der DVD im Verzeichnis Eclipse.

Mehr

C++ vs. Java. Hello world! Java C++ class HelloWorld { static public void main(string args) { System.out.println("Hello World!

C++ 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

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

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

Informatik II Übung 1

Informatik II Übung 1 Übung 1 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös gabor.soros@inf.ethz.ch Wer bin ich? Florian Scheidegger Student D-ITET (6 Semester) E-Mail:

Mehr

Informatik II Musterlösung

Informatik II Musterlösung Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 8 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe sind Dateien abzugeben,

Mehr

Java Spickzettel von Panjutorials.de

Java Spickzettel von Panjutorials.de Java Spickzettel von Panjutorials.de Hallo Welt public class HalloWelt public static void main(string[] args) // Gibt "Hallo Welt" auf die Konsole aus System.out.print("Hallo Welt"); Eine eigenständige

Mehr

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker, Java-Einführungskurs Informatik II (D-ITET) Vincent Becker, vincent.becker@inf.ethz.ch Was haben wir heute vor? Vorbereitung auf die Übungen zu Informatik II Vorstellung des Teams Organisatorisches Theorie

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

Vererbung und Polymorphie

Vererbung 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

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 -

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Martin Wirsing 2 Ziele Geschichte der OO-Programmiersprachen Warum Java als Programmiersprache verwenden? Ein einfaches Java-Programm erstellen, übersetzen und

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

Klausur Software-Entwicklung März 01

Klausur Software-Entwicklung März 01 Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,

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

Wahlpflichtfach Design Pattern

Wahlpflichtfach Design Pattern Wahlpflichtfach Design Pattern Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik miwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338

Mehr

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker, Java-Einführungskurs Informatik II (D-ITET) Vincent Becker, vincent.becker@inf.ethz.ch Was haben wir heute vor? Vorbereitung auf die Übungen zu Informatik II Vorstellung des Teams Organisatorisches Theorie

Mehr

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert

Mehr