MatchAnalysis Deel4
Een graaf is een datastructuur dat heel veel wordt gebruikt in de computerwetenschappen. Een graaf bestaat uit een verzameling van knopen (i.e., nodes in het Engels) waarvan sommige verbonden zijn door lijnen of takken (i.e., edges in het Engels). Aan deze lijnen kunnen gewichten toegekend worden en dan spreekt men van een gewogen graaf. Indien de lijnen gericht zijn, dan spreekt men van pijlen en een gerichte graaf. Een veel voorkomende manier om een graaf te implementeren is door gebruik te maken van een nabijheidslijsten. Meer specifiek zal voor elke knoop een lijst worden bijgehouden met de takken waarmee hij verbonden is.
(de nodes zijn blauw en de edges zwart)
De MatchAnalysis oefening zal jullie een grafestructuur laten maken die gebruikt kan worden om sportwedstrijden te analyseren. We zijn namelijk geinteresseerd in het pasgedrag van een team. De grafestructuur maakt het mogelijk om voor een team of deel van het team de ‘pasintensiteit’ te berekenen. Dit geeft weer hoe goed een bepaald team of een bepaald deel van zijn spelers samenspelen.
Deel 4: Klasse GraphAdditionException
- Definieer de klasse GraphAdditionException als subklasse van de abstracte klasse Exception.
- Definieer een constructor met als parameter een INode object. De constructor gebruikt het meegegeven INode object om een boodschap te definieren die meegegeven zal worden aan de constructor van de superklasse. Deze boodschap heeft de volgende vorm:
De node '[String versie van INode object]' bestaat al!
. De placeholder zal vervangen worden door het resultaat van de toString-methode van het INode object.
- Definieer een constructor met als parameter een IEdge object. De constructor gebruikt het meegegeven IEdge object om een boodschap te definieren die meegegeven zal worden aan de constructor van de superklasse. Deze boodschap heeft de volgende vorm:
De edge '[String versie van IEdge object]' bestaat al!
. De placeholder zal vervangen worden door het resultaat van de toString-methode van het IEdge object.
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).
- test04constructorsPresence: test of de ingediende klasse de verwachte constructor(en) definieert (= test geen effect!) (indien van toepassing).
- test05constructor_INode: test of de constructor met een INode als parameter het gewenste effect heeft.
- test06constructor_IEdge: test of de constructor met een IEdge als parameter het gewenste effect heeft.
- 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.