ParetoAnalyse Deel4
Het Pareto-principe, in de volksmond ook wel de 80-20-regel genoemd, is een economische regel die opgesteld werd door Vilfredo Pareto in 1906. Hij stelde vast dat 80% van de bezittingen in Italië in handen was van 20% van de Italiaanse bevolking. Een Pareto-analyse kan gebruikt worden voor het analyseren van de impact van een aantal problemen of kwesties. Het laat toe om te bepalen welke problemen of kwesties de grootste prioriteit hebben.

Deel 4: Klasse ProcesKwestieRegister (3 punten)
- Definieer de klasse ProcesKwestieRegister.
- Voeg een instantievariabele register toe die een collectie van ProcesKwestie objecten bijhoudt. Er is geen bovengrens voor het aantal ProcesKwestie objecten die bijgehouden kunnen worden en het moet mogelijk zijn om dynamisch nog extra ProcesKwestie objecten toe te voegen aan de instantievariabele of ze te verwijderen (hiervoor hoef je echter geen extra methodes te voorzien). Zorg ervoor dat de objecten in de collectie in een bepaalde volgorde bijgehouden worden (dus dat ze een index hebben).
- Voeg een constructor toe met als parameter een File object. De constructor initialiseert de instantievariabele als lege collectie en roept dan de leesProcesKwesties-methode op met het meegegeven bestand. Nadien geeft de methode een boodschap weer in de console van de vorm: “[het aantal ingeladen proceskwesties] proces kwesties ingeladen!”. De placeholder wordt vervangen door het aantal ProcesKwestie objecten die ingeladen zijn door de leesProcesKwesties-methode.
(1 punt)
- Voeg een methode leesProcesKwesties toe met als parameter een File object. Dit File object verwijst naar een txt bestand waarin proceskwesties worden weergegeven. De methode vult het registeren door elke kwestie 1 voor te parsen en vervolgens toe te voegen. Let op: het is mogelijk dat er reeds proceskwesties in het register waren opgenomen. Indien er iets fout loopt bij het inlezen wordt volgende boodschap uitgeprint in de console voordat 0 teruggegeven wordt: “Het bestand kan niet ingelezen worden!”. Het tekst bestand
proceskwesties.txt
bevat data over 13 proceskwesties en kan je dus gebruiken om je methode te testen (maar de methode moet uiteraard ook werken voor bestanden met meer of minder proces kwesties!).
(1 punt)
- Voeg een methode setPrioriteitenProces toe met als parameter een String. De meegegeven String stelt een proces ID voor. De methode zal eerst een Pareto-analyse uitvoeren op de beschikbare proces kwesties met de gegeven proces ID. De proces kwesties (van het proces met de gegeven ID) die niet worden geselecteerd door de Pareto-analyse krijgen als prioriteit 0. De proces kwesties die als eerste werd geselecteerd door de Pareto-analyse krijgt prioriteit 1, als tweede de prioriteit 2, enzovoort… Indien er geen proces kwesties beschikbaar zijn met de meegegeven proces ID, zal een IllegalArgumentException gegooid worden met de volgende boodschap: “Er zijn geen proces kwesties voor [de meegegeven procesID]!”. De placeholder zal vervangen worden door de meegegeven proces ID.
(1 punt)
Hierbij nog wat uitleg over de Dodona-testen voor deze oefening:
- test00objectConcept: test of de ingediende klasse de verwachte de klasse definitie heeft (interface/abstracte klasse/klasse/enum/…).
- test01inheritance: test of de ingediende klasse de verwachte superklasse heeft en de verwachte interfaces implementeert.
- test02variables_presence: test of de ingediende klasse de verwachte instantievariabelen en statische variabelen definieert.
- test03variables_staticInitialValue: test of de statische variabelen van de klasse geinitialiseerd worden met de verwachte waarde (indien van toepassing).
- test04constructorPresence: test of de ingediende klasse de verwachte constructor(en) definieert (= test geen effect!) (indien van toepassing).
- test05constructor: test of de constructor het gewenste effect heeft (indien van toepassing).
- test06constructor_zonderConsole: test of de constructor van de ingediende klasse het verwachte effect heeft, maar aanvaart ook oplossingen waarbij niets of iets fout uitgeprint wordt in de console.
- test07methodsPresent: test of de verwachte methodes aanwezig zijn in de ingediende klasse en of de methode definities overeenkomen met de verwachte definities (= test geen effect!).
- test08accessorsMutators: test of de ingediende klasse de al dan niet verwachte accessor- en mutatormethodes definieert en of deze het verwachte effect hebben.
- test09leesProcesKwesties: test de leesProcesKwesties-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test10leesProcesKwesties_zonderToevoegen: test de leesProcesKwesties-methode. Er worden ook oplossingen aanvaard die de ProcesKwestie objecten, die voor het uitvoeren van de methode al bijgehouden werden, overschrijven.
- test11setPrioriteitenProces: test de setPrioriteitenProces-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
Let op:
- Bij de beoordeling van het examen wordt niet enkel naar de resultaten van de tests gezien. Het is niet omdat een bepaalde test niet succesvol is, dat er automatisch punten afgetrokken worden. Bij het verbeteren wordt rekening gehouden met de resultaten van de testen, maar de beoordeling is nog altijd de code zelf (niet enkel het resultaat).
- Indien er niets over punten bij een test staat, zijn de resultaten louter indicatief. De resultaten van deze testen worden bij de beoordeling meegenomen, maar staan dus niet rechtstreeks voor een bepaald aantal punten.