• Keine Ergebnisse gefunden

oder per E-Mail an c.markmann@uni-wuppertal.de

N/A
N/A
Protected

Academic year: 2022

Aktie "oder per E-Mail an c.markmann@uni-wuppertal.de"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

BERGISCHE UNIVERSIT ¨ AT WUPPERTAL

GAUSS-STRASSE 20 42119 WUPPERTAL TELEFAX (0202) 439-2901 TELEFON (0202) 439-0 WWW www.uni-wuppertal.de

Fachbereich C

MATHEMATIK UND NATURWISSENSCHAFTEN Fachgruppe Mathematik und Informatik

Programming by Contract

WS 2005/2006 – ¨ Ubungsblatt 9 Ausgabe: 22. Dezember 2005 Abgabe: bis sp¨atestens 12. Januar 2006

in der Vorlesung

oder per E-Mail an c.markmann@uni-wuppertal.de

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

E-Mail: Hans-Juergen.Buhl@math.uni-wuppertal.de WWW: http://www.math.uni-wuppertal.de/∼buhl

Aufgabe 1. Nana-Konfiguration

Konfigurieren Sie Ihren User-Account auf unserem Ausbildungs- cluster gem¨aß der Konfigurationsanleitung der Vorlesung (siehe auch

http://www.math.uni-wuppertal.de/∼buhl/teach/exercises/PbC0506/ConfigureNana25.txt).

Lesen Sie http://www.math.uni-wuppertal.de/ buhl/teach/exercises/PbC0506/nana.pdf

und f¨uhren Sie ein paar erste Tests aus.

Erweitern Sie das Test-Hauptprogramm von

http://www.math.uni-wuppertal.de/buhl/teach/exercises/PbC0506/Quicksort6b.cc

um gen¨ugend viele Testf¨alle. Begr¨unden Sie, warum Ihre Testf¨alle Ihnen ausreichend erscheinen.

Aufgabe 2. simple stack0

Ubersetzen Sie das folgende Programm¨

http://www.math.uni-wuppertal.de/buhl/teach/exercises/PbC0506/simple stack0.cc

und f¨uhren Sie es aus.

Erg¨anzen Sie auch hier gen¨ugend viele Testf¨alle, um alle Zusicherungen greifen gesehen zu haben.

Provozieren Sie durch absichtliche Implementierungsfehler die Verlet- zung jeder einzelnen Nachbedingung.

Welche (w¨unschenswerten) Nachbedingungen werden noch nicht spezi- fiziert?

Warum haben die Methoden get count() und item() keine Nachbe- dingungen?

Erl¨autern Sie die Invariante der Klasse!

1

(2)

Aufgabe 3. Konstruktor

Erg¨anzen Sie simple stack.cc durch einen weiteren Konstruktor mit zwei Parametern, einem Feld G[] und einem int f¨ur die L¨ange dieses Feldes. Das durch diesen Konstruktor erzeugte Exemplar soll durch die Elemente des Feldes vorgef¨ullt werden.

Vergesssen Sie nicht, den Contract f¨ur diesen Konstruktor zu spezifi- zieren.

Aufgabe 4. Destruktor

Erg¨anzen Sie analog den n¨otigen Destruktor. Wie sieht hier der Con- tract aus?

Aufgabe 5. vektor4.cc

Ubersetzen und testen Sie¨

http://www.math.uni-wuppertal.de/buhl/teach/exercises/PbC0506/vektor4.cc, diskutieren Sie die vorhandenen Contracts und vervollst¨andigen Sie die Klasse.

2

Referenzen

ÄHNLICHE DOKUMENTE

Erg¨anzen Sie simple stack0.cc durch einen weiteren Konstruktor mit zwei Parametern, einem Feld G[] und einem int f¨ur die L¨ange dieses Feldes. Das durch diesen Konstruktor

http://en.wikipedia.org/wiki/Object Constraint Language Auf welchem Level kann sie als formale Methode eingeordnet

Welche Software-G¨ utekriterien verletzt das hard coding (http://en.wikipedia.org/wiki/Hard code).

Schreiben Sie jetzt f¨ ur die letzte Version der Funktion fakultaet() (Aufgabe 1) f¨ ur jede Anweisung das Hoare-Tripel nieder und verifizie- ren Sie dann, dass Ihre Funktion

Schreiben Sie f¨ ur alle Methoden der Klasse day (Aufgabe 5 von ¨ Ubungs- blatt 6), auch die von Ihnen selbst konzipierten istWochentag(), operator+ und operator-

Schreiben Sie f¨ ur eine C++-Klasse Polarkoordinaten und eine Klasse Datum (gem¨aß Seite 16 der Materialsammlung) die Spezifikation (in Form von nana-Constructs) der n¨otigen ”

Schreiben Sie ein kleines Testprogramm mit allen Zusicherungstypen REQUIRE(), ENSURE(), invariant(), INVARIANT() sowie CHECK(), und testen Sie die verschiedenen Einstellungen f¨

Reformulieren Sie einen (evtl. noch nicht ausf¨ uhrbaren) Contract nur mit Hilfe der grund- legenden Observatoren.. Kritisieren Sie analog die Berechnung von old keys in der