Klassen Hilfe bei Implementierung

benutzernameX

Neues Mitglied
Hallo,

Meine "Autoverwaltung" benötigt eine Verbindung zwischen den Klassen Auto und Besitzer.
Wobei ein Besitzer ein oder mehrere Autos besitzen kann und ein Auto genau einen Besitzer hat.
Desweiteren soll jedes Auto eine eindeutige ID besitzen. Das Ganze möchte ich dann auch noch speichern bzw. einlesen können (welche Implementierung wäre dafür am Sinnvollsten)?

Als Erstes würde mir einleuchten, der Klasse Besitzer ein HashSet von Autos hinzuzufügen. Hierbei müsste man beim Hinzufügen eines Autos auch die Autos der anderen Besitzer beachten.
Oder wäre es vielleicht besser eine ArrayList im Besitzer zu verwenden und ein statisches HashSet in der Auto-Klasse, um die Eindeutigkeit zu überprüfen?
Oder aber den Besitzer der Auto-Klasse hinzufügen + statisches HashSet für die Eindeutigkeit?

Vielen Dank im Voraus.
 
Hallo,

ersteinmal willkommen hier im Forum.

Was du beschreibst ist eine klassische 1 zu n Beziehung:
Ein Besitzer hat n Autos, ein Auto hat einen Besitzer.
Also hat der Besitzer eine Liste von Autos.
Ob du da jetzt ein HashSet, eine ArrayList oder eine LinkedList machst ist für diese Relation eigentlich egal.
Aber du möchtest vermeiden, dass ein Auto in den Listen mehrerer Besitzer ladet, oder?

Dazu ersteinmal die grundsätzliche Frage, wie möchtest du das speichern?
In einer Datenbank? In einer Datei (csv, excel, txt)?
Wenn Datenbank, dann würde ich dir ein Persistenz-Framework mit OR-Mapping wie Hibernate empfehlen.
Da ergibt sich die Eindeutigkeit und konsitenz durch ID´s und die Relation der Tabellen.

Ansonsten kannst du natürlich dem Auto auch ein Attribut "Besitzer" geben und damit eine bidirektionale Relation schaffen.
Damit kannst du dann auch gewährleisten, dass jedes Auto nur einen Besitzer hat.

Ein statisches HashSet würde grundsätzlich auch funktionieren, aber das ist meiner Meinung nach nicht schön.

Ich hoffe ich konnte dir ein wenig helfen 🙂

Vg,
EasyEagle
 
Wenn Datenbank, dann würde ich dir ein Persistenz-Framework mit OR-Mapping wie Hibernate empfehlen.
Da ergibt sich die Eindeutigkeit und konsitenz durch ID´s und die Relation der Tabellen.

..aber auch nur, sobald man versucht die Daten zu persistieren. Zwischendurch kann man (in detached-Objekte) durchaus ne Menge Müll schreiben 🙂
 
Hallo,

Vielen Dank für eure Antworten!

Ein Auto mehreren Besitzern hinzuzufügen, sollte eigentlich nicht möglich sein.
Denn wenn ein Auto hinzugefügt wird und die id des Autos eindeutig ist (was noch zu prüfen wäre), kann es dieses Auto ja noch nicht geben. Änderung des Besitzers werde ich nicht zulassen.

Ist unter diesen Umständen eine bidirektionale Relation überhaupt nötig?
Bzw. wäre das statische HashSet doch besser? 🙂

Speichern möchte ich die Objekte in CSV,XML..., dies sollte kein Problem darstellen oder?
 
@stg: das mit der Persitierung ist natürlich richtig 🙂
@benutzernameX: eine bidirektionale Relation ist nicht nötig. Ich schließe mich stg an, dass das Attribut "Besitzer" bei der Klasse Auto für eine Eindeutigkeit ausreicht.
Speichern in CSV oder XML ist kein Problem.

Viel Erfolg
 

Neue Themen


Zurück
Oben