Kommentare zur Lösung der 3. Aufgabe von Martin Bachler, Florian Valente und Maximilian Ronniger: Die Beurteilung der Lösung lautet: ---------------------------------- +100 Compilation erfolgreich - 6 Zusicherungen auf settern als Vorbedingungen formuliert, aber eher entsprechend Nachbedingungen überprüft - 3 teilweise fehlen Zusicherungen - 0 Instanzvariablen mit Defaultsichtbarkeit Struktur der Lösung: -------------------- Die Klasse "Viereck" ist Untertyp der vorgegebenen Klasse "Form" und hat "ARechteck" und "AQuadrat" als Untertypen. Die vorgegebene Methode "zeichne" ist in "Viereck" implementiert, Methoden zum Ändern der Seitenlängen in "ARechteck" und "AQuadrat". Bezüglich der Untertypbeziehungen siehe Posting in den TUWIS++News. Was an der Lösung positiv auffällt: ----------------------------------- Die Struktur dieser Lösung ist perfekt. Sowohl Vererbung als auch Subtyping werden sehr gut eingesetzt. Kommentare sind kurz und klar gehalten. Es ist keinerlei unnötige Funktionalität implementiert. Die wichtigsten Testfälle sind vorhanden. Was man anders machen könnte: ----------------------------- Bei genauer Betrachtung der Zusicherungen in "ARechteck" und "AQuadrat" fällt auf, dass Einschränkungen auf den Parametern eigentlich als Vorbedingungen formuliert sind. Aus der Implementierung (wirft Exception) kann man aber ableiten, dass diese Zusicherungen eigentlich nicht als Vorbedingungen sondern eher als Nachbedingungen (wann kommt eine Exception) zu verstehen sind. Man hätte in den Zusicherungen eher "wenn ... wird eine Exception ausgelöst" schreiben sollen. Weiters fällt auf, dass nirgends erklärt ist, wozu die Parameter der Methoden und die Instanzvariablen verwendet werden. Das kann man nur aus dem Code herauslesen. Besser wäre es gewesen, "Viereck" als abstrakte Klasse zu definieren. Dafür wurden aber keine Punkte abgezogen, da in dieser speziellen Implementierung Instanzen von "Viereck" auch sinnvoll sein könnten (obwohl nicht klar ist wofür). Jedenfalls werden dabei keine Zusicherungen verletzt. Für die in diesem Fall nicht angebrachte Verwendung von Instanzvariablen mit Defaultsichtbarkeit gibt es keine Punkteabzüge, da Sichtbarkeit erst in einer späteren Vorlesung behandelt wurde. Zusätzliche Testfälle, die auch Ersetzbarkeit überprüfen, wären schön gewesen.