ОО2/К2 2023

Извор: SI Wiki
< ОО2
Датум измене: 6. мај 2023. у 01:10; аутор: KockaAdmiralac (разговор | доприноси) (K2 od danas)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

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;
}
  1. Polje je implicitno sa paketskim pravom pristupa.
  2. Polje je implicitno označeno pravom pristupa public.
  3. Polje je implicitno označeno modifikatorom final.
  4. Polje je implicitno označeno modifikatorom const.
  5. Polje je implicitno označeno modifikatorom static.

2. zadatak

Povezati pojmove sa tvrdnjama koje im najbolje odgovaraju za jezik Java.

  1. 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
  2. Može kao nadtipove da ima proizvoljan broj interfejsa, ne može da ima konstruktor, može da ima statičke metode. interfejs
  3. 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
  4. 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
  5. 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?

  1. Ukoliko se emituje (baca) izuzetak u try bloku, rukovaoci izuzecima (catch grane) navedeni iza try bloka ispituju se redom kojim su navedeni.
  2. Dozvoljeno je da se rukovalac nadtipa izuzetka nađe ispred rukovaoca podtipa izuzetka iza try bloka.
  3. Dozvoljeno je u rukovaocu (catch grani) naredbom throw p; gde je p parametar datog rukovaoca, proslediti uhvaćeni izuzetak "spolja", na prethodni nivo obrade izuzetaka.
  4. Rukovalac izuzecima (catch grana) može da navede samo jedan parametar tipa klase izuzetka koji treba da obradi.
  5. 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 datog try 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?

  1. public void m() throws Throwable {}
  2. public void m() throws Izuzetak {}
  3. public void m() {}
  4. public void m() throws IzvedeniIzvedeniIzuzetak {}
  5. 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.

  1. 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
  2. Koristi se ukoliko je potrebno uvođenje novog tipa unutar klase S koji je dostupan i izvan klase S 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
  3. 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 metoda m, a zatim definisanje više od jednog objekta tog tipa. Lokalna klasa
  4. Koristi se ukoliko je potrebno uvođenje novog tipa unutar klase S koji je dostupan i izvan klase S 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
  5. 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 metoda m 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.

  1. Broj parametara u listi parametri mora da bude veći od 0.
  2. Moguće je izostaviti zagrade oko liste parametri bez obzira na broj parametara.
  3. Ukoliko se telo sastoji iz samo jedne return naredbe, i vitičaste zagrade i ključna reč return mogu da se izostave.
  4. Povratna vrednost lambda izraza može da bude i void.
  5. 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.

  1. Vraćanje imena tekuće niti. public final String getName()
  2. Izvršavanje zadatka aktivnog objekta. public void run()
  3. Čekanje da tekuća nit završi svoje izvršavanje. public final void join(long ms) throws InterruptedException
  4. 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?

  1. 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.
  2. Konstruktor klase može biti označen ključnom rečju synchronized.
  3. Naredba može biti obuhvaćena sinhronizovanim blokom.
  4. Nestatički metod klase može biti označen ključnom rečju synchronized.
  5. 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);
    }
}
  1. Ispis ne može jedinstveno da se odredi
  2. Vrednost stanja je: 0
  3. Vrednost stanja je: -500
  4. Vrednost stanja je: 500