Zie Scherp - Oefeningen
Handboek Zie Scherp Scherper 2e editieThe Corona filesHandboek backupOefeningen backup
  • Welkom
  • Oefeningen H1 tot en met H5
    • Oefeningen H1
    • Oefeningen H2
    • Oefeningen H3
    • Oefeningen H4
    • Oefeningen H5
    • Gecombineerde oefeningen
      • Opgave 1
      • Opgave 2
      • Opgave 3
      • Opgave 4
      • Opgave 5
  • Oefeningen H6 tot en met H8
    • Oefeningen H6
      • Week 1
      • Week 2
    • Oefeningen H7
      • Week 1
      • Week 2
    • Oefeningen H8
      • Week 1
      • Week 2
    • Voorbeeld vaardigheidsproeven
      • Opgave 1 (2022)
      • Opgave 2 (2019)
      • Opgave 3 (2019)
      • Opgave 4 (2020)
      • Opgave 5 (2020)
      • Opgave 6 (2021)
      • Opgave 7 (2022)
      • Opgave 8 (2022)
      • Opgave 9 (2023)
      • Opgave 10 (2024)
      • Opgave 11 (2024)
      • Opgave 12 (2025)
    • Gecombineerde opgaven
      • Console Matrix
      • Unicode filmpjes maken met loops
      • Unicode filmpjes maken met methoden
      • Music Maestro
      • Fun with methods: een verhaalgenerator
      • Tekst-gebaseerd Maze game
      • Conway game of life
      • How to make your console app look cool
  • Oefeningen H9 tot en met H12
    • Oefeningen H9
    • Oefeningen H10
    • Oefeningen H11
    • Oefeningen H12
    • Gecombineerde oefeningen
      • Opgave 1
      • Opgave 2
      • Opgave 3
      • Opgave 4
      • Opgave 5
  • Oefeningen H13 tot en met H18
    • Oefeningen H13
    • Oefeningen H14
    • Oefeningen H15
    • Oefeningen H16
    • Oefeningen H17
    • Oefeningen H18
    • Voorbeeld vaardigheidsproeven
      • Opgave 1 (2019)
      • Opgave 2 (2019)
      • Opgave 3 (2020)
      • Opgave 4 (2021)
      • Opgave 5 (2021)
      • Opgave 6 (2022)
      • Opgave 7 (2022)
      • Opgave 8 (2023)
      • Opgave 9 (2024)
    • Gecombineerde oefeningen
      • OO Textbased Game
      • Map Maker
      • Mapmaker & WPF
      • Magic The Gathering API
      • C# Game remakes
Powered by GitBook
On this page
  • Inleiding
  • Basisklassen
  • Vak
  • Lector
  • Rooster
  • Specialisatieklassen
  • LaboVak
  • HalfTijdseLector
  • Hoofdprogramma
  • WeekRooster

Was this helpful?

  1. Oefeningen H13 tot en met H18
  2. Voorbeeld vaardigheidsproeven

Opgave 7 (2022)

Volgende opgave was de vaardigheidsproefopdracht voor het inhaalexamen van dit vak (OOP) in augustus 2022

Inleiding

Na vele jaren vloeken op de roosters, heeft de firma "Roosteren-maar" eindelijk besloten hun roostersoftware aan te passen. Aan jou deze taak om een deftig roosterprogramma te schrijven. Veel succes gewenst!

Basisklassen

De applicatie bestaat vooreerst uit een aantal elementaire klassen die gebruikt zullen worden om een dagrooster op te stellen.

Vak

Een vak heeft een titel (type string), een duur (int) en een toegewezen lector (type Lector, zie verder). Voorzie de nodige properties hiervoor, wetende dat: a) de duur enkel 1 of 2 uur kan zijn, niets anders. Controleer hier op. b) de titel standaard "Onbekend" is.

De klasse override ToString en toont een object als volgt: Titel - Lector (bijvoorbeeld: OOP - Jansens).

Standaard heeft een nieuw gemaakt Vak-object een Lector-object met als naam "Nog Toe te wijzen``.

Lector

Een lector heeft een naam (string) en een maximaal aantal uur (maxUur, type int) dat de persoon les kan geven op een week. De waarde van maxUur is altijd 6. Voorzie dit via een readonly property.

Rooster

Deze klasse heeft een private lijst van Vakken die standaard leeg is. Deze lijst stelt de dagrooster voor en bevat alle vakken van de dag.

De klasse heeft een property VrijeUren: deze geeft een int terug en bevat de totale som van alle duren van de vakken in de lijst. Als er dus 2 vakken in de lijst staan, 1 van 1 uur duur, de andere van 2uur duur, dan zal deze property 3 teruggeven (1+2).

De klasse heeft voorts volgende methoden:

a) ToonRooster: deze methode zal ieder vak in de lijst via ToString op het scherm onder elkaar tonen. Indien een vak 2uur duurt dan zal het vak 2x onder elkaar getoond worden. Voorbeeld output:

OOP -Jansens
Programming Principles - DuBru
Programming Principles - DuBru
Java - Gates

b) VoegVakToe: deze methode aanvaardt een Vak-object. Dit object wordt aan de lijst toegevoegd indien dat kan. Een rooster kan nooit meer dan 8uur totale duur bevatten (gebruik VrijeUren hiervoor). Als je dus een vak van 2uur probeert probeert toe te voegen terwijl de roosterlijst reeds 7uur bevat, dan zal dit niet lukken en wordt er een RoosterException teruggegooid (maak deze Exception klasse zelf aan).

c) VerbeterRooster: wanneer deze methode wordt aangeroepen dan zal de lijst met vakken gesorteerd worden volgens 1° hun naam alfabetisch 2° hun duur (lange vakken eerst).

d) WijsLectorToe : deze methode aanvaart een index x (int) en een Lector object. De methode zal de meegegeven lector toewijzen (en de bestaande overschrijven) aan het vak in lijst met de index "x" die je als parameter hebt meegeven. Indien er geen vak bestaat met die index dan verschijnt er een foutboodschap.

Specialisatieklassen

LaboVak

LaboVak is een Vak. Deze zal als ToString aangeroepen wordt vooraan de titel nog "(labo)" toevoegen. Bijvoorbeeld: (labo) OOP - Jansens.

Deze heeft een constructor waar je een Vak-object aan kan meegeven. De informatie van dit object wordt gebruikt om het LaboVak in te stellen (je neemt dus de duur, lector en titel over uit het object en wijst dit toe aan het huidige LaboVak-object).

Een labovak kan ook 3uur duren en is dus niet beperkt tot 1 of 2 uur duur.

Voeg voorts aan de klasse Rooster een nieuwe methode ToonLabos toe. Deze zal net als ToonRooster het rooster visualiseren, maar enkel voor vakken van het type LaboVak.

HalfTijdseLector

Een halftijdse lector kan maar de helft van een gewone lector aan maximale uren ingeroosterd worden.

Hoofdprogramma

In het hoofdprogramma wordt een lijst van 3 lectoren aangemaakt (kies zelf de namen), waarvan 1 een halftijdselector is.

Maak een applicatie die bovenstaande klassen gebruikt door aan de gebruiker een menu aan te bieden met volgende items (bepaal zelf hoe je de input van de gebruiker gaat verwerken):

  • Toon rooster: de huidige rooster wordt op het scherm getoond.

  • Voeg vak toe: de gebruiker dient vervolgens de naam van het vak te geven, de duur, en welke lector (voor de lector geeft hij gewoon de index in, 0, 1 of 2 en gebruik je vervolgens de lector in de lijst die je aanmaakte aan de start van het programma). Indien de gebruiker bij duur 3 ingeeft dan wordt dit vak automatisch een labovak.

  • Verbeter rooster: dit zal de VerbeterRooster methode aanroepen.

  • Toon labo's: Enkel de LaboVak-objecten in het rooster worden op het scherm getoond.

WeekRooster

Maak een klasse WeekRooster. Deze klasse heeft 5 lijsten van het type Vak, 1 voor iedere weekdag. De klasse heeft een default constructor en zal een random rooster aanmaken door de 5 week-lijsten te vullen met telkens 4 willekeurige Vak-objecten (20% kans op een LaboVak).

De klasse heeft volgende methode:

  • Toon rooster: deze zal de rooster per dag onder elkaar op het scherm tonen en voor iedere lijst de dag tonen.

Voeg aan het hoofdmenu de optie Toon weekrooster. Deze zorgt ervoor dat een WeekRooster object wordt aangemaakt dat vervolgens op het scherm wordt getoond.

PreviousOpgave 6 (2022)NextOpgave 8 (2023)

Last updated 7 months ago

Was this helpful?