Barnehage
Vi lage et program som simulerer en (enkel) barnehage. I barnehagen har man mange barn, som leker med leker. Lekene tilh?rer barnehagen, men denne barnehagen har et slikt system at hvert barn kan ta med seg leker hjem n?r dagen er slutt, men da m? de ha disse med seg tilbake dagen etter.
Barnehage
Klassen Barnehage skal holde kontroll p? alle lekene som barnehagen eier, samt alle Barn i barnehagen. Barnehage er en "monitor", og skal derfor inneholde kontrollmetodene laanLeke() og giLeke().
- laanLeke() er en metode som returnerer en String leke, som legges i barnets egen lekeliste.
- giLeke() skal kalles av et Barn, og dette gir en ny leke til barnehagens lekeliste.
Barnehage er en monitor. Dette betyr at klassen m? ha funksjoner for tr?dsikkerhet p? plass. Til denne oppgaven er det nyttig med ReentrantLock, Condition og CountDownLatch. CyclicBarrier kan brukes om man f?ler seg mer komfortabel med dette.
Barnehage skal i tillegg ha funksjon for ? skrive til fil. Dette gj?res i metoden skrivBarnehage(). Denne metoden skal skrive til samme fil som det ble lest fra, p? samme format. (Se espira.in).
Barn
Et barn er en klasse som implementerer Runnable. Klassen skal ha en CountDownLatch (eller CyclicBarrier) som parameter, som den skal synkronisere p? n?r den er ferdig i run()-metoden.
Klassen har en liste med leker, som tr?den p?virker med kall p? Barnehagens metoder.
Barn har metoden byttLeke(), som skal gi en leke til barnehagen, eller ta en leke fra barnehagen. Denne metoden skal kalles et antall ganger i run()-metoden.
Barnet opprettes med en ArrayList
Main
Her skal det leses inn en fil som inneholder info om barnehage og barn. Vi har kalt filen espira.in. Filen skal leses slik:
- F?rste linje er barnehagens navn etterfulgt av antall barn i barnehagen.
- Andre linje inneholder alle leker som er i barnehagens lekeliste.
Resten av filen er p? f?lgende format:
- Navnet p? barnet
- Lekene som er i barnets lekeliste.
Du m? derfor lese mer enn èn linje om gangen for ? opprette objekter av klassen Barn. Etter filen er lest, skal metoden returnere en peker til en barnehage, og deretter kaller man Barnehages barnehagedag().