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

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


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


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

Тренутна верзија на датум 27. јул 2022. у 21:08

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

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

Поставка

Потребно је решити проблем читалаца и писаца у дистрибуираном окружењу. Читаоци и писци представљају клијентске програме који користећи централни сервер комуницирају и приступају датотекама на серверу.

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

Решење