Hausaufgabe zu CW 09: Umfang der zu erweiternden Klassen

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Hausaufgabe zu CW 09: Umfang der zu erweiternden Klassen
Hallo,

ich hätte drei Fragen zur nächsten Hausaufgabe:

  1. Für nächste Woche sollen wir unter anderem Error- + Exception-Handling für “Your Photo and related classes” implementieren. Heißt das, dass wir auch Error-/Exception-Handling für Photo.java implementieren sollen? Denn meine Foto-Klasse ist quasi leer… Auf der anderen Seite ist Photo.java schon ganz schön mächtig, weshalb die Änderungen auch ganz schön aufwendig werden könnten.

  2. Dasselbe wie bei 1. gilt dann vermutlich auch für den PhotoManager und vergleichbare Klassen, richtig?

  3. Sehe ich es richtig, dass Design by Contract quasi schon einen Teil dieser Aufgabe abdeckt? Schließlich sorgt es ja an einigen Stellen schon dafür, dass eine Exception geworfen wird. Sie wird in Oberklassen halt nicht behandelt.

1 „Gefällt mir“

Mir geht es ähnlich.

Preconditions in alte Klassen einfügen war (falls nicht schon vorhanden) gut machbar und verständlich, da habe ich jetzt aber auch nur meine Kindklassen angefasst. Mehr als null-Checks sind da dann aber auch nicht mehr sinnvoll.

Unklar ist mir dagegen das Error handling, da zB. die Koordinaten bisher überhaupt keine Verwendung haben und so auch keinen Ort für Handling. Die Photoklassen werden dagegen verwendet, sind aber in ganz schön viel fremdem Code drin.
Übrig bleibt dann nur das Werfen, da hätte ich aber gerne nochmal eine Absolution, das das auch wirklich reicht, ohne das wir explizit die Exception irgendwo fangen.


Was ich auch nicht ganz verstanden habe, ist, ob wir mit bestehenden Exceptions arbeiten sollen oder ob wir eigene Exception Klassen entwerfen sollen


Hat jemand evtl. an anderer Stelle was erfahren, was uns hier weiterhelfen könnte? Wenn ich mir die Aufgabe “Determine component boundaries[…] user interface[…]” ansehe, könnte man es auch so verstehen, dass wir letztlich Error-/Exception-Handling für das ganze Wahlzeit-Framework implementieren müssten. Denn ich weiß z.B. in der Photo-Klasse ja nicht, ob eine Methode gerade vom UI aufgerufen wurde (–> man müsste Exceptions abfangen und dem Nutzer eine Fehlermeldung anzeigen) oder nicht. Demnach müsste ich nicht nur alle Photo*-Klassen anpassen, sondern eben auch die zum UI gehörigen. Und hier wird es vermutlich wiederum einige Anpassungen mit sich ziehen, die wiederum Anpassungen mit sich ziehen, … Das war doch bestimmt nicht mit “related classes” gemeint, oder? (Ich kann mir nicht vorstellen, dass wir so ein aufwendiges Refactoring durchführen müssen.)

Evtl. verstehe ich die Aufgabenstellung ja auch komplett falsch…

Edit: Ich habe nun https://fsi.cs.fau.de/forum/thread/16809-CW-09-Homework-Due-2-2 als Grundlage genutzt. Das beantwortet mir zumindest teilweise meine Fragen. Ich hoffe, dass die Aufgabenstellung damal genauso gelautet hat wie heute.