ОО2/К2 2021
- За питања са више одговора, тачни одговори су подебљани и уоквирени.
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени: овако.
- Притисните на следеће дугме како бисте их сакрили или открили:
Г1
1. задатак
Означити тачна тврђења на програмском језику Јава:
- Ако конструктор надкласе нема конструктор без параметара(но-арг) потребно је експлицитно позвати тај конструктор у првој линији конструктора посматране класе
- Конструктор надгласе ће бити имплицитно позван ако постоји и без параметра је
- Конструктор надкласе се може експлицитно позвати именом те класе.
2. задатак
3. задатак
4. задатак
Шта уписује следећи код на програмском језику Јава? (Уписати 0 ако се програм не преводи
interface A { default void m() { System.out.print("A.m()"); } }
interface B { default void m() { System.out.print("B.m()"); } }
public class C implements A,B {
public void m() { System.out.print("C.m()"); A.super.m(); B.super.m(); }
public static void main(String[] arguments) {
C c = C Test();
c.m();
}
}
Одговор: C.м()А.м()Б.м()
5. задатак
6. задатак
Шта се може написати уместо $$$ како би се следећи код на програмском језику Јава исправно извршавао и исписивао 3?
class Spoljna {
int x = 1;
class Unutrasnja {
int x = 2;
public void m(int x) {
System.out.println($$$);
}
}
}
public class Main {
public static void main(String[] arguments) {
new Spoljna().new Unutrasnja().m(3);
}
}
тхис.xxсупер.xСпољна.тхис.xСпољна.x
7. задатак
Означити тачна тврђења на програмском језику Јава:
- финаллy блок се извршава само уколико се у трy блоку баци изузетак.
- финаллy блок се извршава само уколико се у трy блоку не баци изузетак.
- финаллy блок се извршава без обзира на то да ли је у трy блоку бачен изузетак.
- Може постојати само један финаллy блок.
- У финаллy блоку може бити бачен изузетак.
8. задатак
9. задатак
Означити тачна тврђења на програмском језику Јава:
- Позив интеррупт над блокираном нити методом јоин() изазива изузетак ИнтерруптедЕxцептион.
- Позив интеррупт над блокираном нити методом јоин() изазива изузетак ТхреадДеатх.
- Позив интеррупт над блокираном методом јоин() нит се деблокира.
- Позив интеррупт над блокираном нити методом јоин() поставља интерруптед статус
- Позив интеррупт над блокираном нити методом јоин() не поставља интерруптед статус.
10. задатак
Шта је тачно за следећи код на програмском језику Јава?
public class Test {
public static void main(String[] arguments) {
Thread t1 = new Thread(() -> { while (true); });
t1.setDaemon(false);
t1.start();
}
}
- Референца т1 показује на демонску нит.
- Јава виртуелна машина (ЈВМ) завршава свој рад након завршетка главне функције.
- Линија са сетДаемон у коду не мења демонски статус нити на коју показује т1.
- Након извршења главне функције се не излази из програма јер има још корисничких нити за извршавање.
- Линија са сетДаемон у коду не мења ништа, односно нема ефекта
Г2
1. задатак
Означити тачна тврђења на програмском језику Јава:
- Експлицитни или имплицитни позив конструктора надкласе се може избећи ако се у конструктору изведене класе позове неки други конструктор те исте класе.
- Ако се користи, позив другог конструктора исте класе мора бити прва наредба у конструктору.
- Конструкција објекта се може делегирати позивом једног конструктора из другог конструктора.
- Рекурзију у делегирању конструктора детектује преводилац.
- Дозвољено је у конструктору прво позвати конструктор надкласе а затим делегирати конструкцију неком другом конструктору.
2. задатак
Означити тачна тврђења на програмском језику Јава:
- Референца на неки интерфејс може показивати на литерал нулл.
- Сви интерфејси су изведени из класе Интерфаце у пакету јава.ланг.
- Референци на неки интерфејс може се доделити објекат било које класе која проширује[1] тај интерфејс.
- Референци на интерфејс се може доделити објекат који се добије када се са друге стране алокатора
newнађе назив тог интерфејса. - Референца на неки интерфејс се може доделити референци типа Објецт.
3. задатак
Шта исписује следећи код на програмском језику Јава? Уколико се програм не компајлира, уписати 0.
interface A { default void m() { System.out.println("A.m()"); } }
class C { public void m() { System.out.println("C.m()"); } }
public class Test extends C implements A {
public static void main(String[] arguments) {
Test t = new Test();
t.m();
}
}
Одговор: C.м
4. задатак
Анонимна класа на програмском језику Јава може садржати:
- конструктор
- нестатичке методе
- статичке методе
- нестатичка поља
- статичка поља
5. задатак
Шта се може написати уместо ### како би се следећи код на програмском језику Јава преводио исправно?
interface Calc {
int m(int a, int b);
}
public class Test {
public static void main(String[] arguments) {
###
}
}
Цалц ц = (инт а, инт б) -> а + б;Цалц ц = (инт а, инт б) -> { а + б };Цалц ц = (инт а, инт б) -> { инт р = а + б; ретурн р; };Цалц ц = (инт а, инт б) -> ретурн а + б;Цалц ц = (инт а, инт б) -> { ретурн а + б; };
6. задатак
Шта се може написати уместо $$$ како би се следећи код на програмском језику Јава исправно извршавао и исписивао 2?
class Spoljna {
int x = 1;
class Unutrasnja {
int x = 2;
public void m(int x) {
System.out.println($$$);
}
}
}
public class Main {
public static void main(String[] arguments) {
new Spoljna().new Unutrasnja().m(3);
}
}
xтхис.xсупер.xСпољна.тхис.xСпољна.x
7. задатак
Означити тачна тврђења на програмском језику Јава:
- финаллy блок може да постоји без цатцх блока.
- финаллy блок се извршава само уколико се у цатцх блоку баци изузетак.
- финаллy блок се извршава само уколико се у цатцх блоку не баци изузетак.
- финаллy блок се извршава без обзира на то да ли је у цатцх блоку бачен изузетак.
- финаллy блок се извршава иако не дође до грешке.
8. задатак
Означити тачна тврђења на програмском језику Јава:
- Метода старт поново покреће нит уколико је завршена.
- Поновни позив старт након завршетка нити је грешка.
- Позив методе старт ставља нит над којом је позвана у ред спремних нити.
- Нит која позива старт се блокира.
- Нит која позива старт се не блокира.
9. задатак
Означити тачна тврђења на програмском језику Јава:
- Позив интеррупт над блокираном нити изазива изузетак ИнтерруптедЕxцептион.
- Позив интеррупт над блокираном нити изазива изузетак ТхреадДеатх.
- Позив интеррупт над блокираном нити је деблокира.
- Позив интеррупт над блокираном нити не мења њено стање.
- Позив интеррупт над блокираном нити не поставља интерруптед статус.
10. задатак
Шта је тачно за следећи код на програмском језику Јава?
public class Test {
public static void main(String[] arguments) {
Thread t1 = new Thread(() -> { while (true); });
t1.setDaemon(true);
t1.start();
}
}
- Референца т1 показује на демонску нит.
- Јава виртуелна машина (ЈВМ) завршава свој рад након завршетка главне функције.
- Линија са сетДаемон у коду не мења демонски статус нити на коју показује т1.
- Након извршења главне функције се не излази из програма јер има још корисничких нити за извршавање.
- Референца т1 не показује на демонску нит.
Г3
1. задатак
Шта ће следећи програм исписати? Написати 0 уколико се програм не преводи.
interface A { default void m() { System.out.print("A.m()"); } }
interface B { default void m() { System.out.print("B.m()"); } }
public class X implements A, B {
public void f() { System.out.print("X.f()"); A.super.m(); B.super.m(); }
public static void main (String[] args) {
X x = new X();
x.f();
}
}
Одговор: 0
Објашњење: Класа X имплементира интерфејсе који имају подразумевану методу истог назива, а притом је не редефинише као свој метод, што је у Јави грешка и такав програм се неће преводити.
2. задатак
Који су искази тачни за метод wait:
- Уколико се позове интеррупт за нит за коју је претходно позвано wаит, таква нит ће се деблокирати.
- Уколико се позове интеррупт за нит за коју је претходно позвано wаит, бациће се изузетак ИнтерруптедЕxцептион.
- Уколико се позове интеррупт за нит за коју је претходно позвано wаит, бациће се изузетак ТхреадДеатх.
- Уколико се позове интеррупт за нит за коју је претходно позвано wаит, неће се променити статус прекида.
3. задатак
Који су искази тачни за метод join:
- Позивом метода јоин без аргумената за неку нит, нит која позива метод чека да нит за коју је метод позван заврши извршавање.
- Метод јоин се може позвати без аргумената.
- Позивом метода јоин за неку нит са задатим временом у милисекундама чекаће се бар толико времена, без обзира на то да ли је нит завршила извршавање пре истека времена.
- Метод јоин не може да се надјача у изведеним класама.
- Позивом метода јоин подразумевано се завршава нит за коју је позван метод.
4. задатак
Шта важи за анонимне класе:
- Анонимне класе могу приступати нестатичким пољима окружујуће класе.
- Анонимне класе могу приступати статичким пољима окружујуће класе.
- Анонимне класе могу приступати непроменљивим параметрима метода који их окружује.
- Анонимне класе могу приступати локалним променљивама окружујућег метода којима се не мења вредност.
- Анонимне класе могу приступати свим локалним променљивама окружујућег метода, као и његовим параметрима, без обзира на то да ли им се мења вредност.
5. задатак
Шта важи за интерфејсе:
- Подразумевано су поља интерфејса јавна, статичка и коначна.
- Подразумевано су методи интерфејса апстрактни и јавни.
- Интерфејси могу дефинисати подразумеване методе.
- Интерфејси могу дефинисати статичке методе.
- Интерфејси могу имати модификатор финал.
6. задатак
Навести шта је тачно за демонске нити:
- Демонство се наслеђује од нити из које је креирана дата нит.
- Демонство може да се мења након покретања нити.
- Покушај промене демонства након покретања бациће ИллегалСтатеЕxцептион.
- Демонске нити ће наставити извршавање након завршетка свих осталих нити.
- Демонство се може мењати само пре покретања нити.
7. задатак
interface Calc {
int f(int x);
}
public class Test {
public static void main(String[] args) {
Test test = new Test();
###
}
}
Шта треба да стоји уместо ### да би програм коректно завршио?
Цалц ц = (а) -> а * а;Цалц ц = а -> а * а;Цалц ц = а -> { а*а; }Цалц ц = б -> б * б;Цалц ц = (инт а) -> а * а;
8. задатак
Које су тврдње тачне за подразумевани уграђени конструктор:
- Уколико није дефинисан ниједан други конструктор, преводилац га аутоматски обезбеђује.
- Подразумевано ће само позвати подразумевани конструктор наткласе.
- Неће позвати подразумевани конструктор наткласе само у случају да је класа директно изведена из класе Објецт.
- Уколико је класа јавна, и он је подразумевано јаван.
- ??? свакако нешто нетачно
9. задатак
public class Spoljna {
int x = 1;
class Unutrasnja {
int x = 2;
void m(int x) {
System.out.print(###);
}
}
public static void main(String[] args) {
new Spoljna().new Unutrasnja().m(3);
}
}
Шта може све стајати уместо ### да би програм коректно завршио и исписао 1?
тхис.xxСпољна.тхис.xОутер.xсупер.x
10. задатак
Навести тачне тврдње за изузетке:
- Сви изузеци у Јави морају бити изведени из класе Еxцептион.
- Сви изузеци који се бацају у методу морају се навести у његовој тхроwс клаузули.
- Преводилац може да провери типове изузетака наведених у тхроwс клаузули.
- Метод може бацити изузетак искључиво експлицитним навођењем уз тхроw.
Напомене
- ↑ Ово није била навлакуша, већ је требало да пише "имплементира".