Meer informatie over queue

Stappen in de Systematische Probleem Aanpak

1. Doel

Bepaal het belang van een queue-structuur:

  • Waarom: om taken of data in de volgorde van binnenkomst af te handelen volgens het FIFO-principe (First In, First Out).

2. Subdoelen

Splits het gebruik van een queue in kleinere deel­doelen:

  • Parameters/Variabelen identificeren
  • Vaststellen van de gegevens die in de queue komen.
  • Beschrijven van de bewerkingen (enqueue, dequeue, peek, count).
  • Definiëren van randvoorwaarden voor elke bewerking (bijvoorbeeld: niet dequeue als de queue leeg is).
  • Structuur en implementatie voorbereiden
  • Testten en valideren van de randvoorwaarden

Casus

In een print­systeem komen opdrachten binnen van verschillende gebruikers. Je wilt elk document precies in de volgorde van binnenkomst afdrukken. Een queue garandeert dat geen enkele printjob “opeens” vóór een eerder ingediende taak wordt verwerkt.

3. Fasen

  1. Parameters/Variabelen identificeren
    Actie: Bepaal welke gegevens je in de queue opslaat (bijv. printopdrachten).
    Resultaat: Gedefinieerde variabele zoals printQueue.
    Correctieve feedback tijdens de uitvoer: Controleer of de variabele een betekenisvolle naam heeft en dat het datatype (bijv. lijst van strings) overeenkomt met de beoogde inhoud.

  2. Waardes analyseren
    Actie: Beschrijf welke soorten waarden er in kunnen komen (bijv. bestandsnamen, berichten).
    Resultaat: Lijst van mogelijke waarden, bijvoorbeeld ["doc1.pdf", "foto.png", "rapport.docx"]. Correctieve feedback tijdens de uitvoer: Verifieer dat alle voorbeelden representatief zijn voor echte use cases en dat er geen typefouten zitten in de waardelijst.

  3. Acties identificeren
    Actie: Bepaal de bewerkingen:

    • Enqueue: toevoegen aan de achterkant
    • Dequeue: verwijderen van de voorkant
    • Peek: bekijken zonder te verwijderen
    • Count: tellen van elementen
      Resultaat: Overzicht van acties met korte omschrijving.
      Correctieve feedback tijdens de uitvoer: Controleer of alle operaties zijn opgenomen en dat de omschrijvingen duidelijk het verschil tussen verwijderen en alleen bekijken aangeven.
  4. Regels voor acties bepalen
    Actie: Specificeer voorwaarden voor elke bewerking (bijv. geen dequeue bij lege queue; peek alleen als er elementen zijn).
    Resultaat: Actieregels zoals “Voer dequeue nooit uit als Count == 0”. Correctieve feedback tijdens de uitvoer: Test scenario’s zoals een lege queue, één element en meerdere elementen om te bevestigen dat de regels correct worden gehandhaafd.

  5. Structuur en implementatie voorbereiden
    Actie: Bepaal hoe je de queue gaat modelleren in je applicatie. Resultaat: Beschrijving van de gekozen implementatie (bijv. System.Collections.Generic.Queue<T> in C#).

  6. Testen en valideren van de randvoorwaarden
    Actie: Ontwikkel tests voor alle bewerkingen en rand­gevallen (lege queue, één element, meerdere elementen).
    Resultaat: Een gevalideerde queue-implementatie die voldoet aan de functionele eisen. Correctieve feedback tijdens de uitvoer: Controleer testdekking op alle bewerkingen; vooral randgevallen zoals een volle queue (indien een maximale capaciteit is gedefinieerd).


Volgende stap: Oefeningen Queue