Coordinate-Hausaufgabe: Anforderungsdefinition?

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.

Coordinate-Hausaufgabe: Anforderungsdefinition?
Hallo,

gestern in der Vorlesung war auf den Folien noch ein UML-Diagramm zur ersten Programmier-Hausaufgabe zu sehen. Leider kann ich das nicht mehr finden, weiß jemand wo das ist?
Detailliertere Angaben (was ist zu machen, wenn eine null-Referenz bei der Distanz-Berechnung übergeben wird? InvalidArgumentException?) wären echt gut.


Hallo,

die Wahlzeit-Design-Slides wurden entsprechend angepasst. Hier findest Du die Klassendiagramme.


Vielen Dank für die Antwort. Auf den Design-Slides habe ich tatsächlich nicht gesucht.


Die Anfordungen sind aber auch mit den Design-Slides eher unklar.

Was soll denn nun bei einem null-Parameter passieren?
Was bedeuten getLatitudinalDistance und getLongitudinalDistance? Wenn das in der Vorlesung erklärt wurde hab ich es wohl verpasst.
Warum ist die Rückgabe von getDistance ein “Coordinate”? Distance müsste doch eigentlich double sein?!?

2 Likes

Der Sinn der Aufgabe ist ja nicht, eine möglichst genaue Coordiante Implementierung zu erstellen, sondern Hauptaufgabe besteht ja in den Tests. Wie man z.B. null-Parameter behandelt kann man denke ich selbst entscheiden. Egal wie du dich entscheidest, du solltest es hinterher mit einem Testfall abdecken


Zumindest die Frage, warum getDistance() ein Coordinate-Objekt zurückgeben soll bleibt aber :wink:


Ich hab’s so umgesetzt, dass getDistance() einfach beide Abstände berechnet und beide Abstände als neues Coordinate-Objekt zurückliefert


Das kommt mir auch komisch vor.
Die Lösung von apollo kann ich nicht ganz nachvollziehen. Kannst du das noch mal erklären? Wenn eine Coordinate plötzlich eine Distanz sein soll, sehe ich irgendwie das Single Responsibility Prinzip verletzt.


In Pseudocode in etwa so

getDistance() := new Coordinate( getLongitudinalDistance(), getLatitudinalDistance() ) 

Coordinate wäre bei meiner Lösung einfach recht allgemein ein Tupel aus Longitude und Latitude. Dann kann man es sowohl als Ort als auch als Abstand interpretieren.

1 Like

Und woher weiß man wann man es wie interpretieren soll, wenn man ein Objekt der Klasse Coordinate bekommt?
Ferner kommen dann weitere Fragestellungen auf:
Was wäre zum Beispiel die Semantik von einer (Distance) Coordinate zu einer Coordinate?
Wie wäre der Abstand zweier Abstände definiert?

Irgendwie kann das nicht der richtige Weg sein, ich werde Herrn Prof. Riehle bitten zu diesem Thema Stellung zu nehmen.


Hallo zusamen,

die “Spezifikation” finden Sie in den Folien Wahlzeit Design; es ist wirklich nicht mehr als die eine Seite mit der Klasse Photo + Coordinate. Die Schnittstelle von Coordinate hat ein paar Beispielmethoden als Minimum an Anforderungen; mehr als diese erwarte ich nicht, es geht ja um die Tests.

Am Beispiel Nullreferenz: Denken Sie es sich so, wie Sie es fuer richtig halten. Endgueltige Aufloesung zu solchen Fragen bei Design by Contract (Sitzung 6) und Fehlerbehandlung (im Grossen) (Sitzung 12).

Es ist korrekt, dass eine Distanz ueber ein Coordinate Objekt abzubilden merkwuerdig anmutet, ist aber hier so gedacht. Sie koennen dann gern im Unterricht das ganze ansprechen und die daraus resultierende Konfusion. Warum habe ich das so gemacht? Um es einfach zu halten.

Das Ziel der Hausaufgabe ist, an einem Einfachstbeispiel ein paar JUnit-Tests zu schreiben und dieses einzuueben.

Viel Vergnuegen, und an die, denen das alles zu trivial erscheint: Es wird noch schwieriger.