Modellgetriebene Softwareentwicklung bei der IBYKUS AG
|
|
- Dominic Becke
- vor 6 Jahren
- Abrufe
Transkript
1 Modellgetriebene Softwareentwicklung bei der IBYKUS AG Theorie Teil 5: Codegenerierung Dr. Steffen Skatulla IBYKUS AG 1
2 Inhalt Teil 5: Codegenerierung Prinzipien, Einordnung und Abgrenzung Techniken der Codegenerierung Template Engines: JET, XSLT Ausprogrammierte Generatoren OAW-Xpand IBYKUS Techniken Best Practices 2
3 Codegenerierung Model-to-Code-Transformation (M2C) Erzeugung von (Programm-)Code aus Modellen Erzeugen Code für eine bestimmte Plattform plattformspezifisch Funktionen für Codegenerierung Lesen/Abfragen des Input-Modells Umformen der Informationen Konkatenieren / Ersetzen von Text Schreiben in Output-Dateien 3
4 Codegenerierung Für Generierung / Transforamtion nötig Modell (abstrakt) Ausprogrammierte Transformation (Konkretisierung) Widerverwendbarkeit? Verständlichkeit? Modell / Code (weniger abstrakt) 4
5 Codegenerierung Für Generierung / Transforamtion nötig Template Transformations-Engine Separiert vs. integriert Modell (abstrakt) Modell (abstrakt) Template (Konkretisierung) Trafo-Engine (allg. wiederverwendbar) Ausprogrammierte Transformation (Konkretisierung) Modell / Code (weniger abstrakt) Modell / Code (weniger abstrakt) Widerverwendbarkeit? Verständlichkeit? 5
6 Codegenerierung Für Generierung / Transforamtion nötig Template Transformations-Engine Separiert vs. integriert vs. generiert Modell (abstrakt) Modell (abstrakt) Modell (abstrakt) Trafo-Modell (Konkretisierung) Template (Konkretisierung) Trafo-Engine (allg. wiederverwendbar) Ausprogrammierte Transformation (Konkretisierung) Generierte Transformation Trafo-Generator Modell / Code (weniger abstrakt) Modell / Code (weniger abstrakt) Modell / Code (weniger abstrakt) Widerverwendbarkeit? Verständlichkeit? 6
7 Wie tief soll generiert werden? Die Nutzung leistungsfähiger Plattform-Infrastruktur kann die Generierung der Anwendung wesentlich vereinfachen Ziel der Generierung ist Code, der Programmbibliotheken, Frameworks, Middleware benutzt Keine Durchgenerierung bis zum Bytecode Aber es gibt auch Gründe bei Bedarf tiefer zu generieren Generierung Bauteilvorlagen Code mit Spezialbausteinen Modell Programmiersprache, Basisbibliotheken, Generierung auf Frameworkbasis Code auf Frameworkbasis Framework mit Universal-Bausteinen 7
8 Was ist mit Generierung möglich? Performance und geringe Codegröße trotz Flexibilität Flexible Frameworks arbeiten oft dynamisch / interpretativ Dadurch sind sie tendenziell weniger performant und umfangreicher Flexible Generierung Statischen Codes Performance Nur des benötigten Codes geringe Codegröße Analysierbarkeit Statischer generierter Code ist besser analysierbar als dynamische / interpretative Frameworks Fehlerfrüherkennung Bei statische generierten Typen treten Fehler zur Compilezeit auf und nicht erst zur Laufzeit, wie bei dynamischer Typisierung im Framework Einschränkungen der Programmiersprache Z.B. Einführung von objektorientierten Konzepten in die Modellierung auch bei der Generierung in nicht-objektorientierte Programmiersprachen 8
9 Was ist mit Generierung möglich? Aspekte Querschnittsfunktionalität läßt sich zentral an einer Stelle modellieren und bei der Generierung in alle relevanten Stellen einweben, auch ohne Aspektorientierte Programmiersprachen Modell Aspekt-Modell Generator Java-Methode Funktion Querschnittsfunktionalität Querschnittsfunktionalität 9
10 Generierung mit Templates Template Lückentext Angabe, wie Lücken zu füllen sind Template-Engines aus der dynamischen Webprogrammierung JSP, PHP, <html> <head><title>first Example</title></head> <body> <h3>hello World-JSP</h3> Your browser is: <%= request.getheader("user-agent") %><br> Your IP address is: <%= request.getremoteaddr() %> </body> </html> Konkatenieren von Text und Schreiben in Dateien Verarbeitung von Informationen Schreiben in mehrere Zieldateien (keine explizite Steuerung in welche) Unterstützung beim Lesen/Abfragen/Navigieren von Modellen 10
11 Generierung mit Templates: Java-basierte Template-Engines Verbreitete Vertreter JET, Velocity, Freemarker, Bewertung Konkatenieren von Text und Schreiben in Dateien Verarbeitung von Informationen Unterstützung beim Lesen/Abfragen von Modellen ## Velocity Hello World <html> <body> #set( $foo = "Velocity" ) ## followed by Hallo $foo Welt! </body> </html> <%@ jet package="hello" imports="java.util.*" class="xmldemotemplate" %> <% List elementlist = (List) argument; %> <?xml version="1.0" encoding="utf-8"?> <demo> <% for (Iterator i = elementlist.iterator(); i.hasnext(); ) { %> <element><%=i.next().tostring()%></element> <% %> </demo> Aber nicht optimiert auf Navigation auf Objekt-Netzen (Pfadausdrücke) Schreiben in mehrere Zieldateien (keine explizite Steuerung in welche) 11
12 Generierung mit Templates: XSLT Für Modelle mit XML-Repräsentation Pfadunterstützung XSLT nicht statisch typisiert Fehler im Modell erst zur Laufzeit Komplexe Transformatioen werden sehr schnell schlecht lesbar <class name="person"> <attribute name="name" type="string"/> <attribute name="age" type="int"/> </class> <xsl:template match="/class"> public class <xsl:value-of { <xsl:apply-templates/> </xsl:template> <xsl:template match="attribute"> public <xsl:value-of <xsl:value-of </xsl:template> public class Person { public String name; public int age; 12
13 Generierung mit Templates: Kriterien für eine gute Template-Sprache Kriterien für eine gute Template-Sprache Unterstützung von Modularisierung Kompakte Syntax Kontrollstrukturen: Bedingungen, Schleifen, Komfortable, statisch getypte, effiziente Abfrage- und Navigationssprache für Modell 13
14 Generierung mit imperativen Programmiersprachen Java, C++, bringen mit Kontrollstrukturen, statische Typisierung, Modularisierbarkeit Sinnvolle Technik Klassen für Zielstrukturen Objekte werden beim Ablesen des Modells erstellt, parametrisiert, vernetzt Codeerzeugung über verschachtelte tostring()-methodenaufrufe Probleme Keine mehrzeiligen Literale String s = "Das ist Zeile eins \n" + "Das ist Zeile zwei \n"; Zeilenumbruch systemspezifisch \n, \r, \r\n Verteilung auf Zeilen erfordert Verkettung Anführungszeichen müssen escaped werden "name=\"" + name + "\""; Konkatenation nicht implizit sondern mit +-Operator 14
15 Generierung mit imperativen Programmiersprachen Aufwändige Interation, insbesondere bei variabel tiefer Rekursion public void loopchildren(node node) { for (Node child : node.getchildren()) { // do something loopchildren(child); Metamodell muß als Java-Klassen zur Verfügung stehen Entweder dynamische Klassen nicht statisch typisiert, umständlich in Handhabung Oder Generierung statischer Klassen aus Metamodell aufwändig 15
16 Template-Sprache Xpand Aus openarchitectureware Eigenschaften Template-Sprache (Lückentext) OO-artige Modularisierung Stringkonkatenation durch hintereinander schreiben Typsystem nicht an Hostsprache gekoppelt «IMPORT metamodel» «EXTENSION my::generator::extensions» «DEFINE javabean FOR Entity» «FILE name+".java"» public class «name» { «EXPAND property FOREACH attributes» «ENDFILE» «DEFINE property FOR Attribute» public «type» «name»; public «type» «gettername()»() { return «name»; public void «settername()» («type» «name») { this.«name» = «name»; 16
17 Template-Sprache Xpand Metamodell importieren «IMPORT metamodel» 17
18 Template-Sprache Xpand 2 Templates Name Optionale Parameterliste Für bestimmten Typ aus Metamodell (statische Typisierung) «IMPORT metamodel» «DEFINE javabean() FOR Entity» «DEFINE property() FOR Attribute» 18
19 Template-Sprache Xpand 2 Templates Name Optionale Parameterliste Für bestimmten Typ aus Metamodell (statische Typisierung) Festlegen in welche Datei geschrieben wird Text im DEFINE-Block wird in jeweils offene Datei geschrieben «IMPORT metamodel» «DEFINE javabean FOR Entity» «FILE name+".java"» public class { «ENDFILE» «DEFINE property FOR Attribute» 19
20 Template-Sprache Xpand 2 Templates Name Optionale Parameterliste Für bestimmten Typ aus Metamodell (statische Typisierung) Festlegen in welche Datei geschrieben wird Text im DEFINE-Block wird in jeweils offene Datei geschrieben Ausdrücke in Franzosen (französische Anführungszeichen) werden ersetzt «IMPORT metamodel» «DEFINE javabean FOR Entity» «FILE name+".java"» public class «name» { «ENDFILE» «DEFINE property FOR Attribute» 20
21 Template-Sprache Xpand Aufruf weiterer Templates mi «EXPAND templatename FOR expression» Z.B. mit Loop-Ausdruck FOREACH für Listen «IMPORT metamodel» «DEFINE javabean FOR Entity» «FILE name+".java"» public class «name» { «EXPAND property FOREACH attributes» «ENDFILE» «DEFINE property FOR Attribute» 21
22 Template-Sprache Xpand Ausdruckssprache Sprachübergreifende Expression-Language & -Engine OCL-artig Funktional Mengenwertig Navigierend Closures Funktionen höhrerer Ordnung Nehmen als Parameter andere Funktionen auf Z.B. für Loops über Listen name «IMPORT metamodel» «EXTENSION my::generator::extensions» «DEFINE javabean FOR Entity» «FILE name+".java"» public class «name» { «EXPAND property FOREACH attributes» «ENDFILE» «DEFINE property FOR Attribute» public «type» «name»; public «type» «gettername()»() { return «name»; public void «settername()» («type» «name») { this.«name» = «name»; gettername() myclass.attributes.select(a a.type=='string') myclass.attributes.select(a.name a.type=='string') 22
23 Template-Sprache Xpand Statische Typisierung auf Basis des importierten Metamodells Fehler zur Compilezeit Möglich durch eigenes, von Xpand getrenntes Typsystem der Expression-Engine Mit Java wäre das nicht möglich EObject obj =... «IMPORT metamodel» «EXTENSION my::generator::extensions» «DEFINE javabean FOR Entity» «FILE name+".java"» public class «name» { «EXPAND property FOREACH attributes» «ENDFILE» «DEFINE property FOR Attribute» public «type» «name»; public «type» «gettername()»() { return «name»; public void «settername()» («type» «name») { this.«name» = «name»; if ("Entity.equals(Obj.eClass().getName)) {... 23
24 Template-Sprache Xpand Extensions Operationen, die dynamisch an einen Typ angehängt werden können Z.B. gettername() an den Typ Attribute aus dem importierten Metamodell Extensions werden in eigener Datei definiert my::generator::extensions my/generator/extensions.ext import metamodel; «IMPORT metamodel» «EXTENSION my::generator::extensions» «DEFINE javabean FOR Entity» «FILE name+".java"» public class «name» { «EXPAND property FOREACH attributes» «ENDFILE» «DEFINE property FOR Attribute» public «type» «name»; public «type» «gettername()»() { return «name»; public void «settername()» («type» «name») { this.«name» = «name»; gettername(attribute this) : "get + name.tofirstupper(); settername(attribute this) : "set + name.tofirstupper(); 24
25 IBYKUS-Templates template:z2m Test(csType="SDW") { parameter:para kmx(datatype="str" default="x"); parameter:in ty(nodetype="ap&ty"); parameter:push pad(nodetype="ap&pad"); parameter:out sub(nodetype="sdw&subject"); parameter:out att(nodetype="sdw&attribute"); loop T(type="AP&TY" searchpattern="${{.ty") { choice:if C1(call="isNull" p1="${{.ty") { then T() { text T1( begin_text Das ist ein Text. Hier kommt etwas rein: ${{.kmx_${{t.name_${{p.name. end_text ); ; else E() {... ; ; ; ; 25
26 Best Practices Generierter Code soll gut lesbar sein Lesbarkeit für Debugging Strukturierung Formatierung Kommentare Referenzen ins Modell und zu Generatoren in Kommentaren (Location Strings) [ :38:45] GENERATED FROM TEMPLATE SomeTemplate MODEL ELEMENT apackage::aclass::someattribute Klare Trennung von generiertem und handgeschriebenem Code Protected Regions Source Cuts Dreistufige Vererbung Plattformschicht Generische Schicht Anpassungsschicht Handgeschriebene, abstrakte Basisklasse Generierte Klasse Handgeschriebene Klasse 26
27 Zusammenfassung Prinzipien, Einordnung und Abgrenzung Techniken der Codegenerierung Template Engines: JET, XSLT Ausprogrammierte Generatoren OAW-Xpand IBYKUS Techniken Best Practices Als nächstes Modellinterpretation 27
Software Engineering II
Software Engineering II Wintersemester 12/13 Fachgebiet Software Engineering Installation der MWE Plugins Von der Juno Update Site installieren (falls noch nicht vorhanden): MWE SDK Xpand SDK 2 TFD Projekt
MehrSoftware Engineering II
Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters
Mehropenarchitectureware
openarchitectureware Enrico Schnepel EAS, FHTW-Berlin 07.06.2007 2007 (CC by-nc-sa 2.0 Germany) Enrico Schnepel ( EAS, FHTW-Berlin ) openarchitectureware 07.06.2007 1 / 26 Gliederung 1 Einleitung 2 Begriffsdefinitionen
MehrWIRTSCHAFTSINFORMATIK
Westfälische Wilhelms-Universität Münster A platform for professional model-driven software development. Präsentation im Rahmen des Seminars Software Engineering WS 08/09 Jan Schürmeier Jan.Schuermeier@gmx.de
MehrÜ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,
MehrCodegeneratoren 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
MehrModellgetriebene Softwareentwicklung bei der IBYKUS AG
Modellgetriebene Softwareentwicklung bei der IBYKUS AG Theorie Teil 4: Domänenspezifische Sprachen Dr. Steffen Skatulla IBYKUS AG 1 Inhalt Teil 4: Domänenspezifische Sprachen Nutzung vorhandener Sprachen
MehrThema 2 Acceleo-MTL- Sprachmittel
SE Vertiefung Beuth-Hochschule Berlin Thema 2 Acceleo-MTL- Sprachmittel Sprachstruktur Template-Sprache implementiert MOFM2T Bausteine: Modul Template Query Block Protected Area (c) schmiedecke 13 Generator-Kapsel;
MehrJava - 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
MehrModell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014
Modell/Metamodell Model Generator Generated Source Code Andreas Schmidt Modellierung 1/18 Modell Modell beschreibt die zu generierende Anwendung Modell ist... abstrakt kompakt formal Modell kann in unterschiedlichen
MehrProgrammieren von Webinformationssystemen
Programmieren von Webinformationssystemen Wolfgang Gassler Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 HTML Hypertext Markup
MehrEin Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen
Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen Tom Krauß Agenda Begriffsdefinition Verfahren Praktische Beispiele Vergleich und Bewertung Begriffsklärung
MehrRepetitorium 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
MehrProgrammieren von Webinformationssystemen
Programmieren von Webinformationssystemen Nikolaus Krismer Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 PHP Ursprünglich:
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrPraktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005
Praktikum Datenbanksysteme Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Tomcat-Installation $JAVA_HOME (z.b. /home/dbp00/j2sdk1.4.2) $CATALINA_HOME (/home/dbp00/jakarta-tomcat-4) Skripte zum Start/Stop:
MehrThema 4 Acceleo- Sprachmittel und Generatorstruktur
SE Vertiefung Beuth-Hochschule Berlin Thema 4 Acceleo- Sprachmittel und Generatorstruktur 1. ACCELEO-PRAXIS (c) schmiedecke 14 SE3 2 Abgeguckt bei Obeo UmlToJava Es gibt zwei Generatorprojekte UmltoJava
MehrTheorie 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
MehrAufgaben eines Codegenerators
Aufgaben eines Codegenerators Modell einlesen Modell verifizieren Modell transformieren Quellcodegenerierung heute!! Andreas Schmidt XMI / Zugriff auf XML 1/17 XML Input Aktueller Input unseres Generators
Mehri n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Metamodellbasierte Codegenerierung in Java
Metamodellbasierte Codegenerierung in Java Codegenerierung Markus Völter, voelter@acm.org, www.voelter.de Codegenerierung bezeichnet die automatische Erstellung von Quelltext aus üblicherweise abstraktereren,
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
MehrJava Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov
Java Server Pages 2 und Benutzerdefinierte Tags Strahil Yordanov Überblick Einleitung JSP im Kontext von J2EE JSP2 Benutzerdefinierte Tags Zusammenfassung Einleitung Java Server Pages ist eine Technik
MehrModel Driven Development im Überblick
Model Driven Development im Überblick Arif Chughtai Diplom-Informatiker (FH) www.digicomp-academy, Seite 1 September 05 Inhalt Motivation Überblick MDA Kleines Beispiel Werkzeuge www.digicomp-academy,
MehrSoftware Engineering II
Software Engineering II Wintersemester 11/12 Fachgebiet Software Engineering Wiederholung Bisher im Laufe des Semesters umgesetzt: Modellierung eines Meta-Modells für die Workflow Diagramme mit Fujaba
MehrEinstieg 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
MehrRuby. Programmieren mit Zucker. Thomas Kühn
Ruby Programmieren mit Zucker Thomas Kühn Gliederung Geschichte Philosophie Syntax mit Zucker Sprachkonzepte Pakete und Frameworks Ausblick Beispiele Yukihiro Matz Matsumoto Geboren am 14.April 1965 Geschichte
MehrScala & Lift. Ferenc Lajko 04.02.2010
Scala & Lift Ferenc Lajko 04.02.2010 Gliederung 1. Scala 1.1. Allgemein 1.2. Merkmale 1.3. Unterschiede zu Java 1.4. Code-Beispiel 1.5. Vorteile zu anderen Sprachen 2. Lift 2.1. Allgemein 2.2. Idee 2.3.
MehrIch 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
MehrBest Practices für flexible und wartbare Codegeneratoren mit openarchitectureware Karsten Thoms Software Architekt 20.04.2009
Best Practices für flexible und wartbare Codegeneratoren mit openarchitectureware Karsten Thoms Software Architekt 20.04.2009 1 Agenda (1) Fornax-Plattform, Cartridges (2) Referenzimplementierung, Referenzmodell
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrTeil V. Generics und Kollektionen in Java
Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für
MehrDatenhaltung für Android Model First. 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg
Datenhaltung für Android Model First 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg Agenda Datenhaltung in Android Motivation / Projektziele Projekt Umsetzung Stand der Entwicklung Fazit 2 Datenhaltung
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrPHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.
PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. Allgemein Ein Einzug sollte aus 4 Leerzeichen bestehen.
MehrMOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools
MOF Meta Object Facility Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools Überblick Object Management Group (OMG) Model Driven Architecture (MDA) Exkurs: Modelle, Metamodelle MOF Architektur
MehrErstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java
Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework
MehrType 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
MehrInnovator 2007. Anbindung an openarchitectureware. Connect. Klaus Weber. www.mid.de
Innovator 2007 Anbindung an openarchitectureware Klaus Weber Connect www.mid.de Anbindung an openarchitectureware (oaw) Wozu dient die Anbindung an openarchitectureware? Für Innovator Object excellence
MehrRails Ruby on Rails Ajax on Rails. Clemens H. Cap http://wwwiuk.informatik.uni-rostock.de http://www.internet-prof.de
Rails Ruby on Rails Ajax on Rails Who is who? Rails Framework für Web (2.0) Anwendungen Ziel: Beschleunigung der Entwicklung Konzept des Agilen Programmierens Ruby InterpreDerte Sprache Rails IntegraDonen
MehrInternationalisierung von Webseiten
Internationalisierung von Webseiten estudy goes USA Inhalt Einleitung Techniken Fazit Diskussion Einleitung Internationalisierung von Webseiten Einleitung Sprachen Entstanden durch viele Völker und Kulturen
MehrJSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel ralf_gitzel@hotmail.de
JSP JSTL JEE Vorlesung Teil 6 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Wiederholung / Vertiefung JSTL Grundlagen JSTL Basisbefehle Templates über JSTL
MehrÜbersicht. Vorstellung des OO-Paradigmas
Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
MehrBesonderheiten von C#
Besonderheiten von C# Wert- und Referenztypen int a, b; a = 3; b = a; a++; Debug.Assert( a==4 && b==3 &&!a.equals(b), "int ist doch kein Werttyp" ); RTyp ra, rb; ra = new RTyp(3); rb = ra; ra.inc(); Debug.Assert(
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrModellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014
Modellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014 Wahlpflichtfach (2 SWS) für Bachelor Andreas Schmidt Einführung/Organisation 1/19 Ziele der Vorlesung Vorstellung
MehrInformatik 3 Sitzung 3 - Theorie. Roland Mühlenbernd
Informatik 3 Sitzung 3 - Theorie Roland Mühlenbernd 2. EQDDS: Rückblick: Letzte Sitzung Vergleich der folgenden imperativen Programmiersprachen: Component Pascal Eiel C++ Java C# durch Betrachtung der
MehrPraktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization
Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Übersicht In den ersten Wochen: Einführung in objektorientierte Programmierung mit C++ Anschließend: Einführung in die programmierbare
MehrJava Server Pages (JSP)
Überblick über Internet-Technologien Server-Technologien Datenbankkopplung Servlets JSP PHP CGI XML+XSL Dokumentsprachen Client-PGM ruft DB-Server Web-Server ruft Datenbankserver HTML+Javascript HTML+Applets
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrRuby - Objektorientiertes Scripting, aber richtig!
Ruby - Objektorientiertes Scripting, aber richtig! Andreas Krennmair krennmair@acm.org 2. November 2003 0-0 Ruby - Objektorientiertes Scripting, aber richtig! 0-1 Aga Ruby s Syntax Ruby s coole Konzepte
MehrEntwicklung der Programmiersprache C#
Language Day HDM 2015 Entwicklung der Programmiersprache C# Referent: Mikhail Orleanskiy, IT-Designers GmbH (orleanskiy@it-designers.de) Stand: 6. November 2015 Eine Präsentation der IT-Designers Gruppe
MehrFachhochschule Wiesbaden - Fachbereich DCSM. Skriptsprachen. Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby
Fachhochschule Wiesbaden - Fachbereich DCSM Skriptsprachen Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden
MehrVorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm
MehrEinführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
MehrMultimedia im Netz Wintersemester 2011/12
Multimedia im Netz Wintersemester 2011/12 Übung 01 Betreuer: Verantwortlicher Professor: Sebastian Löhmann Prof. Dr. Heinrich Hussmann Organisatorisches 26.10.2011 MMN Übung 01 2 Inhalte der Übungen Vertiefung
MehrÜbung zur Vorlesung Multimedia im Netz
Übung zur Vorlesung Multimedia im Netz Doris Hausen Ludwig-Maximilians-Universität München Wintersemester 2009/2010 Ludwig-Maximilians-Universität München Multimedia im Netz Übung 1-1 Organisatorisches
MehrObjektorientierung: Klassen und Objekte
Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in
MehrAktivitäten in C# /.NET umsetzen
Aktivitäten in C# /.NET umsetzen Grundlagen von C# Dr. Beatrice Amrhein Überblick Grundlagen der C# Syntax Visual C# Express Einfache Abläufe umsetzen 2 Grundlagen von C# 3 Merkmale von C# C# besteht aus
MehrPrinzipien der Softwareentwicklung S. Strahringer
Gliederung 1 Einführung Was ist ein Programm? Vorteile (und Nachteile) von PHP Erste PHP-Programme Ausführung von PHP-Programmen 2 Grundbegriffe der Programmierung Anweisungen, Variablen, Datentypen und
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrWeb-Anwendungsentwicklung mit dem Delivery Server
Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010
MehrProblemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
MehrKontrollstrukturen, Pseudocode und Modulo-Rechnung
Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1
MehrJava: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe
Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class
MehrDer EMF-generierte Code. 7. November 2012
Der EMF-generierte Code 7. November 2012 Überblick Wie sieht der aus einem EMF-Modell generierte Code aus? Wie ist die Beziehung zwischen Modell und Code? Wie kann generierter Code durch handgeschriebenen
MehrProgrammiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen
Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
MehrEinführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
MehrEinführung in die Programmierung mit Java
Einführung in die Programmierung mit Martin Wirsing 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm... Warum als Programmiersprache verwenden? Ein einfaches -Programm erstellen, übersetzen
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
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrJSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de
JSP Grundlagen JEE Vorlesung Teil 5 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht JSP Konzept Model-View-Controller mit JSPs JSP Expression Language EL Literale
MehrKonsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber
Konsequent agile Entwicklung mit funk4onaler Programmierung Michael Sperber Individualso4ware branchenunabhängig Scala, Clojure, Erlang, Haskell, F# Schulungen, Coaching www.acave- group.de funkaonale-
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe
1 Kapitel 1 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler, Einordnung von Java Ein einfaches Java-Programm erstellen, übersetzen und ausführen Java-Programme dokumentieren 3 Informatik
MehrMusterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9
Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
MehrMichael Piechotta - CASE Tools. openarchitecture Ware
Model Driven Development Michael Piechotta - CASE Tools openarchitecture Ware Gliederung 1.Einleitung - Was ist MDD? - Wozu MDD? 2.Model Driven Development - OMG Konzepte: Modelle,Transformationen Meta-Modellierung
MehrDynamische Websites mit XML und PHP4
Dynamische Websites mit XML und PHP4 Linuxtag 2002 07.06.2002, Karlsruhe Stephan Schmidt Inhalt der Session Über den Redner Strukturierung von Inhalten Transformation von XML Entwickeln einer XML-Struktur
MehrAnzeige des Java Error Stack in Oracle Forms
Anzeige des Java Error Stack in Oracle Forms (Version 2.0) Juni 2008 Autoren: Jürgen Menge / Thomas Robert Seite 1 von 7 Oracle Forms bietet seit der Version 6i die Möglichkeit, serverseitig Java-Klassen
MehrPIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
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,
MehrSkriptsprachen am Beispiel Python
Seminar Programmiersprachen Skriptsprachen am Beispiel Python Norman Thomas 8. Juni 2004 Überblick Was sind Skriptsprachen? Was ist Python? Python und Syntax Datentypen Kontrollstrukturen Module Ausführung
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrProgrammierkurs Java
Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
MehrJAVA - 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
MehrHello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.
Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike
MehrVererbung & 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
MehrGrundlagen der Informatik für Ingenieure I
3 Einführung in das objektorientierte Programmier-Paradigma 3 Einführung in das objektorientierte Programmier-Paradigma 3.1.1 Top-down structured design 3.1.2 Data-driven design 3.1.3 Object-oriented design
MehrKontrollstrukturen - Universität Köln
Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,
MehrC++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches
MehrWiederholung: Beginn
B) Webserivces W3C Web Services Architecture Group: "Ein Web Service ist eine durch einen URI eindeutige identifizierte Softwareanwendung, deren Schnittstellen als XML Artefakte definiert, beschrieben
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
Mehrphp Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...
php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
Mehr