ОО2/Јун 2021 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (Formatirano kao objašnjenje)
Ред 83: Ред 83:
# <syntaxhighlight lang="java" inline>throw new Object();</syntaxhighlight>
# <syntaxhighlight lang="java" inline>throw new Object();</syntaxhighlight>
</div>
</div>
Objašnjenje: <span class="spoiler" data-solution="explanation">Izuzetak koji se baca kroz <code>throw</code> na programskom jeziku Java mora biti izveden iz <code>Throwable</code>. Bacanje <code>Throwable</code> se ovde neće prevesti jer metoda ne hvata niti deklariše u <code>throws</code> klauzuli <code>Throwable</code>.</span>
Objašnjenje: <span class="spoiler" data-solution="explanation">Izuzetak koji se baca kroz <code>throw</code> na programskom jeziku Java mora biti izveden iz <code>Throwable</code>. Bacanje <code>Throwable</code> se ovde neće prevesti jer metoda ne hvata niti deklariše u <code>throws</code> klauzuli <code>Throwable</code>, a <code>Throwable</code> je takođe Interfejs koji se ne može instancirati.</span>


=== 6. zadatak ===
=== 6. zadatak ===

Верзија на датум 4. јун 2022. у 22:06

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

G1/G2

1. zadatak

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

  1. Moguće je imenovati promenljive u izvornom kodu napisanom na jeziku Java koristeći srpsko ćirilično pismo.
  2. Veličina primitivnog podatka tipa char u programskom jeziku Java je tačno 8 bita.
  3. Izvorni kod napisan na programskom jeziku Java koristeći ASCII način kodiranja translira se pre prevođenja koristeći UTF-16 način kodiranja.
  4. Java koristi UTF-16 način kodiranja za kodiranje znaka (char).
  5. Java koristi isključivo ASCII način kodiranja za kodiranje znaka (char).

2. zadatak

Koja od sledećih tvrđenja su tačna za glavni metod (funkciju main koja predstavlja ulaznu tačku programa) na programskom jeziku Java?

  1. Glavni metod mora biti javno dostupan.
  2. Glavni metod mora biti statički metod.
  3. Glavni metod može da ima proizvoljan broj parametara proizvoljnog tipa.
  4. Povratna vrednost glavnog metoda mora biti tipa void.
  5. Svaka od više klasa koje obrazuju program može da definiše metod main, sa odgovarajućom deklaracijom glavnog metoda i različitim telom, od kojih svaki može da bude glavni metod u različitim pokretanjima programa.

3. zadatak

Koja od sledećih tvrđenja su tačna na programskom jeziku Java?

  1. Paketi rešavaju problem konflikta imena tipova.
  2. Paketi ostvaruju koncept prostora imena sličan konceptu namespace u jeziku C++.
  3. Po konvenciji, imena paketa se pišu isključivo velikim slovima.
  4. Paket predstavlja skup logički povezanih tipova objekata (na primer, klasa, interfejsa).
  5. Paketi utiču na pravo pristupa sadržanim tipovima i članovima tipova.

4. zadatak

Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol x ukoliko se program ne prevodi.

interface I {
    static void m() {
        System.out.print(1);
    }
}

class B {
    public static void m() {
        System.out.print(2);
    }
}

class D extends B implements I {
    public D() {
        m();
        B.m();
    }
}

public class Test {
    public static void main(String args[]) {
        new D();
    }
}

Odgovor: 22

Objašnjenje: Poziv m() poziva nasleđeni metod klase B jer se statički metod interfejsa mora pozvati eksplicitno preko naziva interfejsa.

5. zadatak

Šta može da stoji umesto #### da bi se sledeći izvorni kod napisan na programskom jeziku Java uspešno preveo?

public class Test {
    public static void main(String[] args) {
        try {
            ####
        } catch (Exception e) {}
    }
}
  1. throw 1;
  2. throw new Throwable();
  3. throw new Exception();
  4. throw;
  5. throw new Object();

Objašnjenje: Izuzetak koji se baca kroz throw na programskom jeziku Java mora biti izveden iz Throwable. Bacanje Throwable se ovde neće prevesti jer metoda ne hvata niti deklariše u throws klauzuli Throwable, a Throwable je takođe Interfejs koji se ne može instancirati.

6. zadatak

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

  1. Lokalnu klasu moguće je definisati unutar metoda klase.
  2. Lokalnu klasu moguće je definisati unutar konstruktora klase.
  3. Lokalnu klasu moguče je definisati unutar inicijalizacionog bloka klase.
  4. Lokalnu klasu moguće je definisati unutar definicije klase, van bilo kog bloka koda.
  5. Lokalnu klasu moguće je definisati unutar main funkcije.

7. zadatak

Dat je sledeći programski kod napisan na programskom jeziku Java.

class Brojac {
    private int br = 0;
    public void inkrement() { br++; }
    public int dajBroj() { return br; }
}

public class Test {
    public static void main(String args[]) throws InterruptedException {
        Brojac brojac = new Brojac();
        Thread[] niti = new Thread[10];
        
        for (int i = 0; i < niti.length; i++) niti[i] = new Thread(() -> { brojac.inkrement(); });
        for (int i = 0; i < niti.length; i++) niti[i].start();
        for (int i = 0; i < niti.length; i++) niti[i].join();
        System.out.print(brojac.dajBroj());
    }
}

Koje od sledećih tvrdnji su tačne za prikazani kod?

(Izaberite jedan odgovor)

  1. Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu uvek se ispisuje vrednost 10.
  2. Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu može se, ali ne mora, ispisati vrednost 10.
  3. Programski kod se ne prevodi uspešno.
  4. Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu uvek se ispisuje vrednost 0.
  5. Programski kod se uspešno prevodi, ali se prilikom izvršavanja emituje izuzetak InterruptedException.

Objašnjenje: Metodi klase Brojac nisu sinhronizovani, tako da je tehnički moguće da br++ zapravo prvo dohvati vrednost br, onda bude prekinuta od strane neke druge niti, pa pri povratku uveća pročitanu vrednost za 1 i upiše u br, time gazeći vrednost koje su prethodne niti posle prekida upisale.

8. zadatak

Klasa Menu izvedena je direktno iz klase:

  1. MenuContainer
  2. MenuComponent
  3. MenuBar
  4. Component
  5. MenuItem

9. zadatak

Koja od sledećih tvrdnji je tačna?

(Izabrati više odgovora)

  1. Programi pisani za izvršenje na platformi .NET se prevode u međukod MSIL.
  2. Jedna od ciljnih karakteristika radnog okvira .NET je integracija sistema korišćenjem otvorenih standarda za razmenu podataka kakav je XML.
  3. Izvršni sklop (assembly) za .NET može biti u samo jednom ili više fajlova.
  4. Izvršno okruženje (CLR) radnog okvira .NET izvršava program iz fajla koji sadrži prevedeni C++ program na mašinski jezik računara domaćina.
  5. Jezik Java je standard međunarodne organizacije za standardizaciju ISO, za razliku od jezika C# koji nije standardizovan.

10. zadatak

Šta ispisuje sledeći program na jeziku C#?

class Program {
    static void M1(ref int i) { System.Console.Write(i++ + " "); }
    static void M2(ref int i) { System.Console.Write(i/2 + " "); }
    static void M3(ref int i) { System.Console.Write(i-- + " "); }

    public delegate void Delegat(ref int i);

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

Odgovor: 3 2 4

Objašnjenje: U d se pri stvaranju dodaju M1 i M2 (iz da) pa ponovo M1. Zatim se dodaju M3 i ponovo M1 i M2 (iz da). Onda se uklanjaju M1, M2 i M3 sa kraja liste poziva pa ostaju samo M1, M2 i M1 u delegatu. Posle izvršavanja prvog M1 ispis je 3 a vrednost je 4, posle M2 ispis je 2 a vrednost ostaje ista, i posle drugog M1 ispis je 4 i vrednost je 3.

G3/G4

1. zadatak

Koje od sledećih tvrđenja je tačno na programskom jeziku Java?

  1. Veličina tipa double je zavisna od implementacije.
  2. Veličina tipa double je uvek ista i iznosi 32 bita.
  3. Veličina tipa double je uvek ista i iznosi 64 bita.
  4. Veličina tipa double je uvek ista i iznosti 128 bita.
  5. ...

2. zadatak

Koja od sledećih tvrđenja su tačna na programskom jeziku Java?

  1. Potpis funkcije se sastoji iz imena, broja argumenata i njihovih tipova.
  2. Deklaracija sadrži potpis, tip rezultata i throws klauzulu.
  3. U jednoj klasi može postojati više metoda sa istim potpisom.
  4. Ako se u klasi nađe više metoda sa istom deklaracijom, njihova implementacija se u vreme prevođenja spaja u jednu metodu.
  5. ...

3. zadatak

Koja od sledećih tvrđenja su tačna na programskom jeziku Java?

  1. Jedan paket se može prostirati na više fajlova.
  2. Svaki fajl sa izvornim kodom koji je deo nekog paketa mora sadržati naredbu package imePaketa;.
  3. Različite metode sa istom deklaracijom se mogu nalaziti u dva različita paketa.
  4. Naredba package imePaketa mora biti prva naredba u fajlu.
  5. Jedan fajl može biti sadržan u više paketa.

Objašnjenje: Odgovor pod b je inicijalno označen kao tačan, međutim, u slučaju podrazumevanog paketa ovo ne važi, tako da odgovor nije tačan.

4. zadatak

Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol x ukoliko se program ne prevodi.

interface I {
    static void m() {
        System.out.print(1);
    }
}

class B {
    public static void m() {
        System.out.print(2);
    }
}

class D extends B implements I {
    public D() {
        I.m();
        B.m();
    }
}

public class Test {
    public static void main(String args[]) {
        new D();
    }
}

Odgovor: 12

5. zadatak

Šta može da stoji umesto #### da bi se sledeći izvorni kod napisan na programskom jeziku Java uspešno preveo?

class Izuzetak extends Exception {}

class Klasa {
    public void m() throws Izuzetak {
        ####
    }
}
  1. throw;
  2. throw 1;
  3. throw new RuntimeException();
  4. throw new Exception();
  5. throw new Izuzetak();

Objašnjenje: Moguće je baciti Izuzetak jer je naznačen u throws klauzuli i RuntimeException jer je neproveren.

6. zadatak

Navesti koja su tvrđenja tačna za lokalne klase:

  1. Lokalne klase definisane u nestatičkom okruženju okružujuće klase sadrže pokazivač na objekat okružujuće klase.
  2. Referenca na lokalnu klasu se može koristiti van bloka u kome je lokalna klasa definisana.
  3. Referenca na lokalnu klasu se može proslediti kao povratna vrednost metoda.
  4. Referenca na lokalnu klasu se može proslediti kao argument metodu.

7. zadatak

Isti kao za G1/G2.

8. zadatak

Koje klase su izvedene iz Component?

  1. BorderLayout
  2. Panel
  3. Graphics
  4. MenuBar
  5. TextField
  6. Checkbox
  7. Choice
  8. Button

9. zadatak

Koje od sledećih tvrdnji su tačne u vezi sa izvršnim okruženjem u .NET (CLR)?

  1. CLR je odgovoran za sigurnost i zaštitu.
  2. CLR ne podržava više jezika.
  3. CLR podržava višenitno izvršavanje.
  4. CLR ne podržava JIT prevođenje.
  5. CLR upravlja memorijom programa.

10. zadatak

Neki kod sa delegatima. (Nedostaje tekst zadatka.)