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.
Tip

De logica: elke keer dat het gewicht van de container aangepast wordt, duurt dat een hele werkdag.

  • Een overloaded constructor die Bedrijf, Beschrijving en Gewicht instelt. Daarna zet de constructor GemaaktOp en LaatstAangepast op 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 een TimeSpan terug: het verschil tussen LaatstAangepast en GemaaktOp.
    • AddContainer: geeft niets terug en aanvaardt 1 parameter van het type Container.
      • 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 ScanContainer van de klasse Scanner.

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.