ОО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 изведена је директно из класе:
MenuContainerMenuComponentMenuBarComponentMenuItem
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?
BorderLayoutPanelGraphicsMenuBarTextFieldCheckboxChoiceButton
9. задатак
Које од следећих тврдњи су тачне у вези са извршним окружењем у .НЕТ (ЦЛР)?
- ЦЛР је одговоран за сигурност и заштиту.
- ЦЛР не подржава више језика.
- ЦЛР подржава вишенитно извршавање.
- ЦЛР не подржава ЈИТ превођење.
- ЦЛР управља меморијом програма.
10. задатак
Неки код са делегатима. (Недостаје текст задатка.)