ОО2/К2 2023

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

Други колоквијум 2023. године одржан је 5. маја и трајао је 20 минута.

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

1. задатак

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

public interface I {
    int x = 1;
}
  1. Поље је имплицитно са пакетским правом приступа.
  2. Поље је имплицитно означено правом приступа public.
  3. Поље је имплицитно означено модификатором final.
  4. Поље је имплицитно означено модификатором const.
  5. Поље је имплицитно означено модификатором static.

2. задатак

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

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

3. задатак

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

  1. Уколико се емитује (баца) изузетак у try блоку, руковаоци изузецима (catch гране) наведени иза try блока испитују се редом којим су наведени.
  2. Дозвољено је да се руковалац надтипа изузетка нађе испред руковаоца подтипа изузетка иза try блока.
  3. Дозвољено је у руковаоцу (catch грани) наредбом throw p; где је p параметар датог руковаоца, проследити ухваћени изузетак "споља", на претходни ниво обраде изузетака.
  4. Руковалац изузецима (catch грана) мора да наведе тачно један параметар типа класе изузетка који треба да обради.[1]
  5. Могуће је након једног извршења try блока у којем је емитован (бачен) изузетак да буде извршено више руковалаца (catch грана) које следе иза датог try блока.

4. задатак

Дата је следећа класа написана на језику Јава:

class Izuzetak extends Exception {}
class IzvedeniIzuzetak extends Izuzetak {}
class IzvedeniIzvedeniIzuzetak extends IzvedeniIzuzetak {}

interface I { void m() throws IzvedeniIzuzetak; }

public class X implements I {
    ???
    public static void main(String[] arg) {}
}

Шта од понуђеног може стајати на месту ??? како би метод m() био правилно дефинисан?

  1. публиц воид м() тхроwс Тхроwабле {}
  2. публиц воид м() тхроwс Изузетак {}
  3. публиц воид м() {}
  4. публиц воид м() тхроwс ИзведениИзведениИзузетак {}
  5. публиц воид м() тхроwс ИзведениИзузетак {}

5. задатак

Спојити наведене случајеве коришћења угнежђених типова са одговарајућим језичким концептом на програмском језику Јава.

  1. Користи се уколико је потребна капсулација једног метода који се тако капсулиран може проследити као аргумент неком методу. Представља имплементацију интерфејса који декларише тачно један апстрактни метод. Ламбда израз
  2. Користи се уколико је потребно увођење новог типа унутар класе S који је доступан и изван класе S уз дефинисање конструктора, поља и метода, а затим дефинисање више од једног објекта тог типа. Објекти ових типова нису у специјалној вези са објектом обухватајућег типа. Статичка угнежђена класа
  3. Користи се уколико је потребно увођење новог типа унутар метода m, уз дефинисање поља, конструктора и метода из којих је могућ приступ локалним непроменљивим подацима и параметрима метода m, а затим дефинисање више од једног објекта тог типа. Локална класа
  4. Користи се уколико је потребно увођење новог типа унутар класе S који је доступан и изван класе S уз дефинисање конструктора, поља и метода, а затим дефинисање више од једног објекта тог типа. Објекти ових типова су у специјалној вези са објектом обухватајућег типа. Нестатичка угнежђена (унутрашња) класа
  5. Користи се уколико је потребно увођење новог типа унутар метода m, уз дефинисање поља и метода из којих је могућ приступ локалним непроменљивим подацима и параметрима метода m и дефинисање искључиво једног објекта тог типа. Није могуће дефинисање конструктора тог типа. Анонимна класа

6. задатак

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

class A {
    public A() { System.out.print("A"); }
    public A(B b) { System.out.print("AB"); }
    public static class B {
        public B() { System.out.print("B"); }
        public B(A a) { System.out.print("BA"); }
    }
}
public class Main {
    public static void main(String[] arg) {
        new A().new B();
    }
}

Одговор: НП

7. задатак

Уколико општи облик ламбда израза означимо са:

(parametri) -> { telo }

Означити све тврдње које су тачне.

  1. Број параметара у листи параметри мора да буде већи од 0.
  2. Могуће је изоставити заграде око листе параметри без обзира на број параметара.
  3. Уколико се тело састоји из само једне return наредбе, и витичасте заграде и кључна реч return могу да се изоставе.
  4. Повратна вредност ламбда израза може да буде и воид.
  5. За све параметре се обавезно наводе и типови, у супротном долази до грешке у превођењу.

8. задатак

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

  1. Враћање имена текуће[2] нити. публиц финал Стринг гетНаме()
  2. Извршавање задатка активног објекта. публиц воид рун()
  3. Чекање да текућа[2] нит заврши своје извршавање. публиц финал воид јоин(лонг мс) тхроwс ИнтерруптедЕxцептион
  4. Провера да ли је текућа нит била прекидана. ништа од понуђеног

9. задатак

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

  1. Надјачани нестатички метод у изведеној класи аутоматски задржава особину synchronized уколико је том кључном речју означен метод основне класе који се надјачава.
  2. Конструктор класе може бити означен кључном речју synchronized.
  3. Наредба може бити обухваћена синхронизованим блоком.
  4. Нестатички метод класе може бити означен кључном речју synchronized.
  5. Статички метод класе може бити означен кључном речју synchronized.

10. задатак

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

class Racun {
    int stanje;
    public Racun(int stanje) { this.stanje = stanje; }

    public synchronized void uvecaj(int iznos) { stanje += iznos; }
    public synchronized void umanji(int iznos) { stanje -= iznos; }
}
public class Test {
    public static void main(String[] args) {
        Racun racun = new Racun(0);
        Runnable r1 = () -> { for (int i = 0; i < 5; i++) racun.uvecaj(100); };
        Runnable r2 = () -> { for (int i = 0; i < 5; i++) racun.umanji(100); };
        Thread uplata = new Thread(r1);
        Thread isplata = new Thread(r2);
        uplata.start();
        isplata.start();
        System.out.println("Vrednost stanja je: " + racun.stanje);
    }
}
  1. Испис не може јединствено да се одреди
  2. Вредност стања је: 0
  3. Вредност стања је: -500
  4. Вредност стања је: 500

Напомене

  1. На колоквијуму је на овом месту писало "може да наведе само један параметар" уместо "мора да наведе тачно један параметар", и професор је признао жалбу на ово питање.
  2. 2,0 2,1 Оваква формулација питања је погрешна (није се мислило на текућу нит него нит над којом је метода позвана) и студентима је на колоквијуму био признаван и одговор "ништа од понуђеног".