Guten Tag,
ich bin dabei einen gemeinsamen ID-Raum für zwei Klassen zu implementieren, was mir leider nicht so leicht fällt.
Hier ist meine grobe Klassenhierarchie:
Jedoch teilen sich Engine und TrainSet ihren ID-Raum. Diese ID setzt sich aus der Baureihe und dem Namen der Lokomotive oder des Triebzugs zusammen:
Beachtet auch, dass ich später relativ einfach an die ID rankommen muss, z. B. beim Erstellen einer Lokomotive (der Benutzer gibt Baureihe und Name an und es muss überprüft werden, ob diese ID bereits existiert).
Es wäre deutlich einfacher lediglich eine Klasse für Lokomotiven und Triebzüge zu erstellen, allerdings entspricht dies nicht mehr der OOP und schön ist dies sicher auch nicht.
Meine Ideen bisher:
Die vom Benutzer gespeicherten Lokomotiven und Triebzüge werden in meinem Register abgelegt:
Die eindeutige ID für Wagons (Coaches) zu realisieren war vergleichsweise einfach (TreeMap<Integer, Coach>).
Kann mir jemand weiterhelfen? Konkreter Code wäre super!
ich bin dabei einen gemeinsamen ID-Raum für zwei Klassen zu implementieren, was mir leider nicht so leicht fällt.
Hier ist meine grobe Klassenhierarchie:
- RollingStock (Rollmaterial)
- Coach (Wagon)
- ...
- Engine (Lokomotive)
- SteamEngine
- DieselEngine
- ...
- TrainSet (Triebzug)
- Coach (Wagon)
Jedoch teilen sich Engine und TrainSet ihren ID-Raum. Diese ID setzt sich aus der Baureihe und dem Namen der Lokomotive oder des Triebzugs zusammen:
<baureihe>-<name>
Beachtet auch, dass ich später relativ einfach an die ID rankommen muss, z. B. beim Erstellen einer Lokomotive (der Benutzer gibt Baureihe und Name an und es muss überprüft werden, ob diese ID bereits existiert).
Es wäre deutlich einfacher lediglich eine Klasse für Lokomotiven und Triebzüge zu erstellen, allerdings entspricht dies nicht mehr der OOP und schön ist dies sicher auch nicht.
Meine Ideen bisher:
- Eine Klasse (z. B. "SharedIdSpace"), die sich irgendwie darum kümmert.
- Beide Klassen zu einer verschmelzen (bad practice)
Die vom Benutzer gespeicherten Lokomotiven und Triebzüge werden in meinem Register abgelegt:
Code:
private List<Engine> engines;
private List<TrainSet> trainSets;
public MyClass()
this.engines = new ArrayList<>();
this.trainSets = new ArrayList<>();
}
Die eindeutige ID für Wagons (Coaches) zu realisieren war vergleichsweise einfach (TreeMap<Integer, Coach>).
Kann mir jemand weiterhelfen? Konkreter Code wäre super!