ОО2/К 2023

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

Колоквијум 2023. godine на РТИ (и осталим ЕР одсецима) одржан је 22. арпила У 9:15 часова (постојала је само једна група). Од области дошли су увод, преглед, класе, пакети, извођење, интерфејси, изузеци и угњеждени типови на програмском језику Java.

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

1. zadatak

Којом командом се следећи програмски код написан у фајлу са именом "Pozdrav.java" преводи и креира бајткод "Pozdrav.class"?

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

2. zadatak

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

  1. goto је резервисана реч и не може се користити за име променљиве.
  2. foreach је резервисана реч и користи се у инструкцији петље за обилазак свих елемената низа.
  3. final је резервисана реч и не може се користити за име променљиве.
  4. const је резервисана реч и не може се користити за име променљиве.
  5. const је резервисана реч која може да се користи алтернативно са резервисаном речју final.

3. zadatak

Не узимајући у обзир угњеждене и обухватајуће (спољашње) класе, спојити наведене модификаторе права приступа са њиховим одговарајућим описом на програмском језику Java?

  1. (без модификатора, подразумевано) Члан је доступан само у коду датог пакета
  2. private Члан је доступан само у класи у којој је дефинисан
  3. public Члан је доступан на свим местима на којима се може приступити и типу у којем је члан дефинисан
  4. protected Члан је доступан само у изведеним поткласама и коду целог пакета у којем се налази класа у којој је члан дефинисан

4. zadatak

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

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

5. zadatak

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

  1. У неком фајлу са изворним кодом једног програма може да постоји декларација package p.sp; иако ни у једном фајлу истог програма не постоји декларација package p;
  2. Могуће је дефинисати тип А у пакету p уколико је истоимени тип већ дефинисан у пакету p.sp.
  3. Уколико постоје пакети p и p.sp увођењем свих чланова пакета p наредбом import p.*; уводе се и сви чланови пакета p.sp.
  4. Типови података у изворној датотеци без декларације пакета биће смештани у безимени (default) пакет.
  5. Могуће је приступити члану са пакетски правом приступа класе А дефинисане у пакету p из метода класе В дефинисане у пакету p.sp.

6. zadatak

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

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

class D extends B {
    public void f(D x) {
        System.out.println(2);
    }
}

public class Test {
    public static void main(String args[]) {
        B b = new B();
        b.f(new D());
        b = new D();
        b.f(new D());
    }
}

Odgovor: 11

Objašnjenje: Ovde se primenjuje overloading, a ne overriding.

7. zadatak

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

interface I {
    static void f() {
        System.out.println(1);
    }
}

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

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

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

Odgovor: 12

8. zadatak

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

  1. public class Main {
        public static void f() {
            throw new Exception();
        }
        public static void main(String args[]) {
            f();
        }
    }
    
    Не преводи се
  2. public class Main {
        public static void f() {
            throw new Exception();
        }
        public static void main(String args[]) {
            try {
                f();
            } catch (Exception e) {}
        }
    }
    
    Не преводи се
  3. public class Main {
        public static void main(String args[]) {
            try {
                throw new Exception();
            } catch (Exception e) {}
        }
    }
    
    Преводи се

9. zadatak

Које дефиниције угњеждених типова на језику Java су исправне?

  1. static class C {}
  2. abstract class C {}
  3. local class C {}
  4. class C {}
  5. final class C {}
  6. static interface I {}
  7. anonymous class {}
  8. interface I {}

10. zadatak

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

interface I {
    int f(int a);
}

public class Test {
    public static void main(String args[]) {
        int b = 3;
        ###
    }
}
  1. I c = (double a) -> a + b;
  2. I c = (int a) -> a + b;
  3. I c = (int a) -> { a = a * a; return a; }
  4. I c = (int a) -> { b--; return a + b; }
  5. I c = (int a) -> { double r = a + b; return r; }