os-zadaci - finki

Прв колоквиум

ChildCare

Ве најмуваат од државната градинка „Весела Пролет“, да имплементирате софтвер кој автоматски ќе гo контролира присуството на воспитувачките во однос на децата во градинката и ќе направи распределување на воспитувачи-деца.
Во градинката има правило дека секогаш мора има еден присутен воспитувач за најмногу три деца.
Во почетниот код кој е даден, дефинирани се класите Adult и Child, кои ги симболизираат воспитувачките и децата од градинката.

Во имплементацијата, можете да ги користите следните методи од веќе дефинираната променлива state:

state.adultEntered()
- Го симболизира влегувањето на воспитувач во градинката.

state.adultLeft()
- Го симболизира излегувањето на воспитувач од градинката.

state.adultLeaving()
- Симболизира состојба на чекање на воспитувачот за да излезе од градинката.

state.childrenEntered()
- Го симболизира влегувањето на дете во градинката.

state.childLeft()
- Го симболизира излегувањето на дете од градинката.

state.childEntering()
- Симболизира состојба на чекање на дете за да влезе од градинката.

Се користат семафори и бројачи по желба. Тие треба да се дефинираат на почетокот од класата и треба да се static. Се иницијализираат во методот init().
Вашата задача е да ги имплементирате методите Child.execute(), Adult.execute() и init(). При имплементацијата, не смеете да додадете try-catch блок во нив. Потребните семафори, глобални променливи и променливи за состојбата треба да ги дефинирате самите.
Доколку имате грешка, ќе ја добиете пораката:
Procesot ne e sinhroniziran spored uslovite na zadacata.

По што ќе ви се прикаже логот на повикување на акциите и настанатите грешки. Овој лог треба да ви послужи за увидување на тоа каде имате грешка во извршувањето на вашата задача.
Напомена: Поради конкурентниот пристап за логирањето, можно е некои од пораките да не се на позицијата каде што треба да се. Токму затоа, овие пораки користете ги само како информација, но не се ослонувајте на нив.

Starter File Solution File

finki