Sunteți pe pagina 1din 1

Să se scrie o aplicaţie client-server TCP/IP pentru planificarea pe săli a examenelor dintr-o sesiune.

Aplicația va fi alcătuită
din trei proiecte IntellijIdea/Eclipse care vor fi structurate conform specificațiilor următoare.
Proiectul P1. Va defini următoarele clase și interfețe:
1. Clasa Activitate. Este clasă abstractă. Câmpuri private: data (Date), ora (ora de început a activității - int). Clasa va avea
constructor default și constructor de inițializare pentru câmpurile data și ora (în această ordine!), metode de acces pentru
câmpurile private, suprascriere pentru toString. Constructorul de inițializare și metoda setOra vor arunca excepții pentru oră
diferită de 8,10,12,14,16 și 18. Se presupune că o activitate nu durează mai mult de două ore.
2. Clasa Examen. Este derivată din clasa Activitate. Câmpurile private ale clasei sunt: titular (profesorul titular - String),
disciplina (String), nrStudenti (int). Clasa va avea constructor default și constructor de inițializare pentru câmpurile data,
ora, titular, disciplina și nrStudenti (în această ordine!), metode de acces pentru câmpurile private, suprascriere pentru
egalitate după câmpurile data și ora (moștenite), comparator după câmpul data și suprascriere pentru toString.
3. Clasa Sala. Câmpurile clasei sunt: codSala (int), capacitate (numărul de locuri din sala - int), listaExamene (lista
examenelor programate în sală - List<Examen>). Clasa va avea constructor default și constructor de inițializare pentru
câmpurile codSala și capacitate (în această ordine), metode de acces la toate câmpurile private, suprascriere pentru toString,
suprascriere egalitate după codSala și clonare profundă. Adăugarea unui examen în listă se va face prin implementarea
interfeței de mai jos.
4. Interfața Planificare. Interfața este implementată de clasa Sala. În interfață va fi declarată metoda rezervare - rezervarea
sălii pentru un anumit examen. Metoda va primi un obiect Examen și va face rezervarea, daca aceasta este posibilă, prin
adăugarea examenului în lista de examene. Rezervarea este posibilă dacă numărul locurilor este mai mare decât numărul
studenților examinați și nu mai există un examen planificat care să aibă aceeași dată și să înceapă la aceeași oră. , prin
adăugarea examenului în lista de examene. Metoda va întoarce true sau false după cum rezervarea este sau nu este posibilă.
Proiectul va produce o librărie de tip Jar care va fi utilizată în continuare în aplicație de proiectele P2 și P3.
Proiectul P2. Proiectul va constitui componenta server a aplicației și va avea o singură clasă: MainServer care va conține
și metoda statică main. Clasa va conține un câmp privat listaSali de tip List<Sala> cu lista sălilor. Pentru acest câmp vor fi
scrise metode de acces. Clasa va mai conține metodele publice:
citireSali - metoda va citi lista sălilor din tabela SALI și va returna lista sălilor (List<Sala>). Tabela săli se află în baza de
date Java Derby examen atașată proiectului. Structura tabelei: codSala (integer), capacitate (integer).
rezervareSala - metodă care va face rezervarea unei săli pentru examenele primite de la client. Metoda creează ServerSocket,
acceptă conexiuni de la client, primește lista de examene și va face rezervarea invocând metodele rezervare ale obiectelor
Sala din lista de săli, rezervarea fiind făcută în prima sală în care este posibilă rezervarea. Va returna clientului o listă cu
valori true sau false după cum rezervarea a fost făcută sau nu.
salvare - metodă care va salva lista de săli în format XML în fișierul Sali.xml.
Proiectul P3. Proiectul va constitui componenta client a aplicației și va avea o singură clasă: MainClient care va conține și
metoda statică main. Clientul va trimite obiecte Examen serverului, acesta va face rezervarea și va întoarce rezultatul
rezervării (true sau false). Trimiterea obiectelor Examen se va face prin metoda rezervareSali, metodă care va crea
conexiunea cu serverul, va trimite obiectele Examen către server și va primi și afișa rezultatul rezervării. Vor fi trimise cel
puțin 3 obiecte Examen. Acestea pot fi citite din fișier text, pot fi create/inițializate prin constructor cu parametrii la alegere
sau pot fi preluate prin interfața grafica JavaFX.
Punctaj
A - 0.5 puncte. Definire clasă Activitate conform cerințelor (Testare automată)
B - 0.5 puncte. Definire clasă Examen conform cerințelor (Testare automată)
C - 1 punct. Definire clasa Sala conform cerințelor (mai puțin implementarea interfeței Planificare) (Testare automată)
D - 1 punct. Implementare interfață Planificare conform cerințelor (Testare automată)
E - 1 punct. Citire lista săli din tabela SALI (Testare automată)
F - Trimitere obiecte Examen de către client (P3) către server (P2). 0.5 puncte dacă sunt instanțiate direct, 1 punct dacă
sunt citite din fișier text, 2 puncte dacă sunt preluate prin interfața grafică.
G - 1 punct. Procesare examene de către server și efectuare rezervare
H - 1 punct. Returnare rezultat rezervare către client
I - 0.5 puncte. Salvare listă săli în fișier XML
J - 0.5 puncte. Efectuare rezervare în regim multifir
1 punct din oficiu

S-ar putea să vă placă și