Datum: 11/27/2001 11:25:24 Von: Bewertung An: 0004444 Betreff: Review zu Runde 1 Korrektheit: 9 Verwendbarkeit: 9 Programmierstil: 9 Dokumentation: Zuallererst fällt mir auf, daß die Überprüfung, ob es sich um eine gültige Eingabe handelt, durch Vergleichen mit einem String, in dem alle möglichen Eingaben gespeichert sind, geschieht. Meines Erachtens nach ist dies bei der bei diesem Beispiel geringen Anzahl an Möglichkeiten noch praktikabel, wird aber bei mehr Möglichkeiten schon schwierig. Eine bessere Lösung wäre gewesen, jede einzelne Stelle des Eingabestrings auf den Inhalt ("R", "G" oder "B") zu überprüfen. Ähnliches gilt auch für die Nummer des Mendelschen Gesetzes: Es wird ja nur dann das erste Mendelsche Gesetz angewendet, sofern die Farben der zwei Wunderblumen Grundfarben sind, also beide Eingaben "BB", "GG" oder "RR" (und jegliche Kombination daraus) sind. D.h., man könnte einfacher auf Identität der beiden Blumenfarben überprüfen und der Variable "Mendel" einen entsprechenden Wert zuordnen. Meines Erachtens wäre es auch einfacher gewesen, die Klasse "erbgang" als Subclass von "EprogIO" zu definieren (public class erbgang extends EprogIO), weil man sich im gesamten Programm das vorangestellte EprogIO.******* erspart (z.B. "readWord();" statt "EprogIO.readWord();"). Es lassen sich Werte von mehr als zwei Wunderblumen eingeben, was die - im übrigen richtige - Berechnung des Ausgabestrings nicht beeinflusst, allerdings werden beim erneuten Starten des Programms die "überzähligen" Eingaben des vorangegangenen Starts als Eingabedaten herangezogen. Zur Verdeutlichung ein Beispiel: Das Programm wird gestartet, als Eingabe wird "BB GG RR RR" eingegeben. Das Programm ignoriert die beiden "RR"-Sätze am Schluß, führt die Berechnung richtig mit den Eingabesätzen "BB" und "GG" aus und gibt als Ergebnis "BG BG BG BG 1" aus. Ein erneuter Programmaufruf führt ohne weiterer Eingabe zu dem Ausgabesatz "RR RR RR RR 1", was ja das richtige Ergebnis für die Eingabe "RR RR" ist. Gibt man hingegen z.B. "BB GG RR FF" ein (wobei "FF" ja eine fehlerhafte Eingabe ist), reagiert das Programm im ersten Aufruf überhaupt nicht, gibt allerdings im zweiten Aufruf (wo dann ja "RR FF" als Eingabe angesehen wird) richtigerweise "FEHLERHAFTE EINGABE" aus. Eine Überprüfung, wieviele Erbanlagen von Wunderblumen eingegeben wurden, schreibt die Spezifikation zwar nicht explizit vor, stellt aber meiner Meinung nach eine sinnvolle Ergänzung dar. Positiv zu bemerken ist, daß das Programm auf eine fehlerhafte Eingabe reagiert und keine weiteren Berechnungen durchführt, wenn feststeht, daß die Eingabe falsch ist. Die öffnende Klammer { immer gleich hinter das entsprechende Statement zu schreiben (z.B. "do {") ist für mich etwas gewöhnungsbedürftig, da öffende und zugehörige schließende Klammer damit nicht auf gleicher Höhe stehen. Die zugehörige Dokumentation ist kurz und leicht verständlich gefasst.