ОО2/Јун 2023

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Јунски рок 2023. године одржан је 6. јуна у две групе. Прва група(СИ) у 11:30х и друга група(РТИ + остали одсеци) у 12:00х.

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

Г1

1. задатак

Којом командом се следећи програмски код чији је преведени облик - бајткод - дат у фајлу "Поздрав.цласс" може извршити?

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. задатак

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

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

Одговор: 4231

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

3. задатак

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

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. задатак

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

  1. Над методима означеним модификатором финал примењује се статичко везивање.
  2. Модификатор финал је део потписа метода.
  3. Надјачање (полиморфна редефиниција) метода наткласе у поткласи не може да буде означена модификатором финал.
  4. Метод означен модификатором финал спречава изведене класе да га редефинишу.
  5. Статички метод може да буде означен модификаторм финал.

5. задатак

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

  1. Класа наслеђује статичка коначна поља имплементираног интерфејса.
  2. Класа наслеђује подразумеване методе имплементираног интерфејса.
  3. Дозвољено је позвати статички метод м() интерфејса I из неког метода класе К која имплементира дати интерфејс I на начин К.м().
  4. Подразумеваном методу м() имплементираног интерфејса I, класа може да приступи из статичког метода директно и користећи нотацију I.супер.м().
  5. Класа мора да имплементира апстрактне методе имплементираног интерфејса или да буде проглашена апстрактном.

6. задатак

7. задатак

8. задатак

9. задатак

За сваки од следећих врста .НЕТ склопова (енг. ассемблy) навести тип (екстензију) фајла.

  1. Конзолни извршни .еxе
  2. Меморијски управљачки Не постоји
  3. Графички извршни .еxе

10. задатак

Г2

1. задатак

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

  1. Приликом превођења изворног кода на језику Јава, могуће је навести опцију за добијање резултата превођења који представља машински код рачунара домаћина.
  2. Резултат превођења изворног код на језику Јава из једне датотеке типа .јава увек се сместа у тачно једну .цласс датотеку.
  3. Јава виртуелна масина (ЈВМ) преводи изворни код на језику Јава у бајткод.
  4. Преводилац језика Јава преводи изворни код на језику Јава у бајткод.
  5. Јуст ин Тиме (ЈИТ) преводилац преводи изворни код на језику Јава у бајткод.

2. задатак

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

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

Одговор: 4132

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

3. задатак

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

  1. Један фајл са изворним кодом на програмском језику Јава мозе да садржи више дефиниција типова података.
  2. Дозвољено је приступити пакетском члану дефинисаном у пакету п.сп из кода неког типа податка дефинисаног у пакету п.
  3. По конвенцији именовања пакета, за именование кориснички дефинисаних пакета користи се обрнути редослед имена Интернет домена.
  4. Дозвољено је да се наредба импорт тест.*; појави у једном фајлу висе пута.
  5. Типови декларисани у изворној датотеци без декларације пакета неће бити сместени ни у један пакет.

4. задатак

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

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

Одговор: 22

Објашњење: Када оверриде-ујемо методе смемо проширити њихов приступ.


5. задатак

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

  1. Класа мозе да проширује више основних класа у једном кораку извођења.
  2. Пример вишеструког наслеђивања представља класа која проширује другу класу и имплементира више интерфејса.
  3. Супертипове неке класе чине и интерфејси које та класа имплементира.
  4. Интерфејси омогућавају вишеструко наслеђивање у програмском језику Јава.
  5. Програмски језик Јава подржава проширивање (извођење) класа и интерфејса у више корака.

6. задатак

Спојити наведене типове изузетака на програмском језику Јава са одговарајућим исказом који најбоље описује њихову природу.

  1. РунтимеЕxцептион Представља класу непроверених изузетака чији се објекти могу бацати (емитовати) у току нормалног рада Јава виртуелне машине.
  2. Еррор Представља класу непроверених изузетака чији објекти описују озбиљне проблеме које апликација не би требало да хвата и обрађује, а који воде до прекида рада програма.
  3. Тхроwабле Представља класу која се налази у корену хијерархије свих грешака и изузетака.
  4. Еxцептион Представља класу коју би кориснички дефинисани изузеци требало да проширују и чији објекти описују изузетне ситуације које би апликација требало да хвата и обрађује.

7. задатак

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

  1. Позив метода join() без аргумената ће блокирати нит позиваоца док се нит за коју је метод позван не заврши.
  2. Метод join() је дефинисан класи Тхреад.
  3. Позив метода notify() за објекат нити из које је позван метод join() ће блокирати нит позваног објекта.
  4. Метод join() баца проверени изузетак ИнтерруптедЕxцептион.
  5. Метод join() мора да се позове из синхронизованог кода иначе ће бити бачен изузетак ИллегалМониторСтатеЕxцептион.

8. задатак

Које тврдње су тачне за догађаје миша, односно догађаје кретање миша?

  1. Догађај врсте МОУСЕ_МОВЕД се дешава тек када се отпусти дугме миша након померања курзора мишем.
  2. Догађаји миша су догађаји ниског нивоа.
  3. Ако се код извора региструје ослушкивач типа МоусеМотионЛистенер, при отпуштању дугмета миша догодиће се догађај врсте МОУСЕ_РЕЛЕАСЕД и биће позван метод који обрађује овај догађај.
  4. Догађај врсте МОУСЕ_ЦЛИЦКЕД претходи догађају МОУСЕ_РЕЛЕАСЕД.
  5. Догађај врсте МОУСЕ_ЦЛИЦКЕД ће се десити ако се дугме миша отпусти док је курзор на истом месту на којем је дато дугме и притиснуто.

9. задатак

За сваки од следећих врста .НЕТ склопова навести тип (екстензију фајла).

  1. Библиотека за динамичко повезивање .длл [1]
  2. Модул за статичко повезивање .нетмодуле

10. задатак

Шта исписује следећи програм на програмском језику C#? (За програм који се не преводи унети НП. За програм са грешком у извршавању унети 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();
    }
}

Одговор: НП

Напомене

  1. Било је понуђено више одговора.