HRM Deel2
Deel 2: Klasse HRM
Download de klassen IHRM
, Decision
, EmployeeRequest
, ReimbursementRequest
en VacationRequest
en werk hierop verder. Maak geen wijzigingen aan deze gegeven klassen.
Merk op dat de klassen allemaal in de default package moeten zitten (=rechtstreeks in de ‘src’-map van het project in NetBeans). Dit is nodig om deze later in te kunnen dienen op het Dodona platform voor feedback door middel van copy-pasten van de hele inhoud van de klasse in het vak van de oefening op Dodona. Zorg er ook wel voor dat je ingediende code compileert, bij compilatiefouten kan geen (zinvolle) feedback gegeven worden.
- Definieer de klasse HRM als implementatie van de interface IHRM.
- Voeg de instantievariabelen toe zoals beschreven in het bovenstaande klassendiagram.
- Definieer de constructor zoals beschreven in het bovenstaande klassendiagram. Deze initialiseert de instantievariabele met de bijhorende parameter en de andere instantievariabele als een lege lijst.
- Overschrijf de methode addVacationRequest die een String en een int als parameters heeft. De methode voegt een nieuwe verlofaanvraag toe op basis van de meegegeven parameters. Indien er geen werknemer bestaat met de gegeven employeeID, wordt de volgende foutboodschap afgeprint in de console: “De werknemer bestaat niet!”. Indien voorgaande foutboodschap weergegeven werd, zal de methode niets doen.
- Overschrijf de methode addReimbursementRequest die een String, een double en nog een String als parameters heeft. De methode voegt een nieuwe aanvraag tot het terugbetalen van kosten toe op basis van de meegegeven parameters. Indien er geen werknemer bestaat met de gegeven employeeID, wordt de volgende foutboodschap afgeprint in de console: “De werknemer bestaat niet!”. Indien voorgaande foutboodschap weergegeven werd, zal de methode niets doen.
- Overschrijf de methode getEmployeeRequests die een String en twee Decision objecten als parameters heeft. De methode haalt de requests van de werknemer met de gegeven employeeID op en retourneert. Enkel de requests met de gegeven waarden voor hun beslissingen mogen teruggegeven worden. Indien er geen werknemer bestaat met de gegeven employeeID, wordt de volgende foutboodschap afgeprint in de console: “De werknemer bestaat niet!”. Indien voorgaande foutboodschap weergegeven werd, zal de methode null teruggeven.
- Overschrijf de methode preProcessRequests die geen parameters heeft. De methode verwerkt de requests die nog niet goed- of afgekeurd zijn door een manager. Voor een VacationRequest zal men kijken of de werknemer nog voldoende dagen beschikbaar heeft en voor een ReimbursementRequest gaat men na of het gevraagde bedrag nog beschikbaar is. Indien aan deze voorwaarde voldaan is, zal de PreprocessingDecision van de request gelijk gesteld worden aan Accepted. Indien dit niet het geval is NotAccepted.
- Overschrijf de methode approveRequest die twee Strings als parameters heeft. De methode registreert dat een bepaald request (gegeven de ID van de request) wordt goedgekeurd door de manager (gegeven de ID van deze manager) van de aanvragende werknemer, past ook de gegevens (i.e. budget of nrOfFreeDays) van de werknemer in kwestie aan en roept daarna de preProcessRequests-methode weer op (aangezien het aantal vrije dagen of het budget van de employee aangepast is). Indien de request niet bestaat, de manager niet bestaat, de gegeven werknemer niet de manager is van de aanvrager van de request, de request niet de ‘accepted’ status heeft als preprocessing beslissing of de request al een manager beslissing heeft, wordt de volgende foutboodschap afgeprint in de console: “De aanvraag kan niet goedgekeurd worden!”. Indien voorgaande foutboodschap weergegeven werd, zal uiteraard geen van de andere stappen van de methode uitgevoerd worden.
- Overschrijf de methode disapproveRequest die twee Strings als parameters heeft. De methode registreert dat een bepaald request (gegeven de ID van de request) wordt afgekeurd door de manager (gegeven de ID van deze manager) van de aanvragende werknemer. Indien de request niet bestaat, de manager niet bestaat, de gegeven werknemer niet de manager is van de aanvrager van de request of de request al een manager beslissing heeft, wordt de volgende foutboodschap afgeprint in de console: “De aanvraag kan niet afgekeurd worden!”. Indien voorgaande foutboodschap weergegeven werd, zal uiteraard geen van de andere stappen van de methode uitgevoerd worden.
- Overschrijf de methode toString die geen parameters heeft. De methode retourneert achtereenvolgens voor elk werknemer de goedgekeurde aanvragen, de geweigerde aanvragen en de aanvragen die nog niet werden behandeld door zijn manager. De werknemers worden alfabetisch weergegeven volgens hun employeeID. Hieronder een voorbeeld (het aantal streepjes maakt niet uit).
Let op: een request waarvan de preprocessing beslissing negatief is maar waarvoor er nog geen manager beslissing is, zal als geweigerd gerekend worden. Zelfs al zou de manager deze willen goedkeuren, is dit niet meer mogelijk.
fg68034 Frederik Gailly
----------------------
Goedgekeurde aanvragen:
Geen requests beschikbaar
Geweigerde aanvragen:
Geen requests beschikbaar
Aanvragen die nog moeten goedgekeurd worden:
Geen requests beschikbaar
gp10523 Geert Poels
----------------------
Goedgekeurde aanvragen:
request-3;Mon May 23 11:08:36 CET 2017
Geweigerde aanvragen:
Geen requests beschikbaar
Aanvragen die nog moeten goedgekeurd worden:
Geen requests beschikbaar
jc45291 Jan Claes (Manager: gp10523)
----------------------
Goedgekeurde aanvragen:
request-5;Mon Jun 06 18:13:02 CET 2017
Geweigerde aanvragen:
request-1;Tue Jan 12 23:01:58 CET 2017
request-6;Wed Aug 28 08:39:47 CET 2017
Aanvragen die nog moeten goedgekeurd worden:
Geen requests beschikbaar
sm75328 Steven Mertens (Manager: fg68034)
----------------------
Goedgekeurde aanvragen:
request-2;Fri Feb 20 21:15:19 CET 2017
Geweigerde aanvragen:
Geen requests beschikbaar
Aanvragen die nog moeten goedgekeurd worden:
request-4;Thu Jun 03 10:34:41 CET 2017
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.
- test07addVacationRequest: test de addVacationRequest-methode.
- test08addReimbursementRequest: test de addReimbursementRequest-methode.
- test09getEmployeeRequests: test de getEmployeeRequests-methode.
- test10preProcessRequests: test de preProcessRequests-methode.
- test11approveRequest: test de approveRequest-methode.
- test12disapproveRequest: test de disapproveRequest-methode.
- test13toString: test de toString-methode.
- test14toString_sysoutIpvReturn: test de toString-methode maar er worden ook oplossingen aanvaard die de gevraagde tekst naar de console uitprinten ipv teruggeven als String.