MatchAnalysis Deel2
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 2: Klasse Pass
Download de interface IEdge
.
- Definieer de klasse Pass als implementatie van de interfaces IEdge en Serializable.
- Voeg de instantievariabelen toe zoals beschreven in het bovenstaande klassendiagram. De variabele
serialVersionUID
is een statische en finale variabele en heeft als waarde 12
.
- Definieer de constructor zoals beschreven in het bovenstaande klassendiagram. Deze initialiseert de
instantievariabelen met de overeenkomstige parameter.
- Overschrijf de methode getWeight (van IEdge) die geen parameters heeft. De methode geeft het ‘nrOfTimes’ van het
Pass object terug.
- Overschrijf de methode getStart (van IEdge) die geen parameters heeft. De methode geeft de ‘sender’ van het
Pass object terug.
- Overschrijf de methode getEnd (van IEdge) die geen parameters heeft. De methode geeft de ‘receiver’ van het
Pass object terug.
- 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 hoort enkel gebruik te maken van de velden ‘sender’ en ‘receiver’.
- 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 Pass is én de ‘sender’ en ‘receiver’ van beide objecten dezelfde is.
- Overschrijf de methode toString (van Object) die geen parameters heeft. De methode geeft de ‘sender’ en ‘receiver’ van het Pass object terug zoals in de volgende drie voorbeelden:
Pass from Eden Hazard to Moussa Dembele
Pass from Jan Vertonghen to Romelu Lukaku
Pass from Divock Origi to Nacer Chadli
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.
- test07getWeight: test de getWeight-methode.
- test08getStart: test de getStart-methode.
- test09getEnd: test de getEnd-methode.
- test10hashCode: test de hashCode-methode.
- test11equals: test de equals-methode.
- test12toString: test de toString-methode.
- test13toString_sysoutIpvReturn: test de toString-methode maar er worden ook oplossingen aanvaard die de gevraagde tekst naar de console uitprinten ipv teruggeven als String.