OO2/K2 2026

Izvor: SI Wiki
< ОО2(preusmereno sa OO2/K2 2026)
Pređi na navigaciju Pređi na pretragu
Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

K2 2026. godine održan je 6. meseca. Kolokvijum nosi 15 poena.

1. zadatak

Postavka

Napisati Java program koji simulira rad sa artiklima u prodavnici. Implementirati klasu artikl za koju je moguće dohvatiti ime i cenu. Implementirati klasu nedostupni artikl, koja je izvedena iz klase artikl, i za koju pokušaj dohvatanja cene rezultuje greškom. Napisati test koji kreira listu artikala (uključujući nedostupni artikl) i omogućiti ispis svih artikla koji zadovoljavaju neki uslov. Testirati rad programa ispisom svih artikla čija je cena manja od 100. Zadavanje uslova obaviti korišćenjem lambda funkcija.

Rešenje

2. zadatak

Postavka

Napisati Java program koji simulira paralelnu statističku obradu ocena studenata. Implementirati klasu brojač ocena koja računa koliko puta se zadata ocena pojavljuje u zadatom nizu. Podaci se zadaju prilikom kreiranja objekta. Brojanje se radi u petlji, gde se u svakoj iteraciji proverava jedan element niza, a zatim pauzira rad programa na 500 milisekundi. Omogućiti da se dohvati konačan broj izbrojanih ocena. Napisati klasu statistika kojoj se zadaje niz i koja pokreće 6 niti, gde svaka računa koliko se puta javlja jedna ocena od 5 do 10. Nakon što se završi prebrojavanje svih ocena, klasa statistika ispiše sve podatke na standardni izlaz. Napisati test koji testira rad programa.

Rešenje

3. zadatak

Postavka

Napisati Java program koji demonstrira rad pojednostavljene pumpe. Implementirati klasu rezervoar koji ima maksimalni kapacitet goriva u litrima, kao i trenutnu količinu goriva koje se nalazi u njemu. U rezervoar je moguće dodati zadatu količinu goriva i istočiti zadatu količinu goriva iz rezervoara. Implementirati klasu pištolj koja na svakih 700 milisekundi sekunde pokuša da istoči 1 litar iz rezervoara. Ukoliko u rezervoaru nema dovoljno goriva, pištolj se blokira dok se ne doda novo gorivo u rezervoar. Implementirati klasu cisterna koja na svakih 5 sekundi doda nasumičan broj (između 25 i 50) litara goriva u rezervoar. Ukoliko u rezervoar ne može da stane količina goriva koju cisterna pokušava da doda, u rezervoar se doda onoliko goriva koliko može da stane, a zatim se cisterna blokira dok se ne napravi prostor za još goriva. Kada se cisterna odblokira, prvo mora da istoči količinu goriva koju poseduje, a tek onda kreira novu količinu goriva. Svaki pištolj i cisterna poseduju identifikator i vrše ispis poruke na standardni izlaz svaki put kada uspešno završe radnju sa rezervoarom. Napisati 2 testa koja simuliraju rad rezervoara, pištolja i cisterne. Oba testa rade sa jednim rezervoarom kapaciteta 50 litara. Prvi test simulira rad rezervoara sa 5 pištolja i 2 cisterne, a drugi test simulira rad rezervoara sa 100 pištolja i 1 cisternom.

Rešenje