Design by Contract with JML - Teil 2

Slides:



Advertisements
Ähnliche Präsentationen
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Advertisements

der Universität Oldenburg
Anwendungen des OODM auf die ADB / NDB
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Java Beans von Raoul Schneider.
Zusammenfassung des Kapitels 8
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Binäre Bäume Richard Göbel.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
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 Kapitel 3 Claudio Moraga, Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Einführung in die OOP in Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
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 Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
Abstrakter Datentyp in C++ I - Klasse -
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
FH-Hof Sortieren mit Binären Bäumen Richard Göbel.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Ein kommando unter Windows 7
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
Proseminar an der TU München Martin Levihn
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Diskrete Mathematik II
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Auslegung eines Vorschubantriebes
Abteilung für Telekooperation Übung Softwareentwicklung 2 für Wirtschaftsinformatik Dr. Wieland Schwinger
Algorithmen und Datenstrukturen Übungsmodul 6
Equals, Hashcode und CompareTo Micha Kessler
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
EPROG Tutorium #6 Philipp Effenberger
Service components and distribution with OSGi Seminar: Multimedia- und Internetsysteme Paul Hübner |
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Grundlagen der Algorithmen und Datenstrukturen Kapitel
se_11_interfaces.ppt1 Softwareengineering Interfaces Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law.
se_5_liste_stack_etc.ppt1 Softwareengineering Listenstrukturen und ähnliches Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law.
Entwurf Anwendungslogik SS2005.
Selection-Sort Insertion-Sort Bubble-Sort.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Java-Kurs Übung Besprechung der Hausaufgabe
OOP II.
Kompetenzniveaus Lernlupe Mathematik
Objects first mit BlueJ und Greenfoot
 Präsentation transkript:

Design by Contract with JML - Teil 2 Alexander Klaas Proseminar Assertions Prof. Dr. Heike Wehrheim Universität Paderborn

Design by Contract with JML - Teil 2 Übersicht Motivation Einführung Modellvariablen Modellmethoden Methoden ohne Seiteneffekte Praktisches Beispiel Weitere Konzepte Design by Contract with JML - Teil 2

Design by Contract with JML - Teil 2 I. Motivation Spezifikation soll abstrahieren Dokumentation Modularität Wartbarkeit Trennung von Code und Spezifikation wünschenswert Problem: Datenstrukturen von Implementierung abhängig Trennung Code - Spezifikation, Abstraktion (title vom paper) Paper von 2003 erwähnen Design by Contract with JML - Teil 2

Design by Contract with JML - Teil 2 I. Motivation Beispiel: public class Person { private /*@ spec_public@*/ String name; /*@ requires n != null && !n.equals(""); @ ensures n.equals(name); @*/ public Person(String n){ name=n; };} Namen nun lieber getrennt nach Vor- und Nachnamen speichern private String first_name; private String last_name; Spezifikation ist public! Trennung Code - Spezifikation, Abstraktion (title vom paper) Paper von 2003 erwähnen first_name=n.split(" ")[0]; last_name=n.split(" ")[1]; Design by Contract with JML - Teil 2

Design by Contract with JML - Teil 2 I. Motivation Lösungsansatz 1: Helfervariablen Im Beispiel: name wie gehabt zusätzlich beibehalten Nachteile: Speicherverbrauch selbst bei Kompilierung ohne JML muss konsistent gehalten werden kann nicht in interfaces verwendet werden Lösungsansatz 2: Abfragemethoden Im Beispiel: getFullName() konkateniert first_name und last_name erhöht Umfang des Programmcodes Zweck der Methode nicht klar ersichtlich besser: Modellvariablen Alternativen - helper, query, nachteile… Design by Contract with JML - Teil 2

II. Einführung Modellvariablen Variablen, die in der Spezifikation deklariert werden Verhältnis zu echten Variablen mittels Abstraktionsfunktion Modellvariable Modellvariablen, verhältnis in grafik, represents, abstraction function Im Beispiel: Konkatenation Abstraktions-funktion Echte Variable Design by Contract with JML - Teil 2

II. Einführung Modellvariablen public class Person { private String first_name; private String last_name; /*@ public model instance String name; @ private represents name <- first_name+" "+last_name; @ @ requires n != null && !n.equals(""); @ ensures n.equals(name); @*/ public Person(String n){ first_name=n.split(" ")[0]; last_name=n.split(" ")[1]; };} Abstraktionsfunktion Modellvariablen, verhältnis in grafik, represents, abstraction function Design by Contract with JML - Teil 2

II. Einführung Modellvariablen Änderungen ohne Auswirkung auf Klienten (represents Ausdrücke sind private) Zweck einer Variable klar Transparent – ohne Auswirkung auf Implementierung auch in interfaces verwendbar Vorteile, änderungen, private/public, interfaces Design by Contract with JML - Teil 2

Design by Contract with JML - Teil 2 III. Modellmethoden Analog Methoden, die in Spezifikation mit Modifikator model deklariert werden Insbesondere für Abstraktionsfunktion benutzt als auch für Invarianten, Vor- und Nachbedingungen Darf keine Seiteneffekte haben => als pure gekennzeichnet Modellvariablen, verhältnis in grafik, represents, abstraction function Design by Contract with JML - Teil 2

IV. Methoden ohne Seiteneffekte Da JML transparent auf die Implementierung sein soll, darf der Zustand des Programmes nicht beeinflusst werden Java-Zuweisungsausdrücke (=, ++, --) nicht erlaubt Methoden müssen als pure gekennzeichnet werden, um in JML verwendet werden zu können Modellvariablen, verhältnis in grafik, represents, abstraction function Design by Contract with JML - Teil 2

IV. Methoden ohne Seiteneffekte Zusammen mit spec_public kann man echten Methoden und Variablen ansehen, wo sie genutzt werden Nur in Spezifikation (model), beides, oder nur in Implementierung Im Beispiel: Falls voller Name auch in Implementierung gebraucht wird, bietet sich eine Abfragemethode an: /*@ ensures n.equals(getFullName()); @*/ … private /*@ pure spec_public @*/ String getFullName(){ return first_name+" "+last_name; } Modellvariablen, verhältnis in grafik, represents, abstraction function Design by Contract with JML - Teil 2

V. Praktisches Beispiel Erinnerung Suchbaum: Alle Elemente im linken Teilbaum kleiner, im rechten größer Durchlaufen In-Order gibt Elemente sortiert aus Abstrakteres Beispiel: Modellvariable Sortierte Liste Abstraktions-funktion In-Order-Treewalk Modellvariablen, verhältnis in grafik, represents, abstraction function Echte Variable Suchbaum Quelle Grafik: Vorlesung Datenstrukturen und Algorithmen SS2005 bei Prof. Dr.rer.nat. Johannes Blömer, http://wwwcs.uni-paderborn.de/cs/ag-bloemer/lehre/dua_SS2005/material/13_suchbaeume.pdf Design by Contract with JML - Teil 2

V. Praktisches Beispiel private static /*@ spec_public @*/ Node set; /*@ public model static LinkedList sorted_list; @ private represents sorted_list <- In_Order_Treewalk(set); @ private model pure LinkedList In_Order_Treewalk(Node x) { @ … @ } @ ensures @ (\forall int i; 0 <= i && i < sorted_list.size(); @ sorted_list.itemAt(i) instanceof Integer) @ && (\forall int i; 0 < i && i < sorted_list.size(); @ ((Integer)sorted_list.itemAt((int)(i - 1))) @ .compareTo(sorted_list.itemAt(i)) <= 0) @ && sorted_list.contains(integer_to_add); @*/ public static void add(Integer integer_to_add){ … } Code Beispiel liste->baum Design by Contract with JML - Teil 2

V. Praktisches Beispiel Vorführung Beispiel….einführung vllt auf folien Design by Contract with JML - Teil 2

Design by Contract with JML - Teil 2 VI. Weitere Konzepte Ghostvariablen: ohne Relation zu echten Variablen reine Hilfsvariablen z.B. in Modellmethode Refinement: induktiv von Spezifikation zu Implementierung Aus abstrakten Modellvariablen kann man später echte Variablen der Implementierung gewinnen JML: Modellvariablen werden vererbt Ghost, refinement Design by Contract with JML - Teil 2

Design by Contract with JML - Teil 2 VI. Weitere Konzepte Beispiel Refinement: //@ model instance String gender; protected boolean gen; //@ protected represents gender <- (gen ? "female" : "male"); Ghost, refinement Design by Contract with JML - Teil 2