ОО2/К1 2022
Први колоквијум 2022. године на СИ одсеку се одржао 30. марта. Од области дошле су објекти и класе, извођење, пакети, као и преглед језика Јава.
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
1. задатак
Која од следећих тврђења су тачна за програмски језик Јава?
- Имплементација Јава виртуелне машине зависи од конкретне платформе (архитектуре рачунара, оперативног система) за коју је намењена, али под претпоставком да поштује спецификацију, пружа јединствен "интерфејс" за бајткод.
- Интерпретирање бајткода је ефикасно, али у општем случају слабијих перформанси од извршавања програма на машинском језику.
- Имплементација Јава виртуелне машине је софтвер.
- Превођењем изворног Јава програма добија се бајткод.
- Само програми писани на програмском језику Јава могу да се преведу у бајткод.[1]
2. задатак
За сваки од следећих сегмената кода на језику Јава навести да ли је вредност променљиве резултат једнака вредности труе или фалсе.
- фалсе
String s1 = "Zdravo"; String s2 = "zDrAvO"; boolean rezultat = s1 == s2;
- фалсе
String s1 = new String("Zdravo"); String s2 = "Zdravo"; boolean rezultat = s1 == s2;
- фалсе
String s1 = new String("Zdravo"); String s2 = new String("Zdravo"); boolean rezultat = s1 == s2;
- труе
String s1 = "Zdravo"; String s2 = "Zdravo"; boolean rezultat = s1 == s2;
3. задатак
Која од следећих тврђења су тачна за програмски језик Јава?
- Низови су објекти, који представљају серију података неког типа.
- Након креирања низа објеката
nizX
класеX
наредбомX[] низX = неw X[10];
сви елементи низа који представљају референце иницијализовани су наnull
.[2] - Приступ елементу низа (индексирање) вредношћу индекса ван дозвољеног опсега производи изузетак
IndexOutOfBoundException
. - ...
4. задатак
Које тврдње су тачне за главни метод маин на програмском језику Јава?
- Метод маин мора да има повратну вредност типа инт.
- Метод маин може да буде дефинисан без параметара.
- Метод маин мора да има модификатор статиц.
- Метод маин увек враћа резултат 0 када се успешно изврши.
- Апликација може да има више маин метода.
5. задатак
Шта може да стоји уместо ####
да би се следећи код написан на програмском језику Јава успешно превео?
class B {
B b1;
static B b2;
public static void s_f() {}
public void f() {}
public void test() {
####
}
}
с_ф();
Објецт о = тхис.б1;
Објецт о = б2;
- ...
Б.с_ф();
6. задатак
Која од следећих тврђења су тачна на програмском језику Јава?
- Иницијализациони блокови могу да позивају статичке методе класе у којој су дефинисани.
- Иницијализациони блокови могу да буду статички, динамички и аутоматски.
- Иницијализациони блокови су чланови класе.
- Не може да постоји више од једног статичког и нестатичког иницијализационог блока у класи.[3]
- Иницијализациони блокови могу да користе
try
наредбе.
7. задатак
Које тврдње су тачне за пакете на програмском језику Јава?
- Класи која има пакетско право приступа могу да приступе све класе из тог пакета и све класе из потпакета тог пакета.
- Пакет
A.X
може да постоји и ако пакетA
није дефинисан (у програму не постоји наредбаpackage A;
). - Право приступа класи у пакету може бити јавно, пакетско и заштићено.
- Класе из пакета
A.X
имају право приступа свим јавним класама из пакетаA
. - Подразумевано право приступа за чланове класе је приватно.
8. задатак
Којим понуђеним одговором може да се замени ознака #### да би се дати изворни код написан на програмском језику Јава успешно превео?
class B {
public B() {}
public B(int i) {}
}
class D extends B {
public D() {}
public D(int i) {
####
}
}
супер(и);
тхис(и);
тхис();
//
супер(и); тхис();
9. задатак
Које од следећих тврдњи су тачне за програмски језик Јава?
- Дозвољено је коришћење референци типа апстрактне класе.
- Сви методи апстрактне класе морају бити апстрактни.
- Класа са свим конкретним методима може да буде означена модификатором
abstract
. - Могуће је креирање објеката апстрактне класе, ако су сви методи те апстрактне класе конкретни.
- Класа са барем једним апстрактним методом мора да буде означена модификатором
abstract
.
10. задатак
Означити тачну тврдњу која одговара следећем програмском сегменту.
class A implements Cloneable {}
public class Main {
public static void main(String[] args) {
try {
A a = new A();
a.clone();
System.out.println("uspeh");
} catch (CloneNotSupportedException e) {
System.out.println("neuspeh");
}
}
}
- Програм исписује
neuspeh
. - Програм се не преводи.
- Програм исписује
uspeh
.
Напомене
- ↑ Због тога што професор потенцијално није поменуо на предавању да се и други језици преводе у бајткод, овде је призната жалба студентима који су одговор означили као тачан.
- ↑ На колоквијуму је на овом месту грешком писало
X[] низX = неw X();
што није валидна синтакса, па је та жалба касније усвојена. - ↑ Формулација овог одговора на самом колоквијуму гласила је Може да постоји тачно један статички и тачно један нестатички иницијализациони блок. Касније су колегама које су одговор означиле као тачан признати бодови.