Der EMF-generierte Code. 7. November 2012
|
|
- Gesche Hofmann
- vor 8 Jahren
- Abrufe
Transkript
1 Der EMF-generierte Code 7. November 2012
2 Ü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 erweitert bzw. ersetzt werden? Wie kann ein Instanzmodell erstellt werden? Durch einen Instanzeditor Anwendung der generierten Klassen Durch Anwendung von reflektiven Methoden auf dem EMF- Modell Welcher Test-Code wird erstellt? Taentzer Modellgetriebene Softwareentwicklung 132
3 Eclipse Modeling Framework (EMF) EMF Klassendiagramm EMF Generator basierend auf JET Java Klassen zur Manipulation des Modells benutzt einfacher baumbasierter Editor Taentzer Modellgetriebene Softwareentwicklung 133
4 Struktur des generierten Codes Struktur des Modellcodes: Schnittstellenklassen Implementierungsklassen weitere nützliche Klassen weitere Dateien, um den Code als Eclipse-Plugin zu benutzen META-INF/MANIFEST.MF: alle wichtigen Einstellung zum Plugin plugin.xml: Identifizierung des Plugins und Beziehungen zu anderen Taentzer Modellgetriebene Softwareentwicklung 134
5 Modellierte Klassen Dozent.java: für eine modellierte Klasse wird erzeugt: eine Schnittstellenklasse eine Implementierungsklasse create-methode in der Factory- Klasse public interface Dozent extends EObject { DozentImpl.java: public class DozentImpl extends EObjectImpl implements Dozent { Taentzer Modellgetriebene Softwareentwicklung 135
6 Abstrakte Klassen Lehrveranstaltung.java: Für eine abstrakte Klasse wird erzeugt: eine Schnittstellenklasse eine abstrakte Impl-Klasse keine create-methode in der Factory-Klasse public interface Lehrveranstaltung extends EObject { LehrveranstaltungImpl.java: public abstract class LehrveranstaltungImpl extends EObjectImpl implements Lehrveranstaltung { Taentzer Modellgetriebene Softwareentwicklung 136
7 Abstrakte und Schnittstellenklassen Abstrakte Klasse: in EClass: Attribut abstract = true im generierten Code: abstrakte Implementierungsklasse keine create-methode in der Factory Schnittstellenklasse: in EClass: Attribut interface = true Attribut instanceclass nicht gesetzt im generierten Code: keine Implementierungsklasse, aber Schnittstellenklasse keine create-methode in der Factory Taentzer Modellgetriebene Softwareentwicklung 137
8 Vererbung Uebung.java: Vererbung von EObject und EObjectImpl Mehrfachvererbung im Modell - Mehrfachvererbung der entsprechenden Schnittenstellen, Impl.- Klasse erbt von nur einer Impl.-Klasse public interface Uebung extends Lehrveranstaltung UebungImpl.java: public class UebungImpl extends LehrveranstaltungImpl implements Uebung Taentzer Modellgetriebene Softwareentwicklung 138
9 Structural Features: Zugriffsmethoden Dozent.name Für jedes Attribut und jede Referenz: eine getter-methode falls changeable = true: eine setter-methode Dozent.java: public interface Dozent extends EObject {... String getname(); void setname(string value);... Taentzer Modellgetriebene Softwareentwicklung 139
10 DozentImpl.java: Einfache Attribute protected static final String NAME_EDEFAULT = null; protected String name = NAME_EDEFAULT; public String getname() { return name; public void setname(string newname) { String oldname = name; name = newname; if (enotificationrequired()) enotify(new ENotificationImpl(this,Notification.SET, VorlesungsverzeichnisPackage.DOZENT_NAME, oldname, name)); Taentzer Modellgetriebene Softwareentwicklung 140
11 Subject-Observer-Prinzip Subject Observer Observer Observer Observer Subject: Objekt aus dem EMF-Modell Observer: andere Objekte, die das EMF-Objekt benutzen Observer müssen sich als Listener anmelden. bei Änderung des Subjects: Benachrichtungung an alle Observer Observer in EMF: Adapter Taentzer Modellgetriebene Softwareentwicklung 141
12 Unidirektionale Referenzen Falls resolveproxies = true: Zusätzlicher Code zur Behandlung von Proxy-Objekten VorlesungImpl.java: protected EList<Uebung> uebung = null; public EList<Uebung> getuebung() { if (uebung == null) { uebung = new EObjectEList(Uebung.class, this, VorlesungsverzeichnisPackage.VORLESUNG UEBUNG); return uebung; Taentzer Modellgetriebene Softwareentwicklung 142
13 Bidirektionale Referenzen LehrveranstaltungImpl.java: public void setdozent(dozent newdozent) { if (newdozent!= dozent) { NotificationChain msgs = null; if (dozent!= null) msgs = ((InternalEObject)dozent).eInverseRemove(this, VorlesungsverzeichnisPackage.DOZENT LV, Dozent.class, msgs); if (newdozent!= null) msgs = ((InternalEObject)newDozent).eInverseAdd(this, VorlesungsverzeichnisPackage.DOZENT LV, Dozent.class, msgs); msgs = basicsetdozent(newdozent, msgs); if (msgs!= null) msgs.dispatch(); else if (enotificationrequired()) enotify(new ENotificationImpl(this, Notification.SET, VorlesungsverzeichnisPackage.LEHRVERANSTALTUNG DOZENT, newdozent, newdozent)); Taentzer Modellgetriebene Softwareentwicklung 143
14 Factories Eine Factory ist die zentrale Klasse, in der neue Objekte angelegt werden. VorlesungsverzeichnisFactory.java: public interface VorlesungsverzeichnisFactory extends EFactory { Vorlesungen createvorlesungen(); Dozent createdozent(); Raum createraum(); Vorlesung createvorlesung(); Seminar createseminar(); Übung createübung(); Raumverzeichnis createraumverzeichnis(); Hörsaal createhörsaal(); Seminarraum createseminarraum(); VorlesungsverzeichnisPackage getvorlesungsverzeichnispackage(); Taentzer Modellgetriebene Softwareentwicklung 144
15 Factories Es kann mehrere Implementierungen für eine Factory geben. Es gibt eine DefaultFactory. public class VorlesungsverzeichnisFactoryImpl extends EFactoryImpl implements VorlesungsverzeichnisFactory { public static VorlesungsverzeichnisFactory init() { try { VorlesungsverzeichnisFactory thevorlesungsverzeichnisfactory = (VorlesungsverzeichnisFactory)EPackage.Registry.INSTANCE. getefactory(" if (thevorlesungsverzeichnisfactory!= null) { return thevorlesungsverzeichnisfactory; catch (Exception exception) { EcorePlugin.INSTANCE.log(exception); return new VorlesungsverzeichnisFactoryImpl(); Taentzer Modellgetriebene Softwareentwicklung 145
16 Codeerweiterung An verschiedensten Stellen sind Codeerweiterungen wünschenswert. Mit EMF kann kein Verhalten modelliert werden -> Codeerweiterung Nach der Codeerweiterung muss eine erneute Codegenerierung möglich sein. Generierte Methoden haben Tag. /** * <!-- begin-user-doc --> * <!-- end-user-doc --> */ public boolean checkkonsistenz() { // TODO: implement this method // Ensure that you or mark NOT throw new UnsupportedOperationException(); Nach manueller Codeerweiterung muss das NOT gesetzt werden. Taentzer Modellgetriebene Softwareentwicklung 146
17 Beispiel: Codeerweiterung RaumImpl.java: public boolean checkkonsistenz() { EList<Lehrveranstaltung> lvlist = this.getveranstaltung(); for (Lehrveranstaltung lv1 : lvlist) { for (Lehrveranstaltung lv2 : lvlist) { if (lv1!= null && lv2!= null) { if (lv1!= lv2) { if ((lv1.getzeit() == lv2.getzeit()) && (lv1.gettag() == lv2.gettag())) return false; // if // if // for // for return true; // checkkonsistenz Taentzer Modellgetriebene Softwareentwicklung 147
18 Erstellung eines Instanzmodells Beispiel: Erstellung eines Vorlesungsverzeichnisses VorlesungsverzeichnisBeispiel.java: import org.eclipse.emf.common.util.uri; import org.eclipse.emf.ecore.resource.resource; import org.eclipse.emf.ecore.resource.resourceset; import org.eclipse.emf.ecore.resource.impl.resourcesetimpl; import org.eclipse.emf.ecore.xmi.impl.xmiresourcefactoryimpl; import vorlesungsverzeichnis.*; import vorlesungsverzeichnis.impl.*; //... // Create a resource set to hold the resources. ResourceSet resourceset = new ResourceSetImpl(); // Register the appropriate resource factory to handle all file extensions. resourceset.getresourcefactoryregistry().getextensiontofactorymap().put (Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()); // Register the package to ensure it is available during loading. resourceset.getpackageregistry().put (VorlesungsverzeichnisPackage.eNS_URI, VorlesungsverzeichnisPackage.eINSTANCE); //... Taentzer Modellgetriebene Softwareentwicklung 148
19 Erstellung eines Instanzmodells Beispiel: Erstellung eines Vorlesungsverzeichnisses VorlesungsverzeichnisBeispiel.java: //... // If there are no arguments, emit an appropriate usage message. if (args.length == 0) { System.out.println("Enter a list of file paths or URIs that have content like this:"); try { Resource resource = resourceset.createresource(uri.createuri(" Verzeichnis root = VorlesungsverzeichnisFactory.eINSTANCE.createVerzeichnis(); resource.getcontents().add(root); resource.save(system.out, null); //Ab hier eigener Code Taentzer Modellgetriebene Softwareentwicklung 149
20 Erstellung eines eignen Modells Beispiel: Erstellung eines Vorlesungsverzeichnisses VorlesungsverzeichnisBeispiel.java: //... VorlesungsverzeichnisFactory vfactory = VorlesungsverzeichnisFactory.eINSTANCE; Verzeichnis vorlesungen = vfactory.createverzeichnis(); //erstelle ein Raumverzeichnis Raumverzeichnis verzeichnis = vfactory.createraumverzeichnis(); vorlesungen.setraumverzeichnis(verzeichnis); //erstelle einen Raum Raum r = vfactory.createhoersaal(); verzeichnis.getraum().add(r); //erstelle eine Vorlesung Vorlesung vl1 = vfactory.createvorlesung(); vl1.settag(tag.di); vl1.setzeit(zeit.zwei); vorlesungen.getlv().add(vl1); //... Taentzer Modellgetriebene Softwareentwicklung 150
21 Aufruf einer eignen Methode Beispiel: Erstellung eines Vorlesungsverzeichnisses VorlesungsverzeichnisBeispiel.java: //... Boolean c = true; List<Raum> raeume = verzeichnis.getraum(); for (Raum raum : raeume) { c = c && raum.checkkonsistenz(); if (c) System.out.println("Alle Räume sind konsistent belegt."); else System.out.println("Es gibt min. einen Raum mit inkonsistenter Belegung."); //... Taentzer Modellgetriebene Softwareentwicklung 151
22 Einlesen eines Instanzmodells public static void main(string[] args) { VorlesungsverzeichnisPackageImpl.init(); Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap(). put("vorlesungsverzeichnis", new XMIResourceFactoryImpl()); ResourceSet resourceset = new ResourceSetImpl(); URI fileuri = URI.createURI("src/Test.vorlesungsverzeichnis"); Resource resource = resourceset.getresource(fileuri, true); Vorlesungsverzeichnis vz = (Vorlesungsverzeichnis) resource.getcontents().get(0); //main Taentzer Modellgetriebene Softwareentwicklung 152
23 JUnit Prinzipien: Zu jeder verfassten Klasse eine Testklasse entwerfen. Testcode und Anwendungscode sind strikt getrennt. Zum Schreiben von Tests werden lediglich benötigt: (TestSuite), TestCase, Assert Testsuiten dienen dazu, verschiedene Tests in einer bestimmten Reihenfolge aufzurufen. Suiten können dazu verwendet werden, verschiedene Klassen eines Paketes bzw. Projektes auf einmal zu testen. Pakettests, Klassentests, Methodentests public class VorlesungsverzeichnisTests extends TestSuite { Taentzer Modellgetriebene Softwareentwicklung 153
24 Definition von Testfällen Testfälle werden in einer normalen Klasse erstellt. Framework führt die definierten Testfälle aus. Jeder Test wird gekapselt: Es kann ein Fixture definiert werden. Damit wird ein wiederverwendbares Testobjekt festgehalten. Verschiedene Tests nutzen keine gemeinsamen Daten im Fixture. Jeder Test hat sein eigenes Fixture. Assert für den Vergleich von Soll- mit Istwerten Wir prüfen, ob das Ergebnis eines Tests ein bestimmtes Ergebnis zurückliefert. Typische Assert-Methoden: asserttrue, assertequal, assertnull Taentzer Modellgetriebene Softwareentwicklung 154
25 Beispiel für einen Testfall public class SeminarraumTest extends RaumTest { protected VorlesungsverzeichnisFactory vfactory = VorlesungsverzeichnisFactory.eINSTANCE;... public static void main(string[] args) { protected void setup() throws Exception { setfixture(vfactory.createseminarraum()); public void testcheckconsistency() { asserttrue(this.getfixture().checkkonsistenz());... abstract class RaumTest extends TestCase Taentzer Modellgetriebene Softwareentwicklung 155
26 Beispiel für einen zweiten Testfall HoersaalTest.java: public class HoersaalTest {... public void setup() throws Exception{ VorlesungsverzeichnisFactory vfactory = VorlesungsverzeichnisFactory.eINSTANCE; Vorlesungen vorlesungen = vfactory.createvorlesungen(); Raumverzeichnis verzeichnis = vfactory.createraumverzeichnis(); vorlesungen.setraumverzeichnis(verzeichnis); Raum raum = vfactory.createhoersaal(); verzeichnis.getraum().add(raum);... Vorlesung vl1 = vfactory.createvorlesung(); vl1.settag(tag.di); vl1.setzeit(zeit.zwei); vl1.setraum(raum); vorlesungen.getlv().add(vl1); Taentzer Modellgetriebene Softwareentwicklung 156
27 Beispiel für einen zweiten Testfall HoersaalTest.java:... Vorlesung vl2 = vfactory.createvorlesung(); vl2.settag(tag.di); vl2.setzeit(zeit.zwei); vl2.setraum(raum); vorlesungen.getlv().add(vl2); setfixture(raum); //setup()... Taentzer Modellgetriebene Softwareentwicklung 157
28 Beispiel für einen zweiten Testfall RaumTest.java: public void testcheckkonsistenz() { // TODO: implement this operation test method // Ensure that you or mark NOT asserttrue(getfixture().checkkonsistenz()); Taentzer Modellgetriebene Softwareentwicklung 158
29 Wie wird generiert? Applikation Domänenspezif. Modell transformiert in Code modelliert mit Generator MDD-Infrastruktur Domänenspezifische Modellierungssprache Generator Templates (Modell-zu-Code Tr. ) Wie wird dieser allgemeine Ansatz durch EMF konkretisiert? Taentzer Modellgetriebene Softwareentwicklung 159
30 Zusammenfassung Die Beziehung zwischen Modell und Code ist recht direkt. Die Codegenerierung lässt sich gut durch das EMF-Modell steuern. Der generierte Code hat eine gute Qualität: Java-Konventionen werden eingehalten. Code Smells werden vermieden, wo möglich. Passende Design-Patterns werden verwendet. Generierter Code kann durch handgeschriebenen so erweitert werden, dass der Generator diesen nicht überschreibt. Taentzer Modellgetriebene Softwareentwicklung 160
Der EMF-generierte Code. 10. Dezember 2014
Der EMF-generierte Code 10. Dezember 2014 Ü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
MehrJava: 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
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
MehrTesten 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
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrKomponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009
Testen von Software Systemen Übung 02 SS 2009 Version: 1.0 09.06.2009 Komponententest Kunde: Dr. Reinhold Plösch Dr. Johannes Sametinger Kundenreferenz: 259.019 Team 19 Mitarbeiter: Christian Märzinger
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrEinfü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:
MehrDefinition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014
Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrEinführung in die Informatik Tools
Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
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:
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,
MehrU08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
Mehram Beispiel von JUnit
Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern
MehrWas ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit
Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit EMF ist ein eigenständiges Eclipse-Projekt (Eclipse Modeling Framework Project) EMF ist ein Modellierungsframework und Tool
MehrSwp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept
Testkonzept 1.Einführung Um die Zuverläsigkeit und die Qualität der Software und des gesamten Systems zu verbessern, sind Tests durchzuführen. Die Testreihe läst sich in drei Stufen einteilen, nülich Komponententest,
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
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrTest-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
MehrSoftware-Engineering Software-Management
Software-Engineering Software-Management 12.3 Unit-Tests mit JUnit - Wissen, was der Sourcecode macht! Lösung Prof. Dr. Rolf Dornberger Software-Engineering: 12.3 Unit-Tests mit JUnit 30.04.2006 1 12.3
MehrTesten von graphischen Benutzeroberflächen. 26. Juni 2013
Testen von graphischen Benutzeroberflächen 26. Juni 2013 Überblick Testarten Methoden-, Klassen-, Komponenten-, Systemtests Motivation für automatisches Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
MehrSoftware Entwicklung II (SS12)
Prof. Dr. P. Liggesmeyer Dipl.-Inf. K. Bizik M.Sc. K. Nehring TU Kaiserslautern Fachbereich Informatik AG Software Engineering: Dependability Software Entwicklung II (SS12) Übung 5 Ausgabe: 04.06.2012
MehrDynamisches 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
MehrJava 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
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrDer lokale und verteilte Fall
Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf
MehrJava-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
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
MehrInternet Explorer Version 6
Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster
MehrObjektorientierte 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/
MehrKlausur 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-
MehrSoftware Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015
Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrCode-Erzeugung aus UML-Klassendiagrammen
Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter
MehrWillkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java
Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen
MehrWebService in Java SE und EE
Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.
MehrIndividuelle Erweiterung des generierten Codes. 16. Januar 2013
Individuelle Erweiterung des generierten Codes 16. Januar 2013 Überblick Welche Möglichkeiten zur individuellen Erweiterung von generiertem Code gibt es? Innerhalb eines Moduls (Klasse) Auf Modulebene
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
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
MehrPraktische Übung 'JUnit-Test'
Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrMotivation Grundlagen Technologien Manipulation Ecore Genmodell Demo Persistenz Notification Ausblick GMF Fazit / Quellen
Motivation Grundlagen Technologien Manipulation Ecore Genmodell Demo Persistenz Notification Ausblick GMF Fazit / Quellen Soll ich Modellieren oder Programmieren? sowohl als auch!!! Produktivitäts-Steigerung
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........................
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrAufgabenblatt Nr. 5 Generizität und TicTacToe
Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung
MehrProbeklausur Softwareengineering SS 15
Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das
Mehr7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
MehrTesten von graphischen Benutzeroberflächen. 24. Juni 2015
Testen von graphischen Benutzeroberflächen 24. Juni 2015 Überblick Motivation für das automatische Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien für GUIs Capture / Replay Testmethode
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrJUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1
JUnit - Test Driven Development Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1 Gliederung 1.Einleitung 1.1 Geschichte 1.2 Was sind Unit-Tests? 1.3 Failures/Errors 1.4 Ziele und Nutzen
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
MehrFortgeschrittenes Programmieren mit Java. Test Driven Development
Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
MehrAlgorithmen 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
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrWPF Steuerelemente Listbox, ComboBox, ListView,
WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrJava 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.
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 Servlet Debugging
Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrSoftwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel
Übungen zur Vorlesung Softwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel Übungsblatt 3 - Lösungshilfe Aufgabe 1. Klassendiagramme (9 Punkte) Sie haben den Auftrag, eine Online-Videothek
MehrSoftwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel
Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:
MehrDaniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
Mehr14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt
14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...
MehrDas Test-Framework JUnit ETIS SS04
Das Test-Framework JUnit ETIS SS04 Gliederung Motivation TestFirst Grundlagen Assert TestCase Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung 2 Motivation (I) Kostspielige Folgen
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrÜbungen zu Softwaretechnik
Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte
MehrDieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.
Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html
Mehrpublic class SternchenRechteckGefuellt {
Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und
MehrÜbung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
MehrJava - Programmierung - Objektorientierte Programmierung 1
Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1
MehrStarthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum
Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrFactory Method (Virtual Constructor)
Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrWhiteStarUML Tutorial
WhiteStarUML Tutorial Autor: Simon Balázs, BME IIT, 2015. Übersetzung: Kovács Márton, 2015. Installation Herunterladen und installieren Sie das WhiteStarUML: http://sourceforge.net/projects/whitestaruml/
MehrSEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.
SEW Übung EMFText 1 Aufgabe Erstellen Sie eine textuelle Domänenspezifische Sprache Domain-specific Language (DSL) mit dem Werkzeug EMFText. Die Sprache soll dazu dienen Formulare (Fragen, Antworttypen
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrTCP/IP Programmierung. C# TimeServer Java6 TimeClient
TCP/IP Programmierung C# TimeServer Java6 TimeClient Stand 19.10.11 21:24:32 Seite 1 von 16 Inhaltsverzeichnis Erläuterung...3 Software...3 C#TimeServer...4 Klasse ServerThread...6 Starten und Beenden...7
MehrUnsere Webapplikation erweitern
Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
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
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrPakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).
Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein
MehrEs wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.
Struts Code Peaces Element Es wird das Struts Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht. Allgemeines Autor: Sascha Wolski Sebastian Hennebrüder
Mehr