ОО2/Јун 2023

Извор: SI Wiki
< ОО2
Датум измене: 3. јун 2024. у 17:17; аутор: Tijana (разговор | доприноси) (→‎6. zadatak)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Junski rok 2023. godine održan je 6. juna u dve grupe. Prva grupa(SI) u 11:30h i druga grupa(RTI + ostali odseci) u 12:00h.

  • За питања са више одговора, тачни одговори су подебљани и уоквирени
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
  • Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:

G1

1. zadatak

Kojom komandom se sledeći programski kod čiji je prevedeni oblik - bajtkod - dat u fajlu "Pozdrav.class" može izvršiti?

public class Pozdrav {
    public static void main(String[] args) {
        System.out.print("Zdravo!");
    }
}
  1. javac Pozdrav.class
  2. java Pozdrav.exe
  3. java Pozdrav
  4. javac Pozdrav.exe

2. zadatak

Šta ispisuje sledeći program na programskom jeziku Java? Upisati NP ako se program ne prevodi.

public class Test {
    public Test() {
        System.out.println(1);
    }
    {
        System.out.println(2);
    }
    {
        System.out.println(3);
    }
    static {
        System.out.println(4);
    }
    public static void main(String[] args) {
        new Test();
    }
}

Odgovor: 4231

Objašnjenje: Izvršavaju se prvo statički blokovi prilikom popunjavanja klase u memoriju, zatim nestatički blokovi pa tek onda konstruktor klase.

3. zadatak

Šta sme da stoji umesto #### da bi se sledeći izvorni program napisan na programskom jeziku Java uspešno preveo?

package prvi;
public class A {
    private int a;
    int b;
    protected int c;
    public int d;
}
package drugi;
public class B {
    public static void main(String[] args) {
        A obj = new A();
        ####
    }
}
  1. obj.b = 1;
  2. obj.c = 1;
  3. obj.d = 1;
  4. obj.a = 1;
  5. A.d = 1;

4. zadatak

Koje od sledećih tvrdnji su tačne za programki jezik Java?

  1. Nad metodima označenim modifikatorom final primenjuje se statičko vezivanje.
  2. Modifikator final je deo potpisa metoda.
  3. Nadjačanje (polimorfna redefinicija) metoda natklase u potklasi ne može da bude označena modifikatorom final.
  4. Metod označen modifikatorom final sprečava izvedene klase da ga redefinišu.
  5. Statički metod može da bude označen modifikatorm final.

5. zadatak

Koje od sledećih tvrdnji su tačne za programski jezik Java?

  1. Klasa nasleđuje statička konačna polja implementiranog interfejsa.
  2. Klasa nasleđuje podrazumevane metode implementiranog interfejsa.
  3. Dozvoljeno je pozvati statički metod m() interfejsa I iz nekog metoda klase K koja implementira dati interfejs I na način K.m().
  4. Podrazumevanom metodu m() implementiranog interfejsa I, klasa može da pristupi iz statičkog metoda direktno i koristeći notaciju I.super.m().
  5. Klasa mora da implementira apstraktne metode implementiranog interfejsa ili da bude proglašena apstraktnom.

6. zadatak

Koja od sledećih tvrđenja su tačna za programski jezik Java?

  1. Svi tipovi izuzetaka su direktno ili indirektno izvedeni iz klase Throwable.
  2. Preporuka je da se korisnički definisani tipovi izuzetaka izvode iz klase Exception.
  3. Preporuka je da se korisnički definisani tipovi proverenih izuzetaka izvode iz klase RuntimeException.
  4. Korisnički definisan tip izuzetaka direktno izveden iz klase Exception predstavlja provereni izuzetak.
  5. Korisnički definisan tip izuzetka direktno izveden iz klase Error predstavlja provereni izuzetak.

7. zadatak

Spojiti navedene opise metoda sa njihovim odgovarajućim imenima na programskom jeziku Java?

  1. Nestatički metod koji proverava status prekida niti, ali ga ne resetuje nakon provere.isInterrupted()
  2. Statički metod koje proverava status prekida niti nakon čega se resetuje status prekida.interrupted()
  3. Nestatički metod za postavljanje statusa prekida niti.interrupt()

8. zadatak

Koje tvrdnje su tačne za programiranje grafičkog korisničkog interfejsa pomoću AWT paketa?

  1. Izvor događaja je potrebno registrovati kod odgovarajućeg osluškivača (eng. listener) događaja.
  2. Tela rukovalaca (eng. handler) adaptera je moguće napisati kao lambda izraze.
  3. Klasa AWTEvent je direktno izvedena potklasa klase EventObject.
  4. Klasa AWTEvent je natklasa klasa koje se nalaze u paketu java.awt.event.
  5. Objekat klase AWTEvent čuva infomaciju o vrsti događaja, koju je moguće dohvatiti preko odgovarajućeg metoda.

9. zadatak

Za svaki od sledećih vrsta .NET sklopova (eng. assembly) navesti tip (ekstenziju) fajla.

  1. Konzolni izvršni .exe
  2. Memorijski upravljački Ne postoji
  3. Grafički izvršni .exe

10. zadatak

Šta ispisuje sledeći program na programskom jeziku C#? (Za program koji se ne prevodi uneti NP. Za program sa greškom u izvršavanju uneti X)

class Program {
    static void M1() { System.Console.Write(1); }
    static void M2() { System.Console.Write(2); }
    static void M3() { System.Console.Write(3); }

    public delegate void Delegat();

    public static void Main(string[] args) {
        Delegat d1 = new Delegat(M1);
        Delegat d2 = new Delegat(M2);
        Delegat d3 = new Delegat(M3);
        Delegat d = d1 + d2 + d3;
        d += d1 - d2 + d3;
        d();
    }
}

Одговор: 12313

G2

1. zadatak

Koja od sledećih tvrđenja su tačna za programski jezik Java?

  1. Prilikom prevođenja izvornog koda na jeziku Java, moguće je navesti opciju za dobijanje rezultata prevođenja koji predstavlja mašinski kod računara domaćina.
  2. Rezultat prevođenja izvornog kod na jeziku Java iz jedne datoteke tipa .java uvek se smesta u tačno jednu .class datoteku.
  3. Java virtuelna masina (JVM) prevodi izvorni kod na jeziku Java u bajtkod.
  4. Prevodilac jezika Java prevodi izvorni kod na jeziku Java u bajtkod.
  5. Just in Time (JIT) prevodilac prevodi izvorni kod na jeziku Java u bajtkod.

2. zadatak

Šta ispisuje sledeći program na programskom jeziku Java? Upisati NP ako se program ne prevodi.

public class Test {
    {
        System.out.println(1);
    }
    public Test() {
        System.out.println(2);
    }
    {
        System.out.println(3);
    }
    static {
        System.out.println(4);
    }
    public static void main(String[] args) {
        new Test();
    }
}

Odgovor: 4132

Objašnjenje: Izvršavaju se prvo statički blokovi prilikom popunjavanja klase u memoriju, zatim nestatički blokovi pa tek onda konstruktor klase.

3. zadatak

Koja od sledećih tvrđenja su tačna za programski jezik Java?

  1. Jedan fajl sa izvornim kodom na programskom jeziku Java moze da sadrži više definicija tipova podataka.
  2. Dozvoljeno je pristupiti paketskom članu definisanom u paketu p.sp iz koda nekog tipa podatka definisanog u paketu p.
  3. Po konvenciji imenovanja paketa, za imenovanie korisnički definisanih paketa koristi se obrnuti redosled imena Internet domena.
  4. Dozvoljeno je da se naredba import test.*; pojavi u jednom fajlu vise puta.
  5. Tipovi deklarisani u izvornoj datoteci bez deklaracije paketa neće biti smesteni ni u jedan paket.

4. zadatak

Šta ispisuje sledeći program na programskom jeziku Java? Upisati NP ako se program ne prevodi.

class B {
    public B() {
        f();
    }
    void f(){
        System.out.println(1);
    }
}

class D extends B {
    public D() {
        f();
    }
    public void f(){
        System.out.println(2);
    }
}
public class Test {
    public static void main(String[] args) {
        new D();
    }
}

Odgovor: 22

Objašnjenje: Kada override-ujemo metode smemo proširiti njihov pristup.


5. zadatak

Koja od sledećih tvrđenja su tačna za programski jezik Java?

  1. Klasa moze da proširuje više osnovnih klasa u jednom koraku izvođenja.
  2. Primer višestrukog nasleđivanja predstavlja klasa koja proširuje drugu klasu i implementira više interfejsa.
  3. Supertipove neke klase čine i interfejsi koje ta klasa implementira.
  4. Interfejsi omogućavaju višestruko nasleđivanje u programskom jeziku Java.
  5. Programski jezik Java podržava proširivanje (izvođenje) klasa i interfejsa u više koraka.

6. zadatak

Spojiti navedene tipove izuzetaka na programskom jeziku Java sa odgovarajućim iskazom koji najbolje opisuje njihovu prirodu.

  1. RuntimeException Predstavlja klasu neproverenih izuzetaka čiji se objekti mogu bacati (emitovati) u toku normalnog rada Java virtuelne mašine.
  2. Error Predstavlja klasu neproverenih izuzetaka čiji objekti opisuju ozbiljne probleme koje aplikacija ne bi trebalo da hvata i obrađuje a koji vode do prekida rada programa.
  3. Throwable Predstavlja klasu koja se nalazi u korenu hijerarhije svih grešaka i izuzetaka.
  4. Exception Predstavlja klasu koju bi korisnički definisani izuzeci trebalo da proširuju i čiji objekti opisuju izuzetne situacije koje bi aplikacija trebalo da hvata i obrađuje.

7. zadatak

Koja od sledećih tvrđenja su tačna za programski jezik Java?

  1. Poziv metoda join() bez argumenata će blokirati nit pozivaoca dok se nit za koju je metod pozvan ne završi.
  2. Metod join() je definisan klasi Thread.
  3. Poziv metoda notify() za objekat niti iz koje je pozvan metod join() će blokirati nit pozvanog objekta.
  4. Metod join() baca provereni izuzetak InterruptedException.
  5. Metod join() mora da se pozove iz sinhronizovanog koda inače će biti bačen izuzetak IllegalMonitorStateException.

8. zadatak

Koje tvrdnje su tačne za događaje miša, odnosno događaje kretanje miša?

  1. Događaj vrste MOUSE_MOVED se dešava tek kada se otpusti dugme miša nakon pomeranja kurzora mišem.
  2. Događaji miša su događaji niskog nivoa.
  3. Ako se kod izvora registruje osluškivač tipa MouseMotionListener, pri otpuštanju dugmeta miša dogodiće se događaj vrste MOUSE_RELEASED i biće pozvan metod koji obrađuje ovaj događaj.
  4. Događaj vrste MOUSE_CLICKED prethodi događaju MOUSE_RELEASED.
  5. Događaj vrste MOUSE_CLICKED će se desiti ako se dugme miša otpusti dok je kurzor na istom mestu na kojem je dato dugme i pritisnuto.

9. zadatak

Za svaki od sledećih vrsta .NET sklopova navesti tip (ekstenziju fajla).

  1. Biblioteka za dinamičko povezivanje .dll [1]
  2. Modul za statičko povezivanje .netmodule

10. задатак

Šta ispisuje sledeći program na programskom jeziku C#? (Za program koji se ne prevodi uneti NP. Za program sa greškom u izvršavanju uneti X)

class Program {
    void M1(ref int i) { System.Console.Write(1); }
    void M2(ref int i) { System.Console.Write(2); }
    void M3(ref int i) { System.Console.Write(3); }

    public delegate void Delegat();

    public static void Main(string[] args) {
        Delegat d1 = new Delegat(M1);
        Delegat d2 = new Delegat(M2);
        Delegat d3 = new Delegat(M3);
        Delegat d = d1 + d2 + d3;
        d += d1 - d2 + d3;
        d();
    }
}

Одговор: NP

Napomene

  1. Bilo je ponuđeno više odgovora.