• 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 12 Ausgabe: 26. Januar 2006

Abgabe: bis sp¨atestens 2. Februar 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. Framebedingung mydictionary

Warum sind die Nachbedingungen des Kopierkonstruktors in mydictionary4.cc

nur bedingt f¨ur einen (Kunden-)Contract geeignet? 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 Methode put().

Wozu sind die virtuellen set-Methoden + und - eingef¨uhrt worden?

Versuchen Sie die Framebedingungen der Methode put() sowie der Methoderemove() mit Hilfe einer Kopie von*thisausf¨uhrbar zu ma- chen.

Aufgabe 2. L¨angenbeschr¨ankter Container

Andern Sie den Contract aus Aufgabe 1 in einen solchen f¨¨ ur ein a-priori in der L¨ange beschr¨anktes Dictionary um. (Es gibt keinen Default- Konstruktor, sondern nur einen Konstruktor mit einem Parameter, der die maximale L¨ange spezifiziert.)

Aufgabe 3. mydictionary

Erg¨anzen Sie die Klasse mydictionary (aus mydictionary4.cc) um einen neuen grundlegenden Observator

set<KEY> keys()

1

(2)

der die STL-Menge der Schl¨ussel des Exemplars der Klasse mydictionary als Funktionsergebnis liefert.

Redesignen Sie die gesamte Klasse unter Benutzung dieses Observators.

Aufgabe 4. Kalenderwoche

Entwickeln Sie nach den Mustern der Vorlesung einen Contract f¨ur eine Klasse Kalenderwoche, die unter anderem die friend-Funktionen

Kalenderwoche operator+(const Kalenderwoche& k, int diff), int operator-(const Kalenderwoche& k1, const Kalenderwoche& k2)

enth¨alt.

Aufgabe 5. quicksort unique

Spezifizieren Sie eine Funktion

int quicksort_unique(double v[], int n);

// Nach Funktionsaufruf enth¨alt v[]

// in den Komponenten 0..(Wert des Funktionsergebnisses) // alle Werte aus dem urspr¨unglichen v[] in aufsteigender // Reihenfolge, jedoch keinen doppelt

durch Angabe von Vor- und Nachbedingungen in nana-Schreibweise.

2

Referenzen

ÄHNLICHE DOKUMENTE

mit vom Jg. Bundesrepublik Jugoslawien); (DBA mit SFR Jugoslawien gilt fort, BGBl.. Abkommen Fundstelle Inkrafttreten Anwendung BGBl. II BStBl I grundsätzlich. mit vom

Zum ei- nen, weil bereits im Rahmen der Stellungnahme zu den Anträgen in einem ersten Teil der vorlie- genden Stellungnahme auf einzelne Sachgebiete Bezug genommen wird, zum

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

Ordnen Sie die folgenden Anti-Pattern in Bezug auf die in der Vorlesung besprochenen SW-G¨ utekriterien ein:.

Erl¨autern Sie, die Mißachtung welcher Software-G¨ utekriterien zum Pro- blem ” Ein sahniger Brocken“ (Seite 5 der Materialsammlung) gef¨ uhrt hat (Erstellung einer

Erg¨anzen Sie dann im gcd-Algorithmus (Seite 13f. der Materialsamm- lung) alle auftretenden Hoare-Tripel, indem Sie diese einzeln jeweils in drei Zeilen niederschreiben und

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

weiterhin KAE bezogen haben, wird nach Rücksprache mit dem SECO verzichtet, da sich das Risiko von Doppelzahlun- gen bei Fusionen gemäss Rückmeldung des Revisionsdienstes (TCRD)