Stamboom Deel1 examen versie
Download de klasse Persoon
en de klasse Geslacht
. Zet deze in de default package (= rechtstreeks in de ‘src’-map van je NetBeans project) en werk ook hierin verder. Definieer de klasse StamboomNode als specialisatie van Persoon.
-
Voeg de volgende instantievariabelen toe:
- een instantievariabele partner van het type Persoon
- een collectie instantievariabele voor het opslaan van StamboomNode objecten met als naam kinderen. Er is geen bovengrens voor het aantal kinderen die bijgehouden kunnen worden en het moet mogelijk zijn om dynamisch nog extra kinderen toe te voegen aan de instantievariabele of ze te verwijderen. Zorg ervoor dat er geen dubbels in de collectie kunnen zitten. De objecten in de collectie zijn niet opgeslagen met een bepaalde volgorde.
- Definieer de constructor zoals beschreven in het bovenstaande klassendiagram. Deze initialiseert de instantievariabelen van de ouderklasse Persoon met de overeenkomstige parameter. De collectie instantievariabele kinderen wordt geinitialiseerd.
- Voeg accessor- en mutator-methodes toe voor 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 StamboomNode is, de instantievariabelen ‘naam’ en ‘voornaam’, van beide objecten dezelfde waarde hebben is.
- Overschrijf de methode toString (van Object) die geen parameters heeft. De methode geeft een StamboomNode weer als volgt:
- Indien men geen partner heeft:
[voornaam] [naam] ([geslacht] [geboortedatum])
- Indien men partner en 1 kind heeft:
[voornaam] [naam] ([geslacht] [geboortedatum]) heeft 1 kind met [voornaamPartner] [naamPartner] ([geslachtPartner] [geboortedatumPartner])
- Indien men partner en 0 of meerdere kinderen heeft
[voornaam] [naam] ([geslacht] [geboortedatum]) heeft [aantalKinderen] kinderen met [voornaamPartner] [naamPartner] ([geslachtPartner] [geboortedatumPartner])
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).
- test04constructorPresence: test of de ingediende klasse de verwachte constructor(en) definieert (= test geen effect!) (indien van toepassing).
- test05constructor: test of de constructor het gewenste effect heeft (indien van toepassing).
- test06methodsPresent: test of de verwachte methodes aanwezig zijn in de ingediende klasse en of de methode definities overeenkomen met de verwachte definities (= test geen effect!).
- test07accessorsMutators: test of de ingediende klasse de al dan niet verwachte accessor- en mutatormethodes definieert en of deze het verwachte effect hebben.
- test08equals: test de equals-methode.
- test09toString: test de toString-methode.
- test10toString_sysoutIpvReturn: test de toString-methode maar er worden ook oplossingen aanvaard die de gevraagde tekst naar de console uitprinten ipv teruggeven als String.