Der EMF-generierte Code. 7. November 2012
|
|
|
- Gesche Hofmann
- vor 10 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
Java: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Programmieren 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
Testen mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
Objektorientierte 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)
Komponententest. 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
Einfü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
Einführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
Definition 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
Java 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
Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Einfü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
Große Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 [email protected] http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
Verhindert, 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:
Javakurs 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,
U08 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
Was 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
Swp08-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,
Software 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
SEP 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
Test-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
Software-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
Testen 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
Folge 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,
Software 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
Java Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
Drei-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
Der 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
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
Themen. 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
Ü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
Internet 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
Objektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
Klausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
Software 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
Das 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
Code-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
Willkommen 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
WebService 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.
Individuelle 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
188.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
Musterlö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
Praktische Ü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
Innere 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
Motivation 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
Prinzipien 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........................
Programmierkurs 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
Aufgabenblatt 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
Probeklausur 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
7. 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
Testen 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
3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
JUnit - 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
Java 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
Fortgeschrittenes 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
Delegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
Kapitel 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
Lö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
Objektorientierte 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
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Java 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]...
II. 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
Fachdidaktik 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,
Ü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:
C# 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
WPF 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,
Objektorientierte 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
Kapitel 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
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.
Client-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
Softwaretechnologie -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
Softwaretechnologie - 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:
Daniel Warneke [email protected] 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke [email protected] 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
Es 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
14.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...
Das 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
Vorkurs 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:
Ü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
Dieses 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
public 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
Ü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
Java - 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
Starthilfe 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
Arbeiten 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
Binä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
Factory 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
Wintersemester 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
WhiteStarUML 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/
SEW Ü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
Programmieren 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
TCP/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
Unsere 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.
Software 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
Software 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
Assoziation 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
Pakete 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
Es 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
