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 deeldoelen:
- 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 printsysteem 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
-
Parameters/Variabelen identificeren
Actie: Bepaal welke gegevens je in de queue opslaat (bijv.printopdrachten
).
Resultaat: Gedefinieerde variabele zoalsprintQueue
.
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. -
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. -
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.
-
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 alsCount == 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. -
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#). -
Testen en valideren van de randvoorwaarden
Actie: Ontwikkel tests voor alle bewerkingen en randgevallen (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