UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich

Ähnliche Dokumente
II.4.2 Abstrakte Klassen und Interfaces - 1 -

Ausnahmebehandlung in Java

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

Theorie zu Übung 8 Implementierung in Java

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Interface. So werden Interfaces gemacht

Objektorientierte Programmierung

Tag 8 Repetitorium Informatik (Java)

Musterlösung Stand: 5. Februar 2009

9. Fehler und Ausnahmen Grundlagen der Programmierung 1 (Java)

Programmieren in Java -Eingangstest-

Listing 1: Cowboy. Listing 2: Woody

1 Klassen und Objekte

Sommersemester Implementierung I: Struktur

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen

Java-Schulung Grundlagen

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Vorlesung Programmieren

TEIL I Strukturdiagramme 1 Einführung Klassendiagramm Objektdiagramm Kompositionsstrukturdiagramm...

Software Engineering II

Einführung: Zustandsdiagramme Stand:

Aufgabenblatt: OOP - Seite 1. (2.) Geometrie: Erstellen Sie eine Klasse CPyramid, die sich von der Klasse Square ableitet:

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Datenbankanwendungsprogrammierung Crashkurs Java

Die Klasse java.lang.object. Thorsten Treffer

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Java Einführung Klassendefinitionen

Algorithmen implementieren. Implementieren von Algorithmen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!

12 Abstrakte Klassen, finale Klassen und Interfaces

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Programmiermethodik 3. Klausur Lösung

Aufgaben NF 11; Seite 1

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Softwaretechnik. Prof. Tomas Bures, PhD., Dipl. Inf. Lenz Belzner, Dipl. Inf. Christian Kroiß

Algorithmen und Datenstrukturen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

4. Vererbung Die Klasse Object. Die Klasse Object

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

Automaten und das State Pattern

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Vorlesung Programmieren

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

Beispiel für überladene Methode

Verkettete Datenstrukturen: Listen

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

Christoph Kecher, Alexander Salvanos UML 2.5. Das umfassende Handbuch. Rheinwerk. Computing

Probeklausur: Programmierung WS04/05

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Einführung Propra Softwareentwicklung im 21. Jahrhundert. Jörg Niere Raum H-C 8304 Tel: 0271/

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Prozesszustände (1a)

Objektorientierung (OO)

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

13. Dynamische Datenstrukturen

Programmierkurs Java

JAVA - Methoden - Rekursion

Java Einführung Vererbung und Polymorphie. Kapitel 13

int x = 3; int y = 11; public A () { this.x = z; y *= z;

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Algorithmen und Datenstrukturen

Repetitorium Informatik (Java)

Objektorientierte Programmierung Studiengang Medieninformatik

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

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling)

6. Globalübung (zu Übungsblatt 8)

Das umfassende Handbuch

JAVA - Methoden

Tutorium zur Vorlesung Programmieren

Einstieg in die Informatik mit Java

Praxis der Programmierung

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

3. Anweisungen und Kontrollstrukturen

Tafelübung 07 Algorithmen und Datenstrukturen

Programmieren 2 Java Überblick

Exceptions und Vererbung

Fragen zur OOP in Java

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke

Programmiertechnik Objektorientierung

II.3.1 Rekursive Algorithmen - 1 -

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Vererbung. Martin Wirsing. Ziele. Vererbung

Übungsstunde 9. Einführung in die Programmierung I

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Abbildungsverweise PlantUML Code. Version 1.0 Vanessa Petrausch

Informatik I Eprog HS12

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

Programmierkurs Java

Einführung in die Informatik I Informatik I/A

Transkript:

UML / Fujaba Generierung von Java-Quellcode aus UML-Diagrammen Marcel Friedrich

Agenda Einleitung Struktur Verhalten Klassendiagramme Storydiagramme Statecharts Action methods 2

Thema Codegenerierung mit Fujaba basierend auf Ausführungssemantik Wie werden die unterschiedlichen Arten von UML-Diagrammen kombiniert, um eindeutige Spezifikation zu erhalten? Welche Diagramme sind für die Erstellung welcher Code- Fragmente verantwortlich? 3

Motivation Ausgang: Auftretende Ereignisse Andere Objekte reagieren darauf Zustandsänderung Wie soll dies (visuell) modelliert werden? 4

Übersicht Diagramm Klassendiagramm Storydiagramm Statechart liefert Struktur Methodeninhalt Event-Behandlung 5

Struktur durch Klassendiagramme Klassendiagramme beinhalten: Attribute Assoziationen Methoden 6

Beispiel public class Level extends Place private int number; public void setnumber (int value) this.number = value; public int getnumber () return this.number;... public void pressbutton () //Empty private Elevator elevator2; public boolean setelevator2 (Elevator value) boolean changed = false; if (this.elevator2!= value)... return changed; public Elevator getelevator2 () return this.elevator2; 7

Beispiel public class Level extends Place private int number; public void setnumber (int value) this.number = value; public int getnumber () return this.number;... public void pressbutton () //Empty private Elevator elevator2; public boolean setelevator2 (Elevator value) boolean changed = false; if (this.elevator2!= value)... return changed; public Elevator getelevator2 () return this.elevator2; 8

Beispiel public class Level extends Place private int number; public void setnumber (int value) this.number = value; public int getnumber () return this.number;... public void pressbutton () //Empty private Elevator elevator2; public boolean setelevator2 (Elevator value) boolean changed = false; if (this.elevator2!= value)... return changed; public Elevator getelevator2 () return this.elevator2; 9

Codegenerierung (Klassendiagramme) Klassendiagramm Sourcecode Klasse Klassen Deklaration Attribute Attribut Deklaration Attribut Zugriffsmethoden Methoden Methoden Deklarationen? Assoziationen Referenz Deklaration Referenz Zugriffsmethoden 10

Storydiagramme Geeignet für: Komplexe Objektstrukturen und deren Evolution Basieren auf Klassendiagramm Beschreiben Scenarios 11

Storydiagramm Storydiagramm: Start- / Endknoten Aktivitäten Assoziationen Objektinstanzen Assoziationen Guards 12

Beispiel 13

Beispiel public void enterelevator () // Variablendeklaration try fujaba_success = false; fujaba_tmpobject = this.getlevel (); JavaSDM.ensure ( fujaba_tmpobject instanceof Level ); l = (Level) fujaba_tmpobject; e = l.getelevator2 (); JavaSDM.ensure ( e!= null ); this.setlevel (null); e.addtoperson (this); fujaba_success = true; catch (JavaSDMException fujaba_internalexception ) fujaba_success = false; return ; 14

Beispiel public void enterelevator () // Variablendeklaration try fujaba_success = false; fujaba_tmpobject = this.getlevel (); JavaSDM.ensure ( fujaba_tmpobject instanceof Level ); l = (Level) fujaba_tmpobject; e = l.getelevator2 (); JavaSDM.ensure ( e!= null ); this.setlevel (null); e.addtoperson (this); fujaba_success = true; catch (JavaSDMException fujaba_internalexception ) fujaba_success = false; return ; 15

Beispiel public void enterelevator () // Variablendeklaration try fujaba_success = false; fujaba_tmpobject = this.getlevel (); JavaSDM.ensure ( fujaba_tmpobject instanceof Level ); l = (Level) fujaba_tmpobject; e = l.getelevator2 (); JavaSDM.ensure ( e!= null ); this.setlevel (null); e.addtoperson (this); fujaba_success = true; catch (JavaSDMException fujaba_internalexception ) fujaba_success = false; return ; 16

Beispiel zu Kontrollstruktur 17

Beispiel zu Kontrollstruktur public void move () if (dest.getno() > l.getno()) try // story pattern this.moveup(); catch ( JavaSDMException fujaba_internalexception ) fujaba_success = false; else try // story pattern this.movedown(); catch ( JavaSDMException fujaba_internalexception ) fujaba_success = false;... return ; 18

Codegenerierung (Storydiagramme) Diagramm Sourcecode Storydiagramm Methoden Inhalt Aktivitäten / Try-Catch Block mit Variablen- _Story Pattern deklaration und -initialisierung Assoziationen Setzen von Referenzen auf Instanzen von Objekten Transitionen Übergänge zw. SP -Blöcken Guards Kontrollstrukturen 19

Zustandsdiagramm Geeignet für: Nebenläufigkeit reaktive Objekte Verwendung auf mehreren Ebenen möglich: Klassen Methoden Verwenden Aktivitäten & Storydiagramme 20

Events & Action methods Reaktives Objekt: Events als event methods Einheitlicher Aufruf Lösen action methods aus Action methods behandeln events Sind Private 21

Generische Zustandsdiagramm Klassen 22

Generische Zustandsdiagramm Klassen InitStatechart() erzeugt State-Table 23

Generische Zustandsdiagramm Klassen Zustände Aktivität, komplexer Zustand und And- Zustand erben 24

Generische Zustandsdiagramm Klassen Transitionen 25

Generische Zustandsdiagramm Klassen Action methods Wenn Zustand eintritt oder verlassen wird Wenn Transition ausgelöst wird Wenn Aktivität ausgeführt wird 26

Generische Zustandsdiagramm Klassen Action methods Wenn Zustand eintritt oder verlassen wird Wenn Transition ausgelöst wird Falls Aktivität auch doaction Wie action methods implementieren? Storydiagramme! 27

Codegenerierung (Zustandsdiagramme) Diagramm Sourcecode Statechart State-Table Zustände/ (State-Table) Eintrag, _Aktivitäten Event-queues und Action-Methods Transitionen (State-Table) Transitions und Action-Methods 28

Zusammenfassung Klassendiagramme liefern strukturelle Grundlage Aufruf Action-Method durch Statecharts Methodeninhalte durch Storydiagramme Grenzen der Codegenerierung z.b.: komplexe Algorithmen oder Systemaufrufe 29

Fragen? 30