←
↑
⇑
↓
→
Ласло Краус |
ИР2ОО1/СИ2ОО1
Испит
14. 9. 2011.
|
Аутори: Игор Тартаља, Ласло Краус и Ђорђе Ђурђевић
Задаци: 1
2
| Напоменe
Поставка задатка 1 (30 поена)
(⇒ почетак)
Одговорити концизно (једна или две реченице) и прецизно на следећа питaња:
а) Ако је за класу P
преклопљен оператор −>
и ако је дефинисан P
p;
на којe начине може да се тумачи израз p->x
?
б) Да ли је дозвољено извођење: (1) структуре из структуре, (2) структуре из класе, (3) структуре из уније?
в) Да ли шаблонска класа може бити апстрактна и да ли функција може бити аргумент шаблона?
Поставка задатка 2 (укупно 70 поена)
(⇒ почетак)
Написати на језику C++ следеће класе (класе опремити оним конструкторима, деструктором и оператором за доделу вредности, који су потребни за безбедно коришћење класа; грешке пријављивати изузецима типа једноставних класа које су опремљене писањем текста поруке):
- (30 поена) Производ садржи случајан цео број у опсегу од 0 до 999. Може да се упише у излазни ток (
it@lt;@lt;pro
) када се пише вредност садржаног броја. Стандардна функција rand()
за свако позивање враћа случајан цео број у опсегу од 0 до RAND_MAX
.
- Апстрактан актер има јединствен, аутоматски генерисан идентификациони број и може да му се саопшти да је протекло одређено време. У случајним временским интервалима између најкраћег и најдужег трајања, која се задају приликом стварања, изврши неку апстрактну радњу. Актер може да се упише у излазни ток (
it<<akt
) када се пише његов идентификатор.
- Часовник служи за обавештавање пријављених актера о протоку времена. Ствара се без пријављених актера, после чега актери могу појединачно да се пријављују (
cas+=&akt
) и одјављују (cas−=&akt
). Кад се часовник покрене (уз задавање кванта и укупног времена), он одбројава време (увећавањем времена за задати квант) и обавештава све пријављене актере о протоку кванта времена до задатог укупног времена уз исписивање тренутног времена на главном излазу на почетку сваког циклуса обавештавања. Часовник не може да се копира ни на који начин.
- (30 поена) Складиште може да садржи задат број података неког типа. Може да се стави један податак у складиште и да се узме један податак из складишта по редоследу стављања. Грешка је ако се покуша ставити податак у пуно складиште или ако се покуша узети податак из празног складишта.
- Произвођач је актер чија се радња састоји од стварања и стављања у задато складиште једног податка неког типа, уз исписивање на главном излазу свог идентификатора и, иза тога, стављеног податка или поруке о грешци.
- Потрошач је актер чија се радња састоји од узимања из задатог складишта једног податка неког типа, уз исписивање на главном излазу свог идентификатора и, иза тога, узетог податка или поруке о грешци.
(10 поена) Написати на језику C++ програм који направи једно складиште производа, направи један часовник, направи неколико произвођача и потрошача производа које пријави часовнику и покрене часовник да са неким кораком ради извесно време. Користити фиксне параметре (не треба ништа учитавати с главног улаза).
- Испит траје 180 минута.
- Рад се предаје искључиво у факултетској вежбанци за испите (-5 поена за неадекватну вежбанку). Није дозвољено имати поред себе друге листове папира.
- Водити рачуна о уредности. Нечитки делови текста ће бити третирани као непостојећи. Решења задатака навести по гoрњем редоследу (-1 поен за лош редослед). Препоручује се рад обичном графитном оловком.
- Решење задатка не треба раздвајати у датотеке. Довољно је за сваку класу навести дефиницију класе и одмах иза ње евентуалне дефиниције метода које нису дефинисане у самој класи.
(⇒ почетак)
←
↑
⇑
↓
→
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs
Copyright © 2012, Laslo Kraus
Последња ревизија: 18.1.2012.