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.