FondsAnalyse Deel1

Deel 1: Klasse Fonds
Download de klassen FondsException
, FondsSnap
, PercentageMetLabel
en TimeStamp
, de interface StatistischeCategorie
en de enumerations Munteenheid
, Regio
en Sector
. Zet deze in de default package (= rechtstreeks in de ‘src’-map van je NetBeans project) en werk ook hierin verder.
De klasse Fonds implementeert de interfaces Comparable<…> en Serializable en bevat de volgende variabelen:
- De klasse Fonds heeft een statische en finale variabele van het type
long
met waarde 2017
.
(naam variabele = serialVersionUID)
- Een fonds wordt geïdentificeerd aan de hand van een officiële ISIN code in tekstuele vorm.
(naam instantievariabele = isin)
- Een fonds heeft een naam.
(naam instantievariabele = naam)
- Een fonds staat genoteerd op een bepaalde markt. Deze wordt bijgehouden in tekstuele vorm aan de hand van de naam van de markt.
(naam instantievariabele = markt)
- Elk fonds staat genoteerd in een bepaalde valuta. Deze wordt bijgehouden als object van de enum Munteenheid.
(naam instantievariabele = munteenheid)
- Een fonds kan actief zijn in verschillende sectoren, met de totale activiteiten van het fonds percentueel verdeelt over elke van deze sectoren. Dit is een collectie van objecten van de klasse PercentageMetLabel. Er is geen bovengrens voor het aantal sectoren die bijgehouden kunnen worden en het moet mogelijk zijn om dynamisch nog extra sectoren toe te voegen aan de instantievariabele of ze te verwijderen (hiervoor hoef je echter geen methodes te voorzien). Zorg ervoor dat er geen dubbels in de collectie kunnen zitten. De objecten in de collectie zijn niet opgeslagen in een bepaalde volgorde.
(naam instantievariabele = sectoren)
- Een fonds kan actief zijn in verschillende regio’s, met de totale activiteiten van het fonds percentueel verdeelt over elke van deze regio’s. Dit is een collectie van objecten van de klasse PercentageMetLabel. Er is geen bovengrens voor het aantal regio’s die bijgehouden kunnen worden en het moet mogelijk zijn om dynamisch nog extra regio’s toe te voegen aan de instantievariabele of ze te verwijderen (hiervoor hoef je echter geen methodes te voorzien). Zorg ervoor dat er geen dubbels in de collectie kunnen zitten. De objecten in de collectie zijn niet opgeslagen in een bepaalde volgorde.
(naam instantievariabele = regios)
- Het verloop van de prijs van een fonds wordt bijgehouden in een collectie met objecten van het type FondsSnap. Elke FondsSnap slaat de prijs van een fonds op, op een bepaald tijdstip. Er is geen bovengrens voor het aantal FondsSnap objecten die bijgehouden kunnen worden en het moet mogelijk zijn om dynamisch nog extra FondsSnap 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).
(naam instantievariabele = snaps)
(0,5 punt)
De klasse Fonds bevat de volgende constructor en methodes:
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.
- test07equals: test de equals-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test08compareTo: test de compareTo-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test09compareTo_reverseSort: test de compareTo-methode, maar aanvaart ook oplossingen die consequent in de omgekeerde volgorde sorteren.
- test10compareTo_metNaamIpvMarkt: test de compareTo-methode, maar aanvaart ook oplossingen waarbij foutief de instantievariabele ‘naam’ gebruikt werd i.p.v. de instantievariabele ‘markt’.
- test11compareTo_metNaamIpvMarkt_reverseSort: test de compareTo-methode, maar aanvaart ook oplossingen die consequent in de omgekeerde volgorde sorteren en waarbij foutief de instantievariabele ‘naam’ gebruikt werd i.p.v. de instantievariabele ‘markt’.
- test12voegSnapToe: test de voegSnapToe-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test13voegSnapToe_enkelExceptions: test de voegSnapToe-methode. Er wordt enkel getest op scenario’s waarin exceptions verwacht worden.
- test14voegSnapToe_zonderExceptions: test de voegSnapToe-methode. Er worden geen scenario’s getest waarin exceptions verwacht worden. Indien de test succesvol is, scoor je al minimaal 0,75/1 voor deze methode.
- test15isGeldigFonds: test de isGeldigFonds-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test16isGeldigFonds_enkelRegios: test de isGeldigFonds-methode. Er wordt enkel gekeken naar fondsen met geldige of ongeldige regio’s.
- test17isGeldigFonds_enkelSectoren: test de isGeldigFonds-methode. Er wordt enkel gekeken naar fondsen met geldige of ongeldige sectoren.
- test18getSnapVan: test de getSnapVan-methode. Indien de test succesvol is, scoor je de maximale punten voor deze methode.
- test19getSnapVan_enkelExceptionsEnkelAchter: test de getSnapVan-methode. Voor de exception scenario’s worden enkel die scenario’s getest waarbij de gegeven timestamp na de laatste snap van de fondsen valt. Gevallen waarin er geen exception gegooid horen te worden zullen niet getest worden (dus wordt niet gekeken naar het teruggegeven object of effect), maar er wordt wel nagegaan of er in deze gevallen ook niet foutief een exception gegooid wordt. Indien de test succesvol is, scoor je al minimaal 0,25/2 voor deze methode.
- test20getSnapVan_metExceptionsEnkelVoor: test de getSnapVan-methode. Voor de exception scenario’s worden enkel die scenario’s getest waarbij de gegeven timestamp voor de eerste snap voor de fondsen valt. Gevallen waarin er geen exception gegooid horen te worden zullen niet getest worden (dus wordt niet gekeken naar het teruggegeven object of effect), maar er wordt wel nagegaan of er in deze gevallen ook niet foutief een exception gegooid wordt. Indien de test succesvol is, scoor je al minimaal 0,25/2 voor deze methode.
- test21getSnapVan_zonderExceptions_metInterpolatie: test de getSnapVan-methode. Er worden geen scenario’s getest waarin exceptions verwacht worden. Indien de test succesvol is, scoor je al minimaal 1,5/2 voor deze methode.
- test22getSnapVan_zonderExceptions_zonderInterpolatie: test de getSnapVan-methode. Er worden geen scenario’s getest waarin exceptions verwacht worden of interpolatie nodig zou zijn. Indien de test succesvol is, scoor je al minimaal 0,5/2 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.