КДП/Лаб 2 надокнада 2022 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(Jučerašnji lab 2 po Bogdanovom predanju)
 
м (Prepisan naš drugi lab iz sećanja, možda sam se loše setio doduše)
Ред 1: Ред 1:
{{tocright}}
{{tocright}}
{{нерешено}}
{{нерешено}}
'''Надокнада друге лабораторијске вежбе''' одржана је 22. јуна. Постојала је само једна група.
'''Надокнада друге лабораторијске вежбе''' одржана је 22. јуна.


== Поставка ==
== Поставка ==
Потребно је решити проблем читалаца и писаца у дистрибуираном окружењу. Читаоци и писци представљају клијентске програме који користећи централни сервер комуницирају и приступају датотекама на серверу.
Потребно је решити проблем вожње тобоганом (''The Rollercoaster Problem'') у дистрибуираном окружењу. Посетиоци и парк представљају клијентске програме који користећи централни сервер комуницирају и приступају датотекама на серверу.
* Ради приступања текстуалним датотекама које захтевају читаоци и писци треба имплементирати интерфејс <code>Book</code> који има методе за дохватање и постављање имена датотеке, као и за постављање и дохватање садржаја саме књиге. Интерфејс је дат у прилогу.
* Ради приступања текстуалним датотекама које захтевају посетиоци и парк треба имплементирати интерфејс <code>Photo</code> који има методе за дохватање и постављање имена датотеке, као и за постављање и дохватање садржаја саме фотографије. Интерфејс је дат у прилогу.
* Класа читаоца (<code>Reader</code>), чији је код дат у прилогу, има <code>main</code> методу и која се повезује са сервером ради читања. Серверски порт преко кога се комуницира и IP адреса сервера се уносе као аргументи командне линије. Остали аргументи су датотеке које је потребно читати. Комуникација са сервером се обавља користећи удаљене позиве процедура у програмском језику Јава (<code>java.rmi</code> пакет).
* Класа парка (<code>Park</code>), чији је код дат у прилогу, има <code>main</code> методу и која се повезује са сервером ради управљања тобоганом. Серверски порт преко кога се комуницира и IP адреса сервера се уносе као аргументи командне линије. Остали аргументи су број тобогана којим се управља и број путника које тобоган може да прими. Комуникација са сервером се обавља користећи удаљене позиве процедура у програмском језику Јава (<code>java.rmi</code> пакет).
* Класа писца (<code>Writer</code>), чији је код дат у прилогу, има <code>main</code> методу и која се повезује са сервером ради уписа. Серверски порт преко кога се комуницира и IP адреса сервера се уносе као аргументи командне линије. Остали аргументи су имена књига које је потребно проследити на сервер. Комуникација са сервером се обавља користећи мрежно програмирање у програмском језику Јава (<code>java.net</code> пакет). Користити објектне токове података. На серверу треба да постоји већи број нити - за сваку конекцију по једна. Клијенти и сервер треба све време да држе отворену прикључницу кроз коју комуницирају. Уколико на клијентској или серверској страни дође до прекида везе та нит се прекида и њени ресурси се ослобађају.
* Класа посетиоца (<code>Visitor</code>), чији је код дат у прилогу, има <code>main</code> методу и која се повезује са сервером ради приступања тобогану и дохватању слика са вожње. Серверски порт преко кога се комуницира и IP адреса сервера се уносе као аргументи командне линије. Остали аргументи су број тобогана којим се вози које је потребно проследити на сервер. Комуникација са сервером се обавља користећи мрежно програмирање у програмском језику Јава (<code>java.net</code> пакет). Користити објектне токове података. На серверу треба да постоји већи број нити - за сваку конекцију по једна. Клијенти и сервер треба све време да држе отворену прикључницу кроз коју комуницирају. Уколико на клијентској или серверској страни дође до прекида везе та нит се прекида и њени ресурси се ослобађају.
* Читаоци и писци могу да приступају различитим књигама, тако да може да се деси да два писца у исто време уписују податке, али у различите књиге, или да један пише а да други читају из различитих књига.
* Посетиоци и парк могу да приступају различитим тобоганима, тако да може да се деси да два парка у исто време управљају различитим тобоганима, или да парк управља а да посетиоци приступају различитим тобоганима.
* На серверу се чувају подаци о већем броју књига.
* На серверу се чувају подаци о већем броју књига.
* Синхронизација између нити на серверу се обавља користећи мониторску класу <code>ReadersWriters</code>.
* Синхронизација између нити на серверу се обавља користећи мониторску класу <code>RollercoasterMonitor</code>.
* Потребно је имплементирати интерфејсе <code>Book</code> и <code>RW</code>. Интерфејси који су дати у прилогу морају се користити као такви, без измена.
* Потребно је имплементирати интерфејсе <code>Photo</code> и <code>RollercoasterRMI</code>. Интерфејси који су дати у прилогу морају се користити као такви, без измена.
* Дате <code>main</code> методе у класама читаоца и писца такође није дозвољено мењати, уз изузетак замене <code>null</code> стварањем конкретног објекта на означеним местима.
* Дате <code>main</code> методе у класама парка и посетиоца такође није дозвољено мењати, уз изузетак замене <code>null</code> стварањем конкретног објекта на означеним местима.


== Решење ==
== Решење ==

Верзија на датум 27. јул 2022. у 21:06

Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Надокнада друге лабораторијске вежбе одржана је 22. јуна.

Поставка

Потребно је решити проблем вожње тобоганом (The Rollercoaster Problem) у дистрибуираном окружењу. Посетиоци и парк представљају клијентске програме који користећи централни сервер комуницирају и приступају датотекама на серверу.

  • Ради приступања текстуалним датотекама које захтевају посетиоци и парк треба имплементирати интерфејс Photo који има методе за дохватање и постављање имена датотеке, као и за постављање и дохватање садржаја саме фотографије. Интерфејс је дат у прилогу.
  • Класа парка (Park), чији је код дат у прилогу, има main методу и која се повезује са сервером ради управљања тобоганом. Серверски порт преко кога се комуницира и IP адреса сервера се уносе као аргументи командне линије. Остали аргументи су број тобогана којим се управља и број путника које тобоган може да прими. Комуникација са сервером се обавља користећи удаљене позиве процедура у програмском језику Јава (java.rmi пакет).
  • Класа посетиоца (Visitor), чији је код дат у прилогу, има main методу и која се повезује са сервером ради приступања тобогану и дохватању слика са вожње. Серверски порт преко кога се комуницира и IP адреса сервера се уносе као аргументи командне линије. Остали аргументи су број тобогана којим се вози које је потребно проследити на сервер. Комуникација са сервером се обавља користећи мрежно програмирање у програмском језику Јава (java.net пакет). Користити објектне токове података. На серверу треба да постоји већи број нити - за сваку конекцију по једна. Клијенти и сервер треба све време да држе отворену прикључницу кроз коју комуницирају. Уколико на клијентској или серверској страни дође до прекида везе та нит се прекида и њени ресурси се ослобађају.
  • Посетиоци и парк могу да приступају различитим тобоганима, тако да може да се деси да два парка у исто време управљају различитим тобоганима, или да парк управља а да посетиоци приступају различитим тобоганима.
  • На серверу се чувају подаци о већем броју књига.
  • Синхронизација између нити на серверу се обавља користећи мониторску класу RollercoasterMonitor.
  • Потребно је имплементирати интерфејсе Photo и RollercoasterRMI. Интерфејси који су дати у прилогу морају се користити као такви, без измена.
  • Дате main методе у класама парка и посетиоца такође није дозвољено мењати, уз изузетак замене null стварањем конкретног објекта на означеним местима.

Решење