AankoopManagement Deel1

Deel 1: Klasse AankoopProces (4 punten)
Download de abstracte klasse AankoopDocument
en diens subklassen AankoopOrder
, Factuur
en GoederenOntvangen
. Zet deze in de default package (= rechtstreeks in de ‘src’-map van je NetBeans project) en werk ook hierin verder.
De klasse AankoopProces implementeert de interface Serializable en bevat de volgende variabelen:
- De klasse AankoopProces heeft een statische en finale variabele van het type
long
met waarde 2017
(naam variabele = serialVersionUID)
- Een object van de klasse AankoopOrder
(naam instantievariabele = order)
- Een object van de klasse GoederenOntvangen
(naam instantievariabele = goederenOntvangen)
- Een object van de klasse Factuur
(naam instantievariabele = factuur)
- Een String die de ID van het proces bijhoudt
(naam instantievariabele = procesID)
- Een (private) static int teller die start op
0
(naam = teller)
(0,5 punt)
De klasse AankoopProces bevat de volgende constructor en methodes:
- Een constructor met als parameter een aankooporder object. De constructor initialiseert de overeenkomstige instantievariabele met de meegegeven waarde. De constructor initialiseert ook de ID van het proces door de teller variabele met 1 te verhogen en vervolgens een ID te creëren van de vorm
PR[teller]
(bv. PR34). De overige instantievariabelen worden niet geïnitialiseerd.
- Accessor- en mutator-methodes voor de instantievariabelen.
(0,5 punt)
- Overschrijf de methode hashCode (van Object) die geen parameters heeft. De methode geeft een geheel getal terug dat gebruikt zal worden voor hash-structuren te maken. Het verwachte gedrag van dit soort methode is dat de hash code gelijk zal zijn voor objecten die gelijk zijn en ongelijk voor objecten die ongelijk zijn. De methode maakt gebruik van alle instantievariabelen.
- Overschrijf de methode equals (van Object) die een Object object als parameter heeft. De methode geeft
true
terug indien de meegegeven parameter niet-null is, een object van de klasse AankoopProces is en de instantievariabele procesID
van beide objecten dezelfde waarde heeft.
(0,5 punt)
- Een methode isAfgerond die nagaat of het aankoopproces is afgerond. Het aankoopproces is afgerond indien de instantievariabelen
order
, goederenOntvangen
en factuur
allemaal niet-null zijn. In dat geval wordt dus true
teruggegeven.
(0,5 punt)
- Een methode threeWayMatch die nagaat of enerzijds de bijgehouden product ID en anderzijds de bijgehouden hoeveelheid van de instantievariabelen
order
, goederenOntvangen
en factuur
gelijk zijn. Dus de bijgehouden product ID moet voor alle drie documenten gelijk zijn en de bijgehouden hoeveelheid ook (maar de product ID en hoeveelheid hoeven uiteraard niet gelijk te zijn aan elkaar) om true
terug te kunnen geven.
(1 punt)
- Een methode seperationOfDuties die nagaat of de uitvoerders van het AankoopOrder, GoederenOntvangen en Factuur object telkens een andere werknemer is. Dus elk van de documenten moet een andere uitvoerder hebben om
true
terug te kunnen geven.
(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).
- test04constructor: test of de constructor het gewenste effect heeft (indien van toepassing).
- test05methodsPresent: test of de verwachte methodes aanwezig zijn in de ingediende klasse en of de methode definities overeenkomen met de verwachte definities (= test geen effect!).
- test06accessorsMutators: test of de ingediende klasse de al dan niet verwachte accessor- en mutatormethodes definieert en of deze het verwachte effect hebben.
- test07hashCode: test de hashCode-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test08equals: test de equals-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test09isAfgerond: test de isAfgerond-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test10isAfgerond_nietAllemaalNull: test de isAfgerond-methode. Er worden ook oplossingen aanvaard die slechts nagaan ofdat minstens 1 van de velden niet-null is.
- test11threeWayMatch: test de threeWayMatch-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test12seperationOfDuties: test de seperationOfDuties-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test13seperationOfDuties_nietAllemaalAnders: test de seperationOfDuties-methode. Er worden ook oplossingen aanvaard die slechts nagaan ofdat minstens 1 paar van uitvoerders niet gelijk zijn.
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.