Einführung in die Informatik II Entwurf durch Verträge 3. Teil

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Dr. Andreas Winter Sommersemester 2007 Einführung in die Software-Entwicklung © Institut für Informatik Programmier-Richtlinien vgl. auch
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
Abstrakte Klassen.
Ein Beispiel in Java.
Erweiterte Zuweisungskompatibilität
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
Objektorientierte Programmierung
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
© 2004 Pohlig - Taulien Dokumentation mit JavaDoc.
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
UML Begleitdokumentation des Projekts
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität.
Programme dokumentieren mit JavaDoc
Entwurfs- und Implementationsdiagramme
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Grundlagen der Programmierung
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Klassen und Klassenstruktur
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
CSS Cascading Style Sheets
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Einführung in die Informatik II Entwurf durch Verträge 3. Teil Info II Sommersemester 2001 3/28/2017 6:24 PM Einführung in die Informatik II Entwurf durch Verträge 3. Teil Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität München Sommersemester 2004 27 Mai 2004 Letzte Änderung: 3/28/2017 6:24:52 PM 2 Copyright 2001 by Bernd Bruegge. All rights reserved.

Themen der heutigen Vorlesung Info II Sommersemester 2001 3/28/2017 6:24 PM Themen der heutigen Vorlesung Heuristiken für guten OCL-Stil Javadoc: Ein Werkzeug zur Dokumentation von Java-Programmen Formulierung von OCL-Ausdrücken in Javadoc Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Ziele Sie können OCL-Ausdrücke - insbesondere Verträge - in Javadoc formulieren: Invarianten in Javadoc Vor- und Nachbedingungen in Javadoc Sie verstehen das Zusammenspiel von Problembeschreibung Modellierung des Problems (UML) Spezifikation von Verträgen (OCL) Dokumentation von Verträgen (javadoc) Copyright 2001 by Bernd Bruegge. All rights reserved.

Invarianten auf Eigenschaften des UML-Modells Info II Sommersemester 2001 3/28/2017 6:24 PM Invarianten auf Eigenschaften des UML-Modells Beispiel: Wir haben eine Klasse im Spezifikationsmodell als abstrakt definiert und wollen nun verhindern, dass eine Instanzierung dieser Klasse (z.B. aufgrund fehlerhafter Implementierung) möglich ist. Das können wir in OCL formulieren. Dazu nutzen wir zwei weitere OCL-Operationen: type.allInstances: Set(type) Menge aller Instanzen des OCL-Typs type und seiner Untertypen object.oclType: OclType Typ (aus dem OCL-Modell) des OCL-Objekts object Beispiel (aus TUMBoS): Wir formulieren folgende Invariante, um sicherzustellen, dass Transaktion nicht direkt instanzierbar ist: Transaktion Transaktion.allInstances->select(oclType = Transaktion)->isEmpty Die Unterklassen von Transaktion sind instanzierbar  nur echte Instanzen auswählen Copyright 2001 by Bernd Bruegge. All rights reserved.

Das erweiterte OCL-Modell für das "Treueprogramm Silber & Gold" Kunde Alter >= 18 Kundenkarte gültigAb.istVor(verfälltAm) KundenKarte gedruckterName = kunde.titel.concat(kunde.name) Dienst (punkteVerdient > 0) implies (punkteBezahlt = 0) BonusProgramm partner->size = 4 ebene->size = 2 BonusProgramm ebene->first.name = "Silber" BonusProgramm::einschreiben(k:Kunde) pre: not kunde->includes(k) Post: kunde = kunde@pre->including(k) ProgrammPartner anzahlKunden = bonusProgramm.kunde->asSet->size Transaktion:: programm():BonusProgramm pre: true post: result = karte.mitgliedschaft.programm Transaction Transaction.allInstances->select(oclType = Transaction)->isEmpty

Wie schreibe ich gutes OCL? Info II Sommersemester 2001 3/28/2017 6:24 PM Wie schreibe ich gutes OCL? Ist das OCL-Modell für TUMBoS gut? Was ist ein gutes OCL-Modell? Frage: In welchem Kontext sollte eine Invariante formuliert werden? Wir könnten alle Invarianten eines Klassendiagramms schreiben, indem wir immer denselben Kontext nehmen, z.b. BonusProgramm. Das hat drei Nachteile: Eine Navigation, die das ganze Klassendiagramm durchschreiten muss, erzeugt eine sehr enge Koppelung von Objekten. Ein wichtiges Prinzip der Objektorientierung ist allerdings, Objekte zu entkoppeln, d.h. ein Objekt so wenig wie möglich von anderen Objekten abhängig zu machen. 2. Wenn man nicht aufpasst, kann man schnell lange und komplexe Ausdrücke in OCL schreiben, die nicht sehr leserlich sind. 3. Wenn sich das UML-Modell (oder sogar die Problemstellung) ändert, kann die Wartung von komplexen OCL-Ausdrücken ein Alptraum werden. Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Stilregeln für OCL Einschränkungen müssen einfach sein. Invarianten sollten im richtigen Kontext formuliert sein.  Stilfibel für "Gutes Programmieren in OCL" Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II-Stilfibel für OCL: Vermeide komplexe Ausdrücke Info II Sommersemester 2001 3/28/2017 6:24 PM Info II-Stilfibel für OCL: Vermeide komplexe Ausdrücke Modellierer schreiben oft lange OCL-Ausdrücke, indem sie beispielsweise alle Invarianten einer Klasse in einer einzigen Invariante schreiben, um sich das wiederholte Aufschreiben des Kontextes zu ersparen. Einschränkungen werden während der Modellierung gebraucht und sollten deshalb leicht zu lesen und zu schreiben sein. Regel: Ein komplizierter OCL-Ausdruck sollte immer in mehrere Einschränkungen aufgeteilt werden. Regel: Jede Invariante, die mehrere boolesche and Verknüpfungen enthält, zerlegen wir in einzelne Invarianten, und zwar eine für jeden booleschen Ausdruck. Regel: Eine Invariante sollte nur durch die kleinste mögliche Anzahl von Assoziationen navigieren OCL-Ausdrücke, die über drei oder mehr Assoziationen hinweg navigieren, sind fast immer zu komplex! Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II-Stilfibel für OCL: Finden des richtigen Kontexts Info II Sommersemester 2001 3/28/2017 6:24 PM Info II-Stilfibel für OCL: Finden des richtigen Kontexts OCL-Invarianten sollte man nur im Kontext einer Klasse und ihrer unmittelbaren Nachbarschaft schreiben, nicht im Kontext des gesamten Modells. Regeln zum Finden des richtigen Kontexts: Wenn die Invariante den Wert des Attributs einer Klasse beschränkt, dann ist die Klasse, die das Attribut enthält, der richtige Kontext. Wenn die Invariante die Werte der Attribute von mehr als einer Klasse beschränkt, dann ist jede der Klassen, die eins der Attribute enthält, ein guter Kandidat für den Kontext. Aufgrund unserer Kenntnis der Anwendungsdomäne können wir oft schon während der Modellierung in UML eine Klasse ermitteln, die verantwortlich für die Einhaltung einer bestimmten Einschränkung ist. Diese Klasse ist dann für diese Einschränkung der richtige Kontext. Copyright 2001 by Bernd Bruegge. All rights reserved.

Vorgehensweise bei der Modellierung mit UML und OCL Info II Sommersemester 2001 3/28/2017 6:24 PM Vorgehensweise bei der Modellierung mit UML und OCL 1. Schritt: Umsetzung der Problembeschreibung in ein UML-Modell 2. Schritt: Schrittweise Transformation des UML-Modells von Analysemodell bis zum Implementierungsmodell 3. Schritt: Während der UML-Modellierung Identifikation von Einschränkungen (Invarianten, Vor- und Nachbedingungen). 4. Schritt: Formulierung der Einschränkungen als OCL-Ausdrücke (visuell im UML-Modell oder textuell als OCL-Modell) 5. Schritt: Umstrukturieren und Vereinfachen von OCL-Ausdrücken (mittels der Stilregeln). 6. Schritt: Überprüfung des OCL-Modells auf Korrektheit und Widerspruchsfreiheit (mithilfe eines OCL-Übersetzers)  Hauptstudium 7. Schritt: Übersetzung der UML- und OCL-Modelle in Java und Javadoc Copyright 2001 by Bernd Bruegge. All rights reserved.

Zusätzliche Informationen zu OCL Info II Sommersemester 2001 3/28/2017 6:24 PM Zusätzliche Informationen zu OCL ftp://ftp.omg.org/pub/docs/ad/97-08-08.pdf Die OCL-Sprachreferenz (Version 1.1) http://www.klasse.nl/ocl/index.htm viele interessante Informationen zu OCL http://www.software.ibm.com/ad/ocl ein Übersetzer für die OCL-Grammatik. http://dresden-ocl.sourceforge.net/index.html ein anderes OCL-Compiler-Projekt Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Javadoc Javadoc ist ein Werkzeug, mit dem wir Kommentare aus einen Java-Programm in die Programmdokumentation übertragen können. Java-Programmtexte übersetzen wir normalerweise nur mit dem Java-Compiler, um ein ausführbares Programm zu bekommen. Wir können es auch mit dem Javadoc-Compiler übersetzen, um eine strukturierte HTML-Dokumentation des Programms zu erzeugen. Die HTML-Dokumentation können wir uns mit einem beliebigen Web-Seitenbetrachter anschauen. Ausführbares Programm Java- Compiler Quellprogramm mit Kommentaren HTML- Browser Javadoc- Compiler HTML-Dokument Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Javadoc: Syntax Ein Javadoc-Kommentar besteht aus einer Zeichenkette zwischen den Zeichen /** und */ Beispiel: /** Dies ist ein Javadoc-Kommentar */ Führende *-Zeichen in einem Javadoc-Kommentar werden ignoriert, ebenso wie Leerzeichen und Tabs vor führenden *-Zeichen. Javadoc-Kommentare werden nur dann erkannt, wenn sie direkt vor der Deklaration einer Klasse, einer Schnittstelle, eines Konstruktors, einer Methode oder einer Attributvariable plaziert werden. Wir besprechen zunächst häufig benutzte Javadoc-"Schlüsselworte" (document tags) für die Dokumentation von Klassen und Schnittstellen die Dokumentation von Konstruktoren und Methoden Dann zeigen wir, wie man Verträge als Javadoc-Kommentare schreibt. Copyright 2001 by Bernd Bruegge. All rights reserved.

Beispiel: Ein Javadoc-Kommentar für eine Klasse Info II Sommersemester 2001 3/28/2017 6:24 PM Beispiel: Ein Javadoc-Kommentar für eine Klasse /** * Eine Klasse von Bildschirm-Fenstern. * Beispiel zur Benutzung: * <pre> * Window win = new Window(parent); * win.show(); * </pre> * * @author Sami Shaio * @version %I%, %E% * @see java.awt.BaseWindow * @see java.awt.Button */ class Window extends BaseWindow { ... } HTML Element Javadoc tags Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Javadoc-Schlüsselworte zur Kommentierung von Klassen und Schnittstellen Javadoc-Tags werden mit einem vorangestellten @-Zeichen markiert. Javadoc-Tags müssen am Anfang einer Kommentarzeile stehen, damit sie erkannt werden können. @author name-text Erzeugt einen “Author”-Eintrag für name in der Dokumentation. @version version-text Erzeugt einen “Version”-Eintrag. @see reference Erzeugt einen Querverweis (Hyperlink): “See also reference” @since since-text Erzeugt einen “Since”-Eintrag. Wird benutzt, um eine Erweiterung oder Änderung seit der letzten Version zu dokumentieren. In Javadoc-Kommentaren können HTML-Elemente verwendet werden. Copyright 2001 by Bernd Bruegge. All rights reserved.

Javadoc-Schlüsselworte zur Kommentierung von Methoden Info II Sommersemester 2001 3/28/2017 6:24 PM Javadoc-Schlüsselworte zur Kommentierung von Methoden Methoden-Kommentare können die selben Tags wie Klassen-Kommentare enthalten, sowie zusätzlich: @param parameter-name description Beschreibt den Parameter parameter-name der Methode, wobei die Beschreibung mehrzeilig sein kann. Der erste @param erzeugt eine "Parameters"-Sektion in der HTML-Seite. @return description Für Methoden mit Resultat: Erzeugt eine "Returns"-Sektion, die eine Beschreibung des Rückgabewerts enthält, in der HTML-Seite. @deprecated deprecated-text Erzeugt einen Kommentar, der aussagt, dass die Methode veraltet ist und nicht mehr benutzt werden sollte. Üblicherweise gibt man hier eine Methode an, die als Ersatz benutzt werden sollte. Beispiel : @deprecated Ersetzt durch foo() Copyright 2001 by Bernd Bruegge. All rights reserved.

Beispiel: Ein Javadoc-Kommentar für eine Methode Info II Sommersemester 2001 3/28/2017 6:24 PM Beispiel: Ein Javadoc-Kommentar für eine Methode /** * Liefert das Zeichen an der spezifizierten Position. * * @param index Die Indexposition des gesuchten Zeichens. * Gueltige Index-Werte sind * <code>0</code> bis <code>length()-1</code>. * @return Das gewünschte Zeichen * @see java.lang.Character#charValue() */ public char charAt(int index) { ... } Copyright 2001 by Bernd Bruegge. All rights reserved.

Javdoc-Schlüsselworte zur Kommentierung von Attributvariablen Info II Sommersemester 2001 3/28/2017 6:24 PM Javdoc-Schlüsselworte zur Kommentierung von Attributvariablen Ein Attributvariablen-Kommentar kann nur die Schlüsselworte @see, @since und @deprecated enthalten Beispiel: /** * Die X-Koordinate des Fensters. * * @see Window */ int x = 1263732; Copyright 2001 by Bernd Bruegge. All rights reserved.

Javadoc-Kommentare können auch HTML enthalten Info II Sommersemester 2001 3/28/2017 6:24 PM Javadoc-Kommentare können auch HTML enthalten Javadoc-Kommentar mit integriertem HTML-Code: /** * Dies ist ein <b>Javadoc</b>-Kommentar. */ Resultat: Dies ist ein Javadoc-Kommentar. Wenn Sie HTML innerhalb eines Javadoc-Kommentars schreiben, verwenden Sie keine HTML-Elemente für Überschriften (heading tags) wie <h1> , <h2>, usw. Da Javadoc ein HTML-Dokument mit standardisierter Struktur aus Ihren Kommentaren erzeugt, kann die Verwendung von HTML-Elementen, die die Dokumentstruktur ändern (wie z.B. zusätzliche Überschriften), zu Problemen bei der Formatierung des erzeugten Dokuments führen. Copyright 2001 by Bernd Bruegge. All rights reserved.

Javadoc-Schlüsselworte zur Kommentierung von Verträgen Info II Sommersemester 2001 3/28/2017 6:24 PM Javadoc-Schlüsselworte zur Kommentierung von Verträgen Javadoc-Kommentare können auch Einschränkungen enthalten Invarianten als Teil des Javadoc-Kommentars zu einer Klassen- oder Schnittstellendefinition. Als Kontext dient die kommentierte Klasse bzw. Schnittstelle. Vor- und Nachbedingungen als Teil des Javadoc-Kommentars zu einer Methoden- oder Konstruktordeklaration. Als Kontext dient die kommentierte Methode bzw. der kommentierte Konstruktor. Schlüsselworte: @invariant E Beschreibt eine Invariante, wobei E ein OCL-Ausdruck ist. @pre E Beschreibt eine Vorbedingung, wobei E ein OCL-Ausdruck ist. @post E Beschreibt eine Nachbedingung, wobei E ein OCL-Ausdruck ist. Hinweis: Bei Verwendung von Javadoc ohne eine passende Erweiterung werden diese Tags einfach ignoriert. Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Benutzung von Javadoc Aufruf: javadoc <Namen der Dateien mit Java-Programmtext> javadoc erzeugt aus den im Programmtext enthaltenen Deklarationen und den entsprechenden Kommentaren eine Anzahl von HTML-Seiten, die alle öffentlichen und geschützten Klassen, Schnittstellen, Konstruktoren, Methoden und Attributvariablen dokumentieren. javadoc kann auch eine Dokumentation erstellen, wenn das Java- Programm keine Javadoc-Kommentare enthält. In diesem Fall werden die deklarierten Programmteile unkommentiert aufgelistet. javadoc generiert die folgenden Dateien: Eine .html-Datei für jede .java-Datei Darstellung der Klassenhierarchie (overview-tree.html) Index aller dokumentierten Programmteile (index-all.html) Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Beispiel für die Dokumentation von Verträgen: Ausgangspunkt: UML-Modell und OCL-Modell Person Integer: getAge() <<postcondition>> result > 0 setAge(age:integer) <<precondition>> age > 0 Employee -age_: Integer status: enum{in,out} {age > 0} Integer: getAge() setAge(age:integer) Copyright 2001 by Bernd Bruegge. All rights reserved.

Java-Code für Person (Vertragsbeschreibung in Javadoc) Info II Sommersemester 2001 3/28/2017 6:24 PM Java-Code für Person (Vertragsbeschreibung in Javadoc) public interface Person { /** * @pre age > 0 // age always positive */ public void setAge(int age); * @post result > 0 // age always positive public int getAge(); } -age_: Integer status: enum{in,out} Integer: getAge() setAge(age:integer) Employee <<postcondition>> result > 0 {age > 0} <<precondition>> age > 0 Person Copyright 2001 by Bernd Bruegge. All rights reserved.

Dokumentation der Schnittstelle von Person Info II Sommersemester 2001 Dokumentation der Schnittstelle von Person 3/28/2017 6:24 PM Copyright 2001 by Bernd Bruegge. All rights reserved.

Java-Code für Employee (Vertragsbeschreibung in Javadoc) Info II Sommersemester 2001 3/28/2017 6:24 PM Java-Code für Employee (Vertragsbeschreibung in Javadoc) /** * @invariant age > 0 */ public class Employee implements Person { private int age_; * @pre age > 0 public Employee( int age ) { age_ = age; } public int getAge() { return age_; public void setAge( int age ) { -age: Integer status: enum{in,out} Integer: getAge() setAge(age:integer) Employee <<postcondition>> result > 0 {age > 0} <<precondition>> age > 0 Person Copyright 2001 by Bernd Bruegge. All rights reserved.

Dokumentation der gesamten Klassenhierarchie (overview-tree.html) Info II Sommersemester 2001 3/28/2017 6:24 PM Dokumentation der gesamten Klassenhierarchie (overview-tree.html) Copyright 2001 by Bernd Bruegge. All rights reserved.

Index aller Programmteile (index-all.html) Info II Sommersemester 2001 3/28/2017 6:24 PM Index aller Programmteile (index-all.html) Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Dokumentation des Vertrages von Person (erzeugt mit javadoc und iDoclet) Copyright 2001 by Bernd Bruegge. All rights reserved.

Zusätzliche Informationen zu Javadoc Info II Sommersemester 2001 3/28/2017 6:24 PM Zusätzliche Informationen zu Javadoc Informationen zu Javadoc http://java.sun.com/j2se/javadoc/index.html ausführliche Dokumentation zu javadoc FAQ: http://java.sun.com/j2se/javadoc/faq/index.html Informationen über Werkzeuge für Verträge http://icplus.sourceforge.net/ iDoclet, eine Javadoc-Erweiterung zur Einbettung von Verträgen in HTML-Dokumentationen. iControl, ein interaktives Werkzeug zur Auswahl, welche (mit iContract umgesetzten) Einschränkungen überprüft werden sollen. Zur Zeit nicht aktiv Copyright 2001 by Bernd Bruegge. All rights reserved.

Info II Sommersemester 2001 3/28/2017 6:24 PM Zusammenfassung Bei der Formulierung von OCL-Ausdrücken benutzen wir einige Heuristiken, um die Ausdrücke einfach und übersichtlich zu halten. Javadoc ist eine Sprache und ein Werkzeug zur Erstellung einer strukturierten HTML-Dokumentation für Java-Programme. Wir können Javadoc benutzen, um Verträge im Java- Programm zu dokumentieren. UML, OCL und Javadoc sind drei Sprachen: Ausgehend von der Problembeschreibung modellieren wir das Problem während der Analyse- und Entwurfsphasen in UML. Während der detaillierten Entwurfsphase spezifizieren wir Einschränkungen und schreiben das Vertragsmodell in OCL. Während der Implementationsphase dokumentieren wir die Verträge mit Javadoc. Copyright 2001 by Bernd Bruegge. All rights reserved.