ОО2/К 2023
Колоквијум 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!");
}
}
java Pozdrav
java Pozdrav.java
javac Pozdrav.java
javac Pozdrav.class
2. zadatak
Која од следећих тврђења су тачна за програмски језик Java?
goto
је резервисана реч и не може се користити за име променљиве.foreach
је резервисана реч и користи се у инструкцији петље за обилазак свих елемената низа.final
је резервисана реч и не може се користити за име променљиве.const
је резервисана реч и не може се користити за име променљиве.const
је резервисана реч која може да се користи алтернативно са резервисаном речјуfinal
.
3. zadatak
Не узимајући у обзир угњеждене и обухватајуће (спољашње) класе, спојити наведене модификаторе права приступа са њиховим одговарајућим описом на програмском језику Java?
- (без модификатора, подразумевано) Члан је доступан само у коду датог пакета
private
Члан је доступан само у класи у којој је дефинисанpublic
Члан је доступан на свим местима на којима се може приступити и типу у којем је члан дефинисанprotected
Члан је доступан само у изведеним поткласама и коду целог пакета у којем се налази класа у којој је члан дефинисан
4. zadatak
Која од следећих тврђења су тачна за кључну реч this
на програмском језику Java?
- Може да се користи за позив другог конструктора исте класе.
- Може да се проследи као ствaрни аргумент неком методу.
- Користи се имплицитно (без навођења) као референца на текући објекат приликом директног именовања нестатичких чланова класе.
- Може да се користи као референца унутар статичких метода.
- Представља референцу на објекат коме се управо приступа.
5. zadatak
Која од следећих тврђења су тачна на програмском језику Java?
- У неком фајлу са изворним кодом једног програма може да постоји декларација
package p.sp;
иако ни у једном фајлу истог програма не постоји декларацијаpackage p;
- Могуће је дефинисати тип
А
у пакетуp
уколико је истоимени тип већ дефинисан у пакетуp.sp
. - Уколико постоје пакети
p
иp.sp
увођењем свих чланова пакетаp
наредбомimport p.*;
уводе се и сви чланови пакетаp.sp
. - Типови података у изворној датотеци без декларације пакета биће смештани у безимени (default) пакет.
- Могуће је приступити члану са пакетски правом приступа класе
А
дефинисане у пакету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 навести да ли се преводи или не.
- Не преводи се
public class Main { public static void f() { throw new Exception(); } public static void main(String args[]) { f(); } }
- Не преводи се
public class Main { public static void f() { throw new Exception(); } public static void main(String args[]) { try { f(); } catch (Exception e) {} } }
- Преводи се
public class Main { public static void main(String args[]) { try { throw new Exception(); } catch (Exception e) {} } }
9. zadatak
Које дефиниције угњеждених типова на језику Java су исправне?
static class C {}
abstract class C {}
local class C {}
class C {}
final class C {}
static interface I {}
anonymous class {}
interface I {}
10. zadatak
Шта може да стоји уместо ### да би се следећи код написан на језику Java успешно превео?
interface I {
int f(int a);
}
public class Test {
public static void main(String args[]) {
int b = 3;
###
}
}
I c = (double a) -> a + b;
I c = (int a) -> a + b;
I c = (int a) -> { a = a * a; return a; }
I c = (int a) -> { b--; return a + b; }
I c = (int a) -> { double r = a + b; return r; }