Modelleeropgave: Het bedrijf CS (container shipping) vervoert containers over de wereld. Klanten kunnen lege containers huren en gevuld met goederen aanbieden voor verscheping. CS zorgt dan voor het vervoer naar de bestemming, waar de container kan worden afgehaald, geleegd en eventueel leeg worden teruggegeven. Containers staan opgeslagen op haventerreinen en worden daar aangeboden of afgehaald. Voor het vervoer worden containers geladen op schepen, die van haven naar haven varen. Containers moeten wel eens "overstappen"; ze worden gelost, blijven een tijdje staan en worden dan weer geladen om verder te worden vervoerd. a. Maak een objectmodel van de beschreven situatie, zodat vragen kunnen worden beantwoord over de behandeling van containers. Voorbeeldvragen zijn - Zijn er containers van klant XX die vóór 1-11-2005 ter verscheping zijn aangeboden en die tot en met 9-11-2005 nog niet opgeladen zijn? - Wat was de verzameling containers met bestemming Sydney van klant YY die op 9-11-2005 in le Havre zijn uitgeladen? b. Geef de bovenstaande vragen weer met behulp van predikaten. Aanpak: Fase 1: Maak een lijst van zelfstandige naamwoorden, eigenschappen en handelingen, gebaseerd op de beschrijving, analyseer en schoon op. We beginnen met de eerste 2 zinnen. Het bedrijf CS (container shipping) vervoert containers over de wereld. Klanten kunnen lege containers huren en gevuld met goederen aanbieden voor verscheping. zelfstandig nw CS bedrijf container wereld klant goed verscheping eigenschap leeg (container) gevuld (container) handeling CS vervoert container klant huurt container klant vult container met goederen klant biedt aan container ter versch. Het zn "wereld" is universeel, evenals "CS" (in de huidige context). Omdat "CS" wegvalt heeft "vervoeren" slechts één actor. Het zn "verscheping" is synoniem met de handeling "vervoeren". Omdat het verhaal over CS gaat en CS zich niet bemoeit met de inhoud van de te vervoeren containers, kiezen we ervoor de goederen en het al dan niet leeg zijn niet in het model op te nemen. Na opschoning houden we het volgende over. zelfstandig nw c(ontainer) klant eigenschap handeling klant huurt container klant biedt aan c c vervoeren We gaan verder met de volgende twee zinnen. CS zorgt dan voor het vervoer naar de bestemming, waar de container kan worden afgehaald, geleegd en eventueel leeg worden teruggegeven. Containers staan opgeslagen op haventerreinen en worden daar aangeboden of afgehaald. zelfstandig nw c(ontainer) klant eigenschap haven(terrein) bestemming handeling klant huurt c klant biedt aan c c vervoeren c vervoeren naar bestemming c aanbieden op haven klant haalt af c in haven klant leegt c klant geeft terug c c opslaan op haventerrein Het legen van containers modelleren we evenmin als het vullen. Het "aanbieden" van een container gebeurt in een haven (extra actor bij "biedt aan") en het afhalen ook. Bij het "vervoer" hoort een bestemming (bhaven). Die bestemming moet op een gegeven moment worden bekend gemaakt; we nemen aan dat dit al bij het aanbieden plaatsvindt. Het "vervoeren" is in feite wat er gebeurt tussen aanbieden en afhalen en kan dus worden verwijderd. zelfstandig nw c(ontainer) klant haven eigenschap handeling klant huurt / geeft terug c klant biedt aan c in haven met bhaven klant haalt af c in haven c opslaan op haven We maken het schema af. Voor het vervoer worden containers geladen op schepen, die van haven naar haven varen. Containers moeten wel eens "overstappen"; ze worden gelost, blijven een tijdje staan en worden dan weer geladen om verder te worden vervoerd. zelfstandig nw c(ontainer) klant haven eigenschap schip handeling klant huurt / geeft terug c klant biedt aan c in haven met bhaven klant haalt af c in haven c opslaan op haven container lossen van schip in haven container laden op schip in haven schip vaart van haven naar haven Containers worden geladen/gelost (handelingen) op/van schepen. De handeling "overstappen" wordt in de laatste zin verklaard; het bestaat uit lossen, opslaan en weer laden. Het "opslaan" kan gezien worden als de periodes tussen aanbieden/lossen en laden/afhalen, en dus is het niet nodig die apart te modelleren. zelfstandig nw c(ontainer) klant haven schip eigenschap handeling klant huurt / geeft terug c klant biedt aan c in haven met bhaven klant haalt af c in haven container lossen van schip in haven container laden op schip in haven schip vaart van haven naar haven We modelleren alle handelingen door getuige-entiteiten en komen tot het volgende model. lo C a la S c tg hu b ha ba va d K H Fase 2: Analyseer de volgordelijke samenhang van handelingen. We modelleren de lifecycle van één vaste container. Volgens het verhaal is de container initieeel in bezit van CS. De eerste handeling is huren, daarop volgen vullen, aanbieden, laden, lossen, afhalen, legen en teruggeven. Vullen en legen zijn handelingen zonder getuige. Huren voegt een klant toe, vullen goederen en aanbieden een haven en bestemming. Afhalen vindt alleen plaats als de haven en bestemming overeenkomen en verwijdert haven en bestemming. Legen verwijdert de goederen en teruggeven ontkoppelt de klant. Laden voegt een schip toe dat in dezelfde haven ligt en verwijdert de haven. Lossen verwijdert het schip en voegt de huidige haven van het schip toe. hu ba vrij Kl la Kv tg H ha S lo Uit bovenstaand plaatje volgt dat lossen volgt op laden en teruggeven/aanbieden op huren en afhalen/laden op aanbieden. De haven lo C tg la hu S va ba K H ha De "vaart" van een schip is een handeling die langere tijd kan duren (als het schip duurt het zelfs oneindig lang). We splitsen daarom de vaart uit in vertrek en aankomst. Het laden is dan gerelateerd aan een vertrek, het lossen aan een aankomst. Daarmee zijn de haven en schip van laden en lossen gegeven. Er wordt wel een constraint toegevoegd: van een bij elkaar horend laad/los paar moet het schip overeenkomen. Verder worden containers alleen geladen (en gelost) als hij is aangeboden. Daarmee komt ook de klant waarvoor geladen en gelost wordt te voorschijn. C e b tg a h la hu d ve ba K f ha ak k g in c j lo van to H nr m S Constraints: lo : . j.k .m .h.g.m : via la : ( lo : .h.e .e . j.k .nr .g.van) .g.van .e.in ha : ( lo : .h.e . f . j.k .o . f .to)