Twee prompts bij deze proef. Met Coach krijg je hulp terwijl je de proef maakt, zonder code. Met Quoteer laat je je afgewerkte code streng verbeteren, volgens de puntenverdeling en het boeteblad.
Let op: de quoteerprompt is recent gemaakt en werd niet gebruikt bij de originele proef. De score die je ermee krijgt, zegt dus niets over de scores van toen. Had de proef geen puntenverdeling, dan is die achteraf toegevoegd.
Haventerminal
Het Suezkanaal zit vast, en dat is het moment voor de Antwerpse haven om de grootste haven van de wereld te worden. Jouw expertise werd ingeroepen om de containerterminal te vernieuwen, zodat verdachte containers sneller opgemerkt worden en we zo het drugsprobleem indijken.
Container klasse
Maak een klasse Container met:
- Autoproperties met private set:
Bedrijf(string)LaatstAangepast(DateTime)GemaaktOp(DateTime)
- Autoproperty:
Beschrijving(string) - Full property:
Gewicht(int)- Het gewicht kan nooit onder 0 of boven 100 gezet worden.
- Wordt er een foute waarde meegegeven, dan verschijnt er op het scherm “Fout gewicht. Ingesteld op 100” en wordt het gewicht 100.
- Telkens het gewicht aangepast wordt, komt er 1 dag bij
LaatstAangepast. Of de waarde geldig was of niet, maakt niet uit.
De logica: elke keer dat het gewicht van de container aangepast wordt, duurt dat een hele werkdag.
Een overloaded constructor die
Bedrijf,BeschrijvingenGewichtinstelt. Daarna zet de constructorGemaaktOpenLaatstAangepastop de huidige datum en tijd. Het gewicht instellen in de constructor telt dus niet als aanpassing.Methoden:
Ledig: zet de beschrijving van de container op “leeg” en het gewicht op 0. Het bedrijf blijft!InWerking: geeft eenTimeSpanterug: het verschil tussenLaatstAangepastenGemaaktOp.AddContainer: geeft niets terug en aanvaardt 1 parameter van het typeContainer.- Is de meegegeven container van een ander bedrijf dan de container zelf, dan verschijnt er “Containers zijn niet van zelfde bedrijf. Kan niet samenvoegen.” en stopt de methode.
- Zou de som van de gewichten van beide containers boven de 100 komen, dan verschijnt er “Kan container niet adden. Dit zou gewicht boven de 100 brengen” en stopt de methode.
- Anders wordt het gewicht van de meegegeven container opgeteld bij dat van de huidige container. De beschrijving van de huidige container wordt de huidige beschrijving gevolgd door ” en [beschrijving meegegeven container]“. Had de meegegeven container (de parameter) als beschrijving”Eten” en de huidige container “Water”, dan wordt de beschrijving van de huidige container “Water en Eten”. Daarna wordt de meegegeven container leeggemaakt met de methode
Ledig.
Scanner klasse
Deze klasse heeft één static methode ScanContainer. De methode aanvaardt 1 Container-object als parameter en geeft een string terug.
De methode stelt een tekstueel rapport op van de meegegeven container en geeft dat als string terug. Het rapport ziet er zo uit:
---CONTAINERREPORT [BEDRIJF]---
Lading:[BESCHRIJVING]
Gewicht lading=[GEWICHT]
----------------
- De waarden tussen vierkante haken worden vervangen door de properties van de container. Voor de twee middelste lijnen staat een tab.
- Het bedrijf verschijnt in allcaps (volledig in hoofdletters).
Heeft de container 5 of meer dagen aanpassingen achter de rug (dat zie je met InWerking), dan staat er voor de laatste lijn nog een extra zin:
*****Deze container heeft verdacht veel gewichtsveranderingen ondergaan
Werking klassen
Schrijf een korte applicatie die het volgende doet:
- Maak 2 containers van hetzelfde bedrijf, “Tim NV”. De eerste container bevat “Graan”, de andere “Water”. Elke container weegt 30.
- Voeg de 2e container (met water) toe aan de eerste container met de methode
AddContainer. - Maak een loop die 10 keer het volgende doet:
- Het gewicht van de eerste container stijgt met 10.
- Het rapport van de eerste container verschijnt op het scherm, met de methode
ScanContainervan de klasseScanner.
Voorbeeld uitvoer
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=70
----------------
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=80
----------------
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=90
----------------
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=100
*****Deze container heeft verdacht veel gewichtsveranderingen ondergaan
----------------
Fout gewicht. Ingesteld op 100
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=100
*****Deze container heeft verdacht veel gewichtsveranderingen ondergaan
----------------
Fout gewicht. Ingesteld op 100
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=100
*****Deze container heeft verdacht veel gewichtsveranderingen ondergaan
----------------
Fout gewicht. Ingesteld op 100
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=100
*****Deze container heeft verdacht veel gewichtsveranderingen ondergaan
----------------
Fout gewicht. Ingesteld op 100
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=100
*****Deze container heeft verdacht veel gewichtsveranderingen ondergaan
----------------
Fout gewicht. Ingesteld op 100
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=100
*****Deze container heeft verdacht veel gewichtsveranderingen ondergaan
----------------
Fout gewicht. Ingesteld op 100
---CONTAINERREPORT TIM NV---
Lading:Graan en Water
Gewicht lading=100
*****Deze container heeft verdacht veel gewichtsveranderingen ondergaan
----------------
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.