DigiKlantenkaart Deel4
Deel 4: Klasse KlantenKaart
- Definieer de klasse KlantenKaart als implementatie van de interface Serializable.
- Voeg de instantievariabelen toe zoals beschreven in het bovenstaande klassendiagram. De variabele
serialVersionUID
is een statische en finale variabele en heeft als waarde 552
. De HashMap slaagt het aantal punten verzameld door de klant bij de bijhorende winkel op (het Winkel object is de sleutel).
- Definieer de constructor zoals beschreven in het bovenstaande klassendiagram. Deze initialiseert de
instantievariabelen met de overeenkomstige parameter. De twee collecties worden geinitialiseerd als, respectievelijk, een lege lijst en een lege map.
- Voeg accessormethodes toe voor de instantievariabelen.
- Maak een methode toevoegenTransactie die een Winkel object, een double en een int als parameters heeft. De methode voegt een nieuwe transactie toe en past de verzamelde punten voor de meegegeven winkel aan op basis van de parameters.
- 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 KlantenKaart is én de instantievariabelen van beide objecten gelijk zijn.
- Overschrijf de methode toString (van Object) die geen parameters heeft. De methode geeft de ‘naam’, ‘winkelID’ en ‘aantalPuntenPerEuro’ van het KlantenKaart object terug zoals in de volgende drie voorbeelden:
Klantenkaart van Lies Van Den Berg (LVDB3): 35 transactie(s) in 1 winkel(s) en een totaal van 231 beschikbare punten
Klantenkaart van Peter Peters (PP1): 7 transactie(s) in 2 winkel(s) en een totaal van 19 beschikbare punten
Klantenkaart van Sarah Jansens (SJ12): 78 transactie(s) in 8 winkel(s) en een totaal van 1249 beschikbare punten
Dus van de vorm Klantenkaart van [voornaam] [naam] ([id]): [aantal transacties] transactie(s) in [aantal winkels waarin punten verzameld werd] winkel(s) en een totaal van [totale aantal beschikbare punten over alle winkels heen] beschikbare punten
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.
- test07toevoegenTransactie: test de toevoegenTransactie-methode.
- test08hashCode: test de hashCode-methode.
- test09equals: test de equals-methode.
- test10toString: test de toString-methode.