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
SS 2007 – ¨ Ubungsblatt 10 Ausgabe: 28. Juni 2007 Abgabe: bis sp¨atestens 5. Juli 07
in der Vorlesung
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. grundlegende Observatoren
Was sind grundlegende Observatoren? Wie sollten sie spezifiziert wer- den (Notwendigkeit der Angabe von Vorbedingungen, ...)?
Schreiben Sie f¨ur eine C++-Klasse Polarkoordinaten, die Oberserva- toren f¨ur die x- und y-Koordinate sowie f¨ur Winkel und L¨ange enth¨alt.
Erg¨anzen Sie in Form von nana-Constructs die Spezifikationen f¨ur
”ba- sic queries“ und f¨ur
”derived queries“.
Aufgabe 2. abgeleitete Observatoren
Was sindabgeleitete Observatorenund wie sollten diese spezifiziert wer- den?
Schreiben Sie f¨ur die KlassePolarkoordinaten einen abgeleiteten Ob- servator istNull() und spezifizieren sie ihn.
Aufgabe 3. Konstruktoren und Destruktoren
Wie sollten Konstruktoren und Destruktoren spezifiziert werden?
Spezifizieren Sie f¨ur die KlassePolarkoordinateneinen Default-, einen Kopier- und einen Konstruktor mit Parametern sowie einen Destruktor.
Aufgabe 4. Modifikatoren
Was sind Modifikatoren und wie sollten Sie spezifiziert werden?
Spezifizieren Sie f¨ur die Klasse Polarkoordinaten eine Me- thode set_x_y(double x, double y) sowie eine Methode double_vector(), der die L¨ange des Exemplar-Vektors verdop- pelt.
Demonstrieren Sie die N¨utzlichkeit einer geeigneten Invariante.
1
Aufgabe 5. fallunterscheidende Nachbedingungen
Spezifizieren Sie eine Integer-wertige Funktion int kodiere(int d) mit dem Definitionsbereich {1,5,7}, die 1 auf -4, 5 auf 5 und 7 auf 4 abbildet.
2