Hinweise zur Übung 6 (SWE 1)
-
Das Beispiel (House.java, Person.java, HouseTest.java) ist nur in Ansätzen
als eine Lösung für die Aufgabe 1 zu sehen. Wir erwarten
-
Bessere Kommentierung
-
Ausführlichere Tests
-
und natuerlich auch eine Lösungsidee
Wir gehen davon aus, dass es keinem einfällt dieses Beispiel einfach
nur zu einer Lösung für Aufgabe 1 auszubauen ;-)
-
Die Folien enthalten englische Variablen-(, ...)-namen und deutsche Kommentare.
Es sei nochmals darauf hingewiesen, dass soetwas bei Übungen noch
akzeptiert wird.
Sind jedoch die Kommentare, bzw. die Variablen-(, ...)-namen buntgemischt
einmal deutsch und einmal englisch, so gibt es Punkteabzüge. Soll
heissen: Ist ein Kommentar auf deutsch so sind alle Kommentare auf deutsch
zu schreiben, ist ein Kommentar auf englisch so sind alle Kommentare auf
englisch zu schreiben. Dasselbe gilt unabhängig von den Kommentaren
fuer Variablen, Methoden, ... .
-
"nichttrivial" bedeutet "nicht einfach". Soll heissen, dass man sich nicht
scheuen sollte (vorwiegend) "komplexere" Berechnungen in den einzelnen
Methoden zu implementieren (Es ist allerdings zulässig auch einmal
eine get...-Methode zu implementieren).
Und um keine Missverständnisse aufkommen zu lassen: "Klassen,
Attribute und Methoden selbst aussuchen" bedeutet nicht, dass man irgendwas
sinnloses zusammenschustert. Im Gegenteil, bitte darauf achten, dass das
Modell auch ein Abbild in der Realität hat und die Methoden (im weiteren
Sinne) etwas sinnvolles machen/berechnen. Es ist hingegen nicht notwendig
ein "Objekt der realen Welt" zu 100 % nachzubilden. Es genügt ein
Teil davon (mind. 3 Klassen, 3 Attribute, ...).
-
Aufgabe 1+3:
Es sei nochmals darauf hingewiesen, dass eine Lösungsidee und
mehrere (sinnvolle!!!!) Testfälle zur Abgabe der
Programme dazugehören (siehe auch allgemeine
Übungshinweise). Fehlen Testfälle, oder sind sie unvollständig,
so wird das Beispiel nicht gewertet. Fehlt die Lösungsidee, gibt es
Punkteabzüge.
Bei den Beispielen sind mehrere (einfache) Algorithmen zu implementieren.
Es genügt als Lösungsidee, die einzelnen Algorithmen (kurz) zu
beschreiben (je nach Komplexität des Algorithmus - Was wird wie gemacht?).
-
Wenn Sie eine Klasse von der Klasse 'Basic' ableiten, so ist es in dieser
Klasse möglich die read... und write... Methoden (wie gehabt) zu benutzen.
D.h. statt
public class House { ...
schreibt man einfach
public class House extends Basic { ...
und man kann in allen Methoden der Klasse Basic die Lese- und Schreibroutinen
(read..., write...) verwenden. Ansonsten gibt es Fehlermeldungen.
-
Zur Lösungsidee: Was soll dort alles drinstehen?
Siehe allgemeine Übungshinweise
mit einigen Tips dazu.
-
Bei der Aufgabe 3 sind einige Methoden vorgegeben. Bitte diese Methoden
(Name + Rueckgabewert + Parameter) nicht ändern. Jetzt nicht und auch
in allen folgenden Übungen nicht.
Schnittstellen von Klassen, Methoden, ... dienen üblicherweise
der Kommunikation mit anderen Komponenten, deshalb sind vorgegebene Schnittstellenänderungen
(in der Praxis) immer mit Vorsicht zu geniessen. Da diese anderen "Komponenten"
derzeit die Übungsleiter und die Tutoren sind und wir die vorgegebenen
Schnittstellen erwarten, sind wir über Änderungen nicht sehr
erfreut.
Es ist aber nichts dagegen einzuwenden weitere Methoden zu implementieren,
sofern man welche verwenden möchte. Bei späteren Übungen
müssen solche Methoden dann eine eingeschränkte Sichtbarkeit
haben, bis dahin einfach als "normale" Methoden - wie in den Übungen
gelernt - implementieren.
-
Aufgabe 1:
Attribute, auf die in den einzelnen Methoden zugegriffen wird, müssen
natürlich in den einzelnen Klassen tatsächlich vorkommen (inkl.
passendem Typ). Ansonsten lassen sich die jeweiligen Methoden gar nicht
übersetzen (d.h. javac gibt entsprechende Fehler aus).
-
Aufgabe 3:
Unter Punkt c) steht "[...] (Welchen Typ müssen die Variablen
head
und list haben?) [...]", es soll natürlich heissen "[...] (Welchen
Typ müssen die Variablen head und next haben?) [...]"
-
Aufgabe 1, 2 und 3:
Die Eingabewerte zum Testen der Methoden kann entweder statisch (im
Programmcode des Testprogramms) geschehen, oder man schreibt das Testprogramm
so, dass von der Kommandozeile Werte eingelesen und für die Tests
herangezogen werden.