Open het gegeven project
Familie.
Laat het hoofdprogramma lopen. Doe de nodige aanpassingen in het hoofdprogramma zodat er wel een persoon wordt gevonden in de personenlijst.
Merk op: overtollige spaties die aan een ingelezen naam plakken, kan je weghalen met de String-methode .trim(). Een voorbeeld hiervan vind je in de constructor van de klasse Personenlijst.
Gebruik dit ook als je zelf bestanden gaat inlezen.
Bekijk de klasse Stamboom. Deze klasse bevat twee instantievariabelen.
Een stamboom houdt niet enkel een personenlijst bij, maar ook een HashMap die een Persoon afbeeldt op een HashSet van personen.
Elke sleutel van de hashmap stelt een ouder voor; de bijhorende waarde is de verzameling van zijn kinderen.
Ook de signatuur van de constructor en van alle methodes is alvast gegeven. Volg onderstaande instructies:
- Implementeer de constructor van Stamboom. Deze heeft twee bestandsnamen als parameters. Het eerste bestand is gestructureerd zoals het bestand personen.txt. Je gebruikt dit bestand om de personenlijst te initialiseren. Het tweede bestand is gestructureerd zoals familiebanden.txt en zegt wie kind is van wie.
Werk nu verder in twee stappen; de eerste is een voorbereiding op de tweede, want iets eenvoudiger.
- Stap 1: Voeg een derde instantievariabele aantalKinderenVan toe die voor elke ouder enkel het aantal kinderen zal onthouden (is iets eenvoudiger
dan de HashMap kinderenVan die er al staat).
Bij het inlezen van het tweede bestand vul je enkel deze nieuwe hashmap in.
Opgelet: je moet wel degelijk objecten van de klasse Persoon als sleutel gebruiken, en geen Strings!
Tip: Het is niet de bedoeling om nieuwe personen aan te maken bij het inlezen van het bestand familiebanden.txt. De personen
waarvan je in dat bestand de naam terugvindt, stonden al in het bestand personen.txt en heb je al bewaard in de instantievariabele personen. Vraag daar dus de juiste persoon op.
Het gegeven hoofdprogramma initialiseert een stamboom. Controleer dat dit foutloos werkt (de uitvoer moet nog niet in orde zijn).
- Stap 2: Verwijder de instantievariabele aantalKinderenVan. Pas de constructor aan zodat de gegeven hashmap kinderenVan correct wordt ingevuld. Vergeet niet dat nu ook elke HashSet moet geïnitialiseerd worden.
Controleer of het hoofdprogramma nog steeds foutloos werkt.
-
In het hoofdprogramma wordt ook de stamboom uitgeschreven, maar het resultaat is niet echt wat je verwacht. Doe de nodige aanpassingen zodat je volgende uitvoer krijgt - de volgorde van de regels mag wel verschillen:
Dams Jesse (1997) is kind van Dams Robert (1972)
Dams Siel (1995) is kind van Dams Robert (1972)
Dams Nel (1999) is kind van Dams Pieter (1974)
Dams Robert (1972) is kind van Dams Jozef (1940)
Dams Pieter (1974) is kind van Dams Jozef (1940)
Dams Ann (1970) is kind van Dams Jozef (1940)