• Keine Ergebnisse gefunden

Programming by Contract

N/A
N/A
Protected

Academic year: 2022

Aktie "Programming by Contract"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

BERGISCHE UNIVERSIT ¨AT GESAMTHOCHSCHULE WUPPERTAL

GAUSS-STRASSE 20 42097 WUPPERTAL (Korrespondenzanschrift) 42119 WUPPERTAL (Lieferanschrift) TELEX 8 592 262 bughw TELEFAX (0202) 439-2901 TELEFON (0202) 439-1

Fachbereich 7

MATHEMATIK

Prof. Dr. Hans-J ¨urgen Buhl Praktische Informatik / Numerik

e-mail: Juergen.Buhl@math.uni-wuppertal.de

Programming by Contract

WS 2003/2004 – ¨ Ubungsblatt 8 15. Januar 2004

Ausgabe: 8. Januar 2004

Aufgabe 1. nana-Modifikationen

Vergleichen Sie Ihre gem¨aß Aufgabe 4 von ¨Ubungsblatt 7 durchgef¨uhr- ten Modifikationen Ihres Linux-Accounts mit denen der Datei

http://www.math.uni-wuppertal.de/∼buhl/teach/exercises/PgmByContr0304/nana.tar.gz

und beschreiben Sie den Sinn der jeweiligen Modifikationen zu den Ori- ginaldateien in /usr/bin bzw. /usr/include (welche Fehler wurden jeweils behoben?).

Aufgabe 2. Quicksort

Die folgende Version von Quicksort wurde schon mit einigen Zusiche- rungen in nana versehen:

http://www.math.uni-wuppertal.de/∼buhl/teach/exercises/PgmByContr0304/Quicksort6.cc

Testen Sie das Programm (bauen Sie dazu absichtlich Fehler in die Algorithmen ein, um die Zusicherungen greifen zu sehen).

Erg¨anzen Sie — falls n¨otig — weitere Programming by Contract- Klauseln.

Aufgabe 3. Quicksort - Fortsetzung

Welche Nachbedingungen fehlen noch in den Spezifikationen der bei- den Funktionen? Versuchen Sie diese mit Hilfe des C(...)-Makros zu realisieren.

Aufgabe 4. vektor4.cc

Die folgende Klasse vektor

http://www.math.uni-wuppertal.de/buhl/teach/exercises/PgmByContr0304/vektor4.cc

versucht schon an vielen Stellen sinnvolle Contracts und Zusiche- rungen einzusetzen. Erkl¨aren Sie in eigenen Worten, warum in welchen Methodenkategorien Vorbedingungen, Nachbedingungen, Klassen- und

1

(2)

Schleifen-Invarianten¨uberpr¨ufungen sowie einfache Zusicherungen sinn- voll sind.

Bearbeiten oder erl¨autern Sie mindestens die mit

”<---“ markierten Codestellen. Ersetzen Sie den Referenz-Komponenten-Zugriffsoperator durch eine Methode changeValueAt(int i, double x) und nutzen Sie dabei das volle Arsenal der nana-Hilfsmittel. Berichtigen Sie den Fehler in der Methode ei().

Testen Sie auch hier das Programm durch vor¨ubergehendes absichtlich- es Einbauen von Fehlern in die Algorithmen, um die Zusicherungen greifen zu sehen.

2

Referenzen

ÄHNLICHE DOKUMENTE

• Invarianten einer Komponente sind allgemeine, unver¨anderliche Konsistenzbe- dingungen an den Zustand einer Komponente, die vor und nach jedem Aufruf eines Dienstes gelten..

Untersuchen Sie die Fallbeispiele der Softwarekatastrophen (Beginn des Kapitels 1 der Materialsammlung) auf Nichteinhalten der in Ab- schnitt 1.1 diskutierten Qualit¨

Geben Sie in Beispielen an, wie sich die Vorbedingungen, die Nach- bedingungen und die Invarianten in einer Kindklasse relativ zu denje- nigen einer Elternklasse verhalten sollten,

Zeigen Sie, dass das Parkplatzproblem genau eine L¨ osung der am Ende von Kapitel 3.1 spezifizierten Art f¨ ur alle Eingabegr¨ oßen besitzt, die die Vorbedingungen erf¨ ullen?.

Gehen Sie analog vor beim Beispiel zur Berechnung einer nichtnega- tiven ganzzahligen Potenz einer ganzen Zahl nach dem Algorithmus von Seite 29 der

Underflow soll nur in dem Falle auftreten d¨ urfen, wenn das (exakte) Ergebnis im Absolutwert kleiner als FLT MIN ist5.

[r]

Konzipieren Sie gem¨ aß Seite 38 der Materialsammlung eine eigene Ex- ceptionhierarchie unter der Ahnenklasse exception und benutzen Sie diese Exceptions in geeigneten Methoden