shoven schreef: ↑24 mar 2020 11:45
Ik heb even zitten kijken naar het datamodel.
Wat helpt is om uit te schrijven wat er gebeurt (in essentie de werking van Koploper/iTrain e.d.). Dan krijg je vanzelf een verhaal waarin je de objecten en klassen kunt identificeren en verwerken in je objectmodel. En dan heb je vrij snel ook je datamodel.
Ton, heb je wat meer uitleg bij je datamodel?
Het belangrijkste, ingewikkeldste proces dat ik onderken is het instellen van een Rijweg. Een trein staat langs een perron, ik druk op de knop van dat spoor, ik druk op een knop van het spoor richting Amsterdam, en er moet een Rijweg (Entiteiten begin ik met hoofdletter) gezocht worden. Daarbij moet gecheckt worden of een stuk spoor al bij een andere Rijweg hoort. Het kan zijn dat er dan een andere route is die wel werkt. Wordt er een Rijweg gevonden moeten Wissels gezet worden, een Railsecties gereserveerd worden.
Bij dit letterlijke spoorzoeken moet er gekeken worden dat er niet onnodig bochten gemaakt worden. Als je van 8b naar Amersfoort rijdt, moet je via 8a, als die vrij is, niet via 9a. Bij het opslaan van de layout moet dus genoteerd worden, welke aansluitingen rechtuit en welke via afbuigend spoor genomen worden.
Mijn datamodel is nog niet volledig. Eerste opzet.
Trein: Bevat trein gegevens. Ijking, lengte, goederen/passagier/post
Railsectie: Een stuk spoor zo klein dat het niet voor hoeft te komen dat 2 treinen er tegelijk op hoeven te rijden. Bevat aansluitgegevens, lengte,
MapElement: Bevat data om het scherm op te bouwen.
Wissel:Spreekt voor zich.
Wisselstand: Bevat de mogelijke standen van een wissel, bocht informatie, aansluitdata.
Connectie: Bevat de informatie hoe de Railsecties aan elkaar geknoopt zijn.
Rijweg: Bevat de informatie over de route die een trein moet rijden.
Wat relaties:
Trein-Railsectie: Bevat de informatie waar de trein zich bevindt.
Trein-Rijweg: Bevat de opdracht waar de trein naar toe moet.
RailSectie-Mapelement: Zorgt voor de update van het scherm als spoor gereserveerd of bezet is.
Railsectie-Connectie (2x): De verbinding informatie tussen Railsecties
Rijweg-Railsectie of Rijweg-Connectie: De informatie om een route op te slaan.
En dan zie je dat het proces wat ik beschreef nog wat mogelijkheden openlaat. Trein-Railsectie heeft een overlap met Trein-Rijweg, Maar heeft een stilstaande trein een rijweg? Dat zou weer een andere afhandeling van rijwegen vragen. Er is wel uit te komen, maar het is niet triviaal.
Maar dit helpt me wel mijn gedachten te ordenen. Door erover te schrijven zie ik waar de opties zijn, en de valkuilen. Ik heb wel eens een systeem gezien waarvan het datamodel verkeerd opgezet was en waarvan de ontwikkeling een grote ramp werd.