ОО2/Јун 2021

Извор: SI Wiki
< ОО2
Датум измене: 5. јун 2023. у 20:47; аутор: KockaAdmiralac (разговор | доприноси) (→‎7. zadatak: Označeno objašnjenje kao objašnjenje)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу
  • За питања са више одговора, тачни одговори су подебљани и уоквирени
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
  • Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:

Г1/Г2

1. задатак

Која од следећих тврђења су тачна за програмски језик Јава?

  1. Могуће је именовати променљиве у изворном коду написаном на језику Јава користећи српско ћирилично писмо.
  2. Величина примитивног податка типа char у програмском језику Јава је тачно 8 бита.
  3. Изворни код написан на програмском језику Јава користећи АСЦИИ начин кодирања транслира се пре превођења користећи УТФ-16 начин кодирања.
  4. Јава користи УТФ-16 начин кодирања за кодирање знака (char).
  5. Јава користи искључиво АСЦИИ начин кодирања за кодирање знака (char).

2. задатак

Која од следећих тврђења су тачна за главни метод (функцију main која представља улазну тачку програма) на програмском језику Јава?

  1. Главни метод мора бити јавно доступан.
  2. Главни метод мора бити статички метод.
  3. Главни метод може да има произвољан број параметара произвољног типа.
  4. Повратна вредност главног метода мора бити типа void.
  5. Свака од више класа које образују програм може да дефинише метод main, са одговарајућом декларацијом главног метода и различитим телом, од којих сваки може да буде главни метод у различитим покретањима програма.

3. задатак

Која од следећих тврђења су тачна на програмском језику Јава?

  1. Пакети решавају проблем конфликта имена типова.
  2. Пакети остварују концепт простора имена сличан концепту namespace у језику C++.
  3. По конвенцији, имена пакета се пишу искључиво великим словима.
  4. Пакет представља скуп логички повезаних типова објеката (на пример, класа, интерфејса).
  5. Пакети утичу на право приступа садржаним типовима и члановима типова.

4. задатак

Шта исписује следећи програм на програмском језику Јава? Уписати симбол x уколико се програм не преводи.

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();
    }
}

Одговор: 22

Објашњење: Позив m() позива наслеђени метод класе B јер се статички метод интерфејса мора позвати експлицитно преко назива интерфејса.

5. задатак

Шта може да стоји уместо #### да би се следећи изворни код написан на програмском језику Јава успешно превео?

public class Test {
    public static void main(String[] args) {
        try {
            ####
        } catch (Exception e) {}
    }
}
  1. тхроw 1;
  2. тхроw неw Тхроwабле();
  3. тхроw неw Еxцептион();
  4. тхроw;
  5. тхроw неw Објецт();

Објашњење: Изузетак који се баца кроз throw на програмском језику Јава мора бити изведен из Throwable. Бацање Throwable се овде неће превести јер метода не хвата нити декларише у throws клаузули Throwable.

6. задатак

Која од следећих тврђења су тачна за програмски језик Јава?

  1. Локалну класу могуће је дефинисати унутар метода класе.
  2. Локалну класу могуће је дефинисати унутар конструктора класе.
  3. Локалну класу могуче је дефинисати унутар иницијализационог блока класе.
  4. Локалну класу могуће је дефинисати унутар дефиниције класе, ван било ког блока кода.
  5. Локалну класу могуће је дефинисати унутар маин функције.

7. задатак

Дат је следећи програмски код написан на програмском језику Јава.

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());
    }
}

Које од следећих тврдњи су тачне за приказани код?

(Изаберите један одговор)

  1. Програмски код се успешно преводи и извршава. Приликом извршавања програма на стандардном излазу увек се исписује вредност 10.
  2. Програмски код се успешно преводи и извршава. Приликом извршавања програма на стандардном излазу може се, али не мора, исписати вредност 10.
  3. Програмски код се не преводи успешно.
  4. Програмски код се успешно преводи и извршава. Приликом извршавања програма на стандардном излазу увек се исписује вредност 0.
  5. Програмски код се успешно преводи, али се приликом извршавања емитује изузетак ИнтерруптедЕxцептион.

Објашњење: Методи класе Brojac нису синхронизовани, тако да је технички могуће да br++ заправо прво дохвати вредност br, онда буде прекинута од стране неке друге нити, па при повратку увећа прочитану вредност за 1 и упише у br, тиме газећи вредност које су претходне нити после прекида уписале.

8. задатак

Класа Menu изведена је директно из класе:

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

9. задатак

Која од следећих тврдњи је тачна?

(Изабрати више одговора)

  1. Програми писани за извршење на платформи .НЕТ се преводе у међукод МСИЛ.
  2. Једна од циљних карактеристика радног оквира .НЕТ је интеграција система коришћењем отворених стандарда за размену података какав је XМЛ.
  3. Извршни склоп (ассемблy) за .НЕТ може бити у само једном или више фајлова.
  4. Извршно окружење (ЦЛР) радног оквира .НЕТ извршава програм из фајла који садржи преведени C++ програм на машински језик рачунара домаћина.
  5. Језик Јава је стандард међународне организације за стандардизацију ИСО, за разлику од језика C# који није стандардизован.

10. задатак

Шта исписује следећи програм на језику 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);
    }
}

Одговор: 3 2 4

Објашњење: У d се при стварању додају M1 и M2 (из da) па поново M1. Затим се додају M3 и поново M1 и M2 (из da). Онда се уклањају M1, M2 и M3 са краја листе позива па остају само M1, M2 и M1 у делегату. После извршавања првог M1 испис је 3 а вредност је 4, после M2 испис је 2 а вредност остаје иста, и после другог M1 испис је 4 и вредност је 3.

Г3/Г4

1. задатак

Које од следећих тврђења је тачно на програмском језику Јава?

  1. Величина типа double је зависна од имплементације.
  2. Величина типа double је увек иста и износи 32 бита.
  3. Величина типа double је увек иста и износи 64 бита.
  4. Величина типа double је увек иста и изности 128 бита.
  5. ...

2. задатак

Која од следећих тврђења су тачна на програмском језику Јава?

  1. Потпис функције се састоји из имена, броја аргумената и њихових типова.
  2. Декларација садржи потпис, тип резултата и throws клаузулу.
  3. У једној класи може постојати више метода са истим потписом.
  4. Ако се у класи нађе више метода са истом декларацијом, њихова имплементација се у време превођења спаја у једну методу.
  5. ...

3. задатак

Која од следећих тврђења су тачна на програмском језику Јава?

  1. Један пакет се може простирати на више фајлова.
  2. Сваки фајл са изворним кодом који је део неког пакета мора садржати наредбу package imePaketa;.
  3. Различите методе са истом декларацијом се могу налазити у два различита пакета.
  4. Наредба package imePaketa мора бити прва наредба у фајлу.
  5. Један фајл може бити садржан у више пакета.

Објашњење: Одговор под б је иницијално означен као тачан, међутим, у случају подразумеваног пакета ово не важи, тако да одговор није тачан.

4. задатак

Шта исписује следећи програм на програмском језику Јава? Уписати симбол x уколико се програм не преводи.

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();
    }
}

Одговор: 12

5. задатак

Шта може да стоји уместо #### да би се следећи изворни код написан на програмском језику Јава успешно превео?

class Izuzetak extends Exception {}

class Klasa {
    public void m() throws Izuzetak {
        ####
    }
}
  1. тхроw;
  2. тхроw 1;
  3. тхроw неw РунтимеЕxцептион();
  4. тхроw неw Еxцептион();
  5. тхроw неw Изузетак();

Објашњење: Могуће је бацити Izuzetak јер је назначен у throws клаузули и RuntimeException јер је непроверен.

6. задатак

Навести која су тврђења тачна за локалне класе:

  1. Локалне класе дефинисане у нестатичком окружењу окружујуће класе садрже показивач на објекат окружујуће класе.
  2. Референца на локалну класу се може користити ван блока у коме је локална класа дефинисана.
  3. Референца на локалну класу се може проследити као повратна вредност метода.
  4. Референца на локалну класу се може проследити као аргумент методу.

7. задатак

Исти као за Г1/Г2.

8. задатак

Које класе су изведене из Component?

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

9. задатак

Које од следећих тврдњи су тачне у вези са извршним окружењем у .НЕТ (ЦЛР)?

  1. ЦЛР је одговоран за сигурност и заштиту.
  2. ЦЛР не подржава више језика.
  3. ЦЛР подржава вишенитно извршавање.
  4. ЦЛР не подржава ЈИТ превођење.
  5. ЦЛР управља меморијом програма.

10. задатак

Неки код са делегатима. (Недостаје текст задатка.)