Dagelijks komen in een school heel wat verloren voorwerpen binnen: kledij, USB-sticks, schooletuis, … je kan het zo gek niet bedenken.
Om een beetje organisatie te krijgen in het beheer van de verloren voorwerpen gaat men elk binnengebracht stuk labelen. Een memoblaadje met een uniek nummer is hier de truc. In de opslagruimte met de verloren voorwerpen vindt men bijvoorbeeld volgende vier memo-blaadjes vastgeprikt op verloren stukken terug:
Het ideale is natuurlijk dat een leerling zijn/haar eigendom weer komt ophalen. Het betreffende memoblaadje verdwijnt dan richting papiermand. Omdat de opslagruimte beperkt is, komen voorwerpen soms op een ‘mag weg’ stapel terecht. Wekelijks komt de schoonmaakploeg eens voorbij om deze voorwerpen naar de container te brengen. Zolang de schoonmaakploeg niet langsgekomen is, kan de leerling nog ‘op het nippertje’ zijn verloren voorwerp.
In deze oefening programmeren we de klasse Opslag
, een klasse die instanties
van de klasse Voorwerp
verzamelt in een ArrayList
. Je maakt in BlueJ
het project VerlorenVoorwerpen met volgende klassen:
Voorwerp
: de code van Voorwerp
kan je hier1 downloaden.Opslag
: kopieer alvast de boilerplate-code uit de indiensectie op deze pagina naar jouw project.Hieronder het klassendiagram van Voorwerp
.
De klasse Voorwerp
(die we voor de eenvoud niet VerlorenVoorwerp
noemen) werd al
helemaal geprogrammeerd.
Voorwerp
:
int identificatienummer
: het unieke nummertje dat men ook op het memoblaadje
schrijft.String type
: stelt het type verloren voorwerp voor. Voorbeelden zijn kledij,
USB-stick, etui enz.String omschrijving
: voorbeelden zijn Superman T-shirt, Zwarte Cruzer 8 GB
enz.boolean magWeg
: Staat altijd op false
tenzij beslist werd dat het
verloren voorwerp niet meer bijgehouden zal worden. Pas
als de schoonmaakploeg het kwam ophalen, is het voorwerp definitief verloren.Voorwerp(int,String,String)
vraagt een identificatienummer, type en omschrijving.void zetOpMagWeg()
zet het veld magWag
op true
, klaar om door
de schoonmaakploeg naar de container gebracht te worden.De klasse Opslag
dient om de verloren voorwerpen te beheren en heeft twee velden:
ArrayList<Voorwerp> voorwerpen
: houdt alle verloren voorwerpen die binnengebracht
werden bij.int volgendIdentificatienummer
: elk verloren voorwerp moet een unieke
identificatienummer krijgen. Het veld volgendIdenticatienummer
bevat het
nummertje dat we aan het volgende gevonden voorwerp zullen toekennen.
Telkens wanneer een nieuw voorwerp binnengebracht wordt, moet
volgendIdentificatienummer
met 1 verhogen.Programmeer in de klasse Opslag
de volgende methoden:
boolean zijnErVerlorenVoorwerpen()
Deze methode gaat na of er verloren voorwerpen zijn. Deze methode geeft false
terug wanneer er geen verloren voorwerpen zijn. In het andere geval wordt true
teruggegeven.
void voorwerpToevoegen(String, String)
Deze methode dient om een verloren voorwerp toe te voegen aan onze ArrayList
voorwerpen
. Je krijgt het type en de omschrijving van het verloren
voorwerp mee via de parameters. Je moet een instantie van de klasse Voorwerp
aanmaken waarbij je rekening houdt met het veld volgendIdenficatienummer
om het voorwerp een uniek identificatienummer te geven. Vergeet niet het
veld volgendIdentificatienummer
met 1 te verhogen, zodat een volgende
verloren voorwerp onmiddellijk een correct identificatienummer krijgt.
Voorwerp geefVoorwerp(int)
Geeft het verloren voorwerp op de gegeven index terug. Test de geldigheid van de index. Indien
de index niet bestaat, geef dan null
terug.
int aantalVoorwerpenVanType(String)
Geeft het aantal verloren voorwerpen van het gegeven type terug.
void printVoorwerpen(String type}
Bij deze methode geef je als parameter het type mee waarvan je de verloren
voorwerpen wil zien. Je toont in het Terminalvenster van BlueJ de identificatiecode en de
omschrijving van alle gevonden producten van het gegeven type.
void allesMagWeg()
Tijdens de zomervakantie wordt er grote schoonmaak gehouden. Alles wat niet
opgehaald werd door een leerling mag dan weg. Laat daarom met deze methode
alle voorwerpen in voorwerpen
op mag weg zetten.
Je hoeft niets te verwijderen uit de ArrayList
voorwerpen
!
int zoekVerlorenVoorwerp(int)
Deze methode zoekt naar een voorwerp met het identificatienummer dat je via de parameter meegeeft. Indien het voorwerp gevonden
wordt, geef dan de index van het voorwerp terug. Indien het voorwerp niet gevonden wordt, geef dan -1 terug. Gebruik een while-lus.
Voorwerp ophalen(int)
Bij deze methode geef je het identificatienummer van het op te halen voorwerp mee als parameter. Vind je het verloren
voorwerp dan verwijder je het uit de ArrayList
. De methode geeft het gevonden voorwerp terug ofwel null
indien er geen
voorwerp met het gegeven identificatienummer gevonden werd.
Naar een oefening van Goderik Lefebvre, Waregem (2016)