ОО2/Јун 2021
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
Г1/Г2
1. задатак
Која од следећих тврђења су тачна за програмски језик Јава?
- Могуће је именовати променљиве у изворном коду написаном на језику Јава користећи српско ћирилично писмо.
- Величина примитивног податка типа
char
у програмском језику Јава је тачно 8 бита. - Изворни код написан на програмском језику Јава користећи АСЦИИ начин кодирања транслира се пре превођења користећи УТФ-16 начин кодирања.
- Јава користи УТФ-16 начин кодирања за кодирање знака (
char
). - Јава користи искључиво АСЦИИ начин кодирања за кодирање знака (
char
).
2. задатак
Која од следећих тврђења су тачна за главни метод (функцију main
која представља улазну тачку програма) на програмском језику Јава?
- Главни метод мора бити јавно доступан.
- Главни метод мора бити статички метод.
- Главни метод може да има произвољан број параметара произвољног типа.
- Повратна вредност главног метода мора бити типа
void
. - Свака од више класа које образују програм може да дефинише метод
main
, са одговарајућом декларацијом главног метода и различитим телом, од којих сваки може да буде главни метод у различитим покретањима програма.
3. задатак
Која од следећих тврђења су тачна на програмском језику Јава?
- Пакети решавају проблем конфликта имена типова.
- Пакети остварују концепт простора имена сличан концепту
namespace
у језику C++. - По конвенцији, имена пакета се пишу искључиво великим словима.
- Пакет представља скуп логички повезаних типова објеката (на пример, класа, интерфејса).
- Пакети утичу на право приступа садржаним типовима и члановима типова.
4. задатак
Шта исписује следећи програм на програмском језику Јава? Уписати симбол x
уколико се програм не преводи.
interface I {
static void m() {
System.out.print(1);
}
}
class B {
public static void m() {
System.out.print(2);
}
}
class D extends B implements I {
public D() {
m();
B.m();
}
}
public class Test {
public static void main(String args[]) {
new D();
}
}
Одговор: 22
Објашњење: Позив m()
позива наслеђени метод класе B
јер се статички метод интерфејса мора позвати експлицитно преко назива интерфејса.
5. задатак
Шта може да стоји уместо #### да би се следећи изворни код написан на програмском језику Јава успешно превео?
public class Test {
public static void main(String[] args) {
try {
####
} catch (Exception e) {}
}
}
тхроw 1;
тхроw неw Тхроwабле();
тхроw неw Еxцептион();
тхроw;
тхроw неw Објецт();
Објашњење: Изузетак који се баца кроз throw
на програмском језику Јава мора бити изведен из Throwable
. Бацање Throwable
се овде неће превести јер метода не хвата нити декларише у throws
клаузули Throwable
.
6. задатак
Која од следећих тврђења су тачна за програмски језик Јава?
- Локалну класу могуће је дефинисати унутар метода класе.
- Локалну класу могуће је дефинисати унутар конструктора класе.
- Локалну класу могуче је дефинисати унутар иницијализационог блока класе.
- Локалну класу могуће је дефинисати унутар дефиниције класе, ван било ког блока кода.
- Локалну класу могуће је дефинисати унутар маин функције.
7. задатак
Дат је следећи програмски код написан на програмском језику Јава.
class Brojac {
private int br = 0;
public void inkrement() { br++; }
public int dajBroj() { return br; }
}
public class Test {
public static void main(String args[]) throws InterruptedException {
Brojac brojac = new Brojac();
Thread[] niti = new Thread[10];
for (int i = 0; i < niti.length; i++) niti[i] = new Thread(() -> { brojac.inkrement(); });
for (int i = 0; i < niti.length; i++) niti[i].start();
for (int i = 0; i < niti.length; i++) niti[i].join();
System.out.print(brojac.dajBroj());
}
}
Које од следећих тврдњи су тачне за приказани код?
(Изаберите један одговор)
- Програмски код се успешно преводи и извршава. Приликом извршавања програма на стандардном излазу увек се исписује вредност 10.
- Програмски код се успешно преводи и извршава. Приликом извршавања програма на стандардном излазу може се, али не мора, исписати вредност 10.
- Програмски код се не преводи успешно.
- Програмски код се успешно преводи и извршава. Приликом извршавања програма на стандардном излазу увек се исписује вредност 0.
- Програмски код се успешно преводи, али се приликом извршавања емитује изузетак ИнтерруптедЕxцептион.
Објашњење: Методи класе Brojac
нису синхронизовани, тако да је технички могуће да br++
заправо прво дохвати вредност br
, онда буде прекинута од стране неке друге нити, па при повратку увећа прочитану вредност за 1 и упише у br
, тиме газећи вредност које су претходне нити после прекида уписале.
8. задатак
Класа Menu
изведена је директно из класе:
MenuContainer
MenuComponent
MenuBar
Component
MenuItem
9. задатак
Која од следећих тврдњи је тачна?
(Изабрати више одговора)
- Програми писани за извршење на платформи .НЕТ се преводе у међукод МСИЛ.
- Једна од циљних карактеристика радног оквира .НЕТ је интеграција система коришћењем отворених стандарда за размену података какав је XМЛ.
- Извршни склоп (ассемблy) за .НЕТ може бити у само једном или више фајлова.
- Извршно окружење (ЦЛР) радног оквира .НЕТ извршава програм из фајла који садржи преведени C++ програм на машински језик рачунара домаћина.
- Језик Јава је стандард међународне организације за стандардизацију ИСО, за разлику од језика C# који није стандардизован.
10. задатак
Шта исписује следећи програм на језику C#?
class Program {
static void M1(ref int i) { System.Console.Write(i++ + " "); }
static void M2(ref int i) { System.Console.Write(i/2 + " "); }
static void M3(ref int i) { System.Console.Write(i-- + " "); }
public delegate void Delegat(ref int i);
public static void Main(string[] args) {
Delegat d1 = new Delegat(M1);
Delegat d2 = new Delegat(M2);
Delegat da = d1 + d2;
Delegat d = da + d1;
d += new Delegat(M3) + da;
d -= d1;
d -= d2;
d -= new Delegat(M3);
int i = 3;
d(ref i);
}
}
Одговор: 3 2 4
Објашњење: У d
се при стварању додају M1
и M2
(из da
) па поново M1
. Затим се додају M3
и поново M1
и M2
(из da
). Онда се уклањају M1
, M2
и M3
са краја листе позива па остају само M1
, M2
и M1
у делегату. После извршавања првог M1
испис је 3 а вредност је 4, после M2
испис је 2 а вредност остаје иста, и после другог M1
испис је 4 и вредност је 3.
Г3/Г4
1. задатак
Које од следећих тврђења је тачно на програмском језику Јава?
- Величина типа
double
је зависна од имплементације. - Величина типа
double
је увек иста и износи 32 бита. - Величина типа
double
је увек иста и износи 64 бита. - Величина типа
double
је увек иста и изности 128 бита. - ...
2. задатак
Која од следећих тврђења су тачна на програмском језику Јава?
- Потпис функције се састоји из имена, броја аргумената и њихових типова.
- Декларација садржи потпис, тип резултата и
throws
клаузулу. - У једној класи може постојати више метода са истим потписом.
- Ако се у класи нађе више метода са истом декларацијом, њихова имплементација се у време превођења спаја у једну методу.
- ...
3. задатак
Која од следећих тврђења су тачна на програмском језику Јава?
- Један пакет се може простирати на више фајлова.
- Сваки фајл са изворним кодом који је део неког пакета мора садржати наредбу
package imePaketa;
. - Различите методе са истом декларацијом се могу налазити у два различита пакета.
- Наредба
package imePaketa
мора бити прва наредба у фајлу. - Један фајл може бити садржан у више пакета.
Објашњење: Одговор под б је иницијално означен као тачан, међутим, у случају подразумеваног пакета ово не важи, тако да одговор није тачан.
4. задатак
Шта исписује следећи програм на програмском језику Јава? Уписати симбол x
уколико се програм не преводи.
interface I {
static void m() {
System.out.print(1);
}
}
class B {
public static void m() {
System.out.print(2);
}
}
class D extends B implements I {
public D() {
I.m();
B.m();
}
}
public class Test {
public static void main(String args[]) {
new D();
}
}
Одговор: 12
5. задатак
Шта може да стоји уместо #### да би се следећи изворни код написан на програмском језику Јава успешно превео?
class Izuzetak extends Exception {}
class Klasa {
public void m() throws Izuzetak {
####
}
}
тхроw;
тхроw 1;
тхроw неw РунтимеЕxцептион();
тхроw неw Еxцептион();
тхроw неw Изузетак();
Објашњење: Могуће је бацити Izuzetak
јер је назначен у throws
клаузули и RuntimeException
јер је непроверен.
6. задатак
Навести која су тврђења тачна за локалне класе:
- Локалне класе дефинисане у нестатичком окружењу окружујуће класе садрже показивач на објекат окружујуће класе.
- Референца на локалну класу се може користити ван блока у коме је локална класа дефинисана.
- Референца на локалну класу се може проследити као повратна вредност метода.
- Референца на локалну класу се може проследити као аргумент методу.
7. задатак
Исти као за Г1/Г2.
8. задатак
Које класе су изведене из Component
?
BorderLayout
Panel
Graphics
MenuBar
TextField
Checkbox
Choice
Button
9. задатак
Које од следећих тврдњи су тачне у вези са извршним окружењем у .НЕТ (ЦЛР)?
- ЦЛР је одговоран за сигурност и заштиту.
- ЦЛР не подржава више језика.
- ЦЛР подржава вишенитно извршавање.
- ЦЛР не подржава ЈИТ превођење.
- ЦЛР управља меморијом програма.
10. задатак
Неки код са делегатима. (Недостаје текст задатка.)