ОО2/К2 2023
Drugi kolokvijum 2023. godine održan je 5. maja i trajao je 20 minuta.
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
1. zadatak
Koje od sledećih tvrdnji su tačne za polje x
na programskom jeziku Java?
public interface I {
int x = 1;
}
- Polje je implicitno sa paketskim pravom pristupa.
- Polje je implicitno označeno pravom pristupa
public
. - Polje je implicitno označeno modifikatorom
final
. - Polje je implicitno označeno modifikatorom
const
. - Polje je implicitno označeno modifikatorom
static
.
2. zadatak
Povezati pojmove sa tvrdnjama koje im najbolje odgovaraju za jezik Java.
- Može da bude konačan/na (final), ne može da ima polja osim statičkih konačnih, može da ima podrazumevane implementacije metoda. ništa od ponuđenog
- Može kao nadtipove da ima proizvoljan broj interfejsa, ne može da ima konstruktor, može da ima statičke metode. interfejs
- Može da ima statičke metode i statička konačna polja, mogu se definisati reference tog tipa, ne mogu se stvarati objekti tog tipa, članovi su podrazumevano javni. interfejs
- Može da ima statičke metode i statička konačna polja, mogu se definisati reference tog tipa, ne mogu se stvarati objekti tog tipa, ali može da ima konstruktore. apstraktna klasa
- Može da ima promenljiva polja, da bude izveden/a iz samo jedne klase, ne može da bude konačan/na (final). apstraktna klasa
3. zadatak
Koja od sledećih tvrđenja su tačna za programski jezik Java?
- Ukoliko se emituje (baca) izuzetak u
try
bloku, rukovaoci izuzecima (catch
grane) navedeni izatry
bloka ispituju se redom kojim su navedeni. - Dozvoljeno je da se rukovalac nadtipa izuzetka nađe ispred rukovaoca podtipa izuzetka iza
try
bloka. - Dozvoljeno je u rukovaocu (
catch
grani) naredbomthrow p;
gde jep
parametar datog rukovaoca, proslediti uhvaćeni izuzetak "spolja", na prethodni nivo obrade izuzetaka. - Rukovalac izuzecima (
catch
grana) može da navede samo jedan parametar tipa klase izuzetka koji treba da obradi. - Moguće je nakon jednog izvršenja
try
bloka u kojem je emitovan (bačen) izuzetak da bude izvršeno više rukovalaca (catch
grana) koje slede iza datogtry
bloka.
4. zadatak
Data je sledeća klasa napisana na jeziku Java:
class Izuzetak extends Exception {}
class IzvedeniIzuzetak extends Izuzetak {}
class IzvedeniIzvedeniIzuzetak extends IzvedeniIzuzetak {}
interface I { void m() throws IzvedeniIzuzetak; }
public class X implements I {
???
public static void main(String[] arg) {}
}
Šta od ponuđenog može stajati na mestu ??? kako bi metod m()
bio pravilno definisan?
public void m() throws Throwable {}
public void m() throws Izuzetak {}
public void m() {}
public void m() throws IzvedeniIzvedeniIzuzetak {}
public void m() throws IzvedeniIzuzetak {}
5. zadatak
Spojiti navedene slučajeve korišćenja ugnežđenih tipova sa odgovarajućim jezičkim konceptom na programskom jeziku Java.
- Koristi se ukoliko je potrebna kapsulacija jednog metoda koji se tako kapsuliran može proslediti kao argument nekom metodu. Predstavlja implementaciju interfejsa koji deklariše tačno jedan apstraktni metod. Lambda izraz
- Koristi se ukoliko je potrebno uvođenje novog tipa unutar klase
S
koji je dostupan i izvan klaseS
uz definisanje konstruktora, polja i metoda, a zatim definisanje više od jednog objekta tog tipa. Objekti ovih tipova nisu u specijalnoj vezi sa objektom obuhvatajućeg tipa. Statička ugnežđena klasa - Koristi se ukoliko je potrebno uvođenje novog tipa unutar metoda
m
, uz definisanje polja, konstruktora i metoda iz kojih je moguć pristup lokalnim nepromenljivim podacima i parametrima metodam
, a zatim definisanje više od jednog objekta tog tipa. Lokalna klasa - Koristi se ukoliko je potrebno uvođenje novog tipa unutar klase
S
koji je dostupan i izvan klaseS
uz definisanje konstruktora, polja i metoda, a zatim definisanje više od jednog objekta tog tipa. Objekti ovih tipova su u specijalnoj vezi sa objektom obuhvatajućeg tipa. Nestatička ugnežđena (unutrašnja) klasa - Koristi se ukoliko je potrebno uvođenje novog tipa unutar metoda
m
, uz definisanje polja i metoda iz kojih je moguć pristup lokalnim nepromenljivim podacima i parametrima metodam
i definisanje isključivo jednog objekta tog tipa. Nije moguće definisanje konstruktora tog tipa. Anonimna klasa
6. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Ukoliko mislite da se programski kod ne prevodi, upišite NP.
class A {
public A() { System.out.print("A"); }
public A(B b) { System.out.print("AB"); }
public static class B {
public B() { System.out.print("B"); }
public B(A a) { System.out.print("BA"); }
}
}
public class Main {
public static void main(String[] arg) {
new A().new B();
}
}
Odgovor: NP
7. zadatak
Ukoliko opšti oblik lambda izraza označimo sa:
(parametri) -> { telo }
Označiti sve tvrdnje koje su tačne.
- Broj parametara u listi parametri mora da bude veći od 0.
- Moguće je izostaviti zagrade oko liste parametri bez obzira na broj parametara.
- Ukoliko se telo sastoji iz samo jedne
return
naredbe, i vitičaste zagrade i ključna rečreturn
mogu da se izostave. - Povratna vrednost lambda izraza može da bude i void.
- Za sve parametre se obavezno navode i tipovi, u suprotnom dolazi do greške u prevođenju.
8. zadatak
Spojiti navedene opise metoda sa njihovim odgovarajućim deklaracijama na programskom jeziku Java.
- Vraćanje imena tekuće niti. public final String getName()
- Izvršavanje zadatka aktivnog objekta. public void run()
- Čekanje da tekuća nit završi svoje izvršavanje. public final void join(long ms) throws InterruptedException
- Provera da li je tekuća nit bila prekidana. ništa od ponuđenog
9. zadatak
Koje od sledećih tvrdnji su tačne za programski jezik Java?
- Nadjačani nestatički metod u izvedenoj klasi automatski zadržava osobinu
synchronized
ukoliko je tom ključnom rečju označen metod osnovne klase koji se nadjačava. - Konstruktor klase može biti označen ključnom rečju
synchronized
. - Naredba može biti obuhvaćena sinhronizovanim blokom.
- Nestatički metod klase može biti označen ključnom rečju
synchronized
. - Statički metod klase može biti označen ključnom rečju
synchronized
.
10. zadatak
Šta ispisuje sledeći program napisan na programskom jeziku Java?
class Racun {
int stanje;
public Racun(int stanje) { this.stanje = stanje; }
public synchronized void uvecaj(int iznos) { stanje += iznos; }
public synchronized void umanji(int iznos) { stanje -= iznos; }
}
public class Test {
public static void main(String[] args) {
Racun racun = new Racun(0);
Runnable r1 = () -> { for (int i = 0; i < 5; i++) racun.uvecaj(100); };
Runnable r2 = () -> { for (int i = 0; i < 5; i++) racun.umanji(100); };
Thread uplata = new Thread(r1);
Thread isplata = new Thread(r2);
uplata.start();
isplata.start();
System.out.println("Vrednost stanja je: " + racun.stanje);
}
}
- Ispis ne može jedinstveno da se odredi
- Vrednost stanja je: 0
- Vrednost stanja je: -500
- Vrednost stanja je: 500