Colocviu POO 2015-2016: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
Fără descriere a modificării
Fără descriere a modificării
Linia 1: Linia 1:
Să se scrie o clasă <code>seriaf.poo.colocviu.Point3D</code> care să stocheze coordonatele unui punct în spațiul tri-dimensional în virgulă mobilă cu dublă precizie.
Să se scrie o clasă <code>seriaf.poo.colocviu.Server</code> care să accepte conexiuni de la clienți și pentru orice client care se conectează, să serializeze un obiect de tip String reprezentand un citat faimos, ales aleator dintr-un vector.


Reguli suplimentare:
Reguli suplimentare:
# Clasa <code>Point3D</code> trebuie să aibă un constructor cu 3 argumente de tip double: x, y și z
# Clasa <code>Server</code> trebuie să aibă un constructor cu un argument de tip int: port. Constructorul nu arunca exceptii.
# Clasa <code>Point3D</code> trebuie să aibă o metodă <code>double getEuclidianDistance(Point3D anotherPoint)</code> care să calculeze distanța euclidiană între punctul curent și punctul primit ca argument.
# Clasa <code>Server</code> trebuie să aibă o metodă <code>String getRandomQuote()</code>, apelabilă fără un obiect de tip <code>Server</code>, și care la fiecare apel întoarcă un String reprezentând un citat dintr-o listă de cel puțin 5 citate (scrise de voi, sau cautate pe Internet). Vezi clasa <code>java.util.Random</code>
# Clasa <code>Point3D</code> trebuie să aibă o metodă <code>double getManhattanDistance(Point3D anotherPoint)</code> care să calculeze distanța Manhattan între punctul curent și punctul primit ca argument.
# Clasa <code>Server</code> trebuie să aibă o metodă <code>void listen()</code>, care să accepte conexiuni de la clienți într-o buclă infinită, pe portul dat constructorului, și pentru fiecare client conectat să serializeze un String obțiunt prin apelul metodei <code>String getRandomQuote()</code>. Această metodă trebuie să poată arunca excepții.
# Clasa <code>Server</code> trebuie să fie executabilă, iar metoda <code>main</code> trebuie să instanțieze un obiect de tip <code>Server</code>, folosind ca port primul argument specificat la execuție și sa apeleze pentru el metoda <code>listen</code>.


Să se scrie o clasă <code>seriaf.poo.colocviu.Triangle</code> care să stocheze date referitoare la un triunghi.
Să se scrie o clasă <code>seriaf.poo.colocviu.Client</code> care să să conecteze la un Server, să citească de la server un String reprezentand un citat pe care să îl afișeze pe ecran.


Reguli suplimentare:
Reguli suplimentare:
# Clasa <code>Triangle</code> trebuie să aibă un constructor cu 3 argumente de tip  <code>Point3D </code> ce reprezintă vârfurile triunghiului. Dacă oricare două puncte se suprapun, sau dacă punctele sunt colineare, se va arunca o excepție de tip <code>IllegalArgumentException</code> cu mesajul “Punctele nu formeaza un triunghi”.
# Clasa <code>Client</code> trebuie să aibă un constructor cu două argumente: String host, int port. Constructorul nu arunca exceptii.
# Clasa <code>Triangle</code> trebuie să aibă trei metode: <code>boolean isEquilateral()</code>, <code>boolean isIsosceles()</code> și <code>boolean isRightAngled()</code> care să întoarcă <code>true</code> dacă triunghiul este echilateral, isoscel sau respectiv dreptunghic.
# Clasa <code>Client</code> trebuie să aibă o metodă <code>String getQuote()</code>, care să se conecteze la un server care rulează host-ul și portul specificat constructorului și să întoarcă un obiect de tip String deserializat dinspre server. Această metodă trebuie să poată arunca excepții.
 
# Clasa <code>Client</code> trebuie să fie executabilă, iar metoda <code>main</code> trebuie să instanțieze un obiect de tip <code>Client</code>, folosind ca host și port primele două argumente specificate la execuție, să apeleze pentru el metoda <code>getQuote</code> și să afișeze string-ul obținut pe ecran.
'''ATENȚIE:''' Două numere de tip double se consideră egale dacă diferența dintre ele, în modul, este mai mică decât 0.0001.
 
Să se scrie o clasă <code>seriaf.poo.colocviu.Main</code>, executabilă, care folosindu-se de un obiect de tip <code>java.util.Scanner</code> să citească 9 valori de tip double dintr-un fișier specificat ca prim argument la execuție, și folosindu-se de clasele de mai sus afișeze:
* "Triunghiul este echilateral. " dacă este echilateral
* "Triunghiul este isoscel. " dacă este isoscel
* "Triunghiul este dreptunghic.\n" dacă este dreptunghic
 
Vezi clasa <code>java.lang.Math</code>.

Versiunea de la data 14 ianuarie 2016 16:03

Să se scrie o clasă seriaf.poo.colocviu.Server care să accepte conexiuni de la clienți și pentru orice client care se conectează, să serializeze un obiect de tip String reprezentand un citat faimos, ales aleator dintr-un vector.

Reguli suplimentare:

  1. Clasa Server trebuie să aibă un constructor cu un argument de tip int: port. Constructorul nu arunca exceptii.
  2. Clasa Server trebuie să aibă o metodă String getRandomQuote(), apelabilă fără un obiect de tip Server, și care la fiecare apel să întoarcă un String reprezentând un citat dintr-o listă de cel puțin 5 citate (scrise de voi, sau cautate pe Internet). Vezi clasa java.util.Random
  3. Clasa Server trebuie să aibă o metodă void listen(), care să accepte conexiuni de la clienți într-o buclă infinită, pe portul dat constructorului, și pentru fiecare client conectat să serializeze un String obțiunt prin apelul metodei String getRandomQuote(). Această metodă trebuie să poată arunca excepții.
  4. Clasa Server trebuie să fie executabilă, iar metoda main trebuie să instanțieze un obiect de tip Server, folosind ca port primul argument specificat la execuție și sa apeleze pentru el metoda listen.

Să se scrie o clasă seriaf.poo.colocviu.Client care să să conecteze la un Server, să citească de la server un String reprezentand un citat pe care să îl afișeze pe ecran.

Reguli suplimentare:

  1. Clasa Client trebuie să aibă un constructor cu două argumente: String host, int port. Constructorul nu arunca exceptii.
  2. Clasa Client trebuie să aibă o metodă String getQuote(), care să se conecteze la un server care rulează host-ul și portul specificat constructorului și să întoarcă un obiect de tip String deserializat dinspre server. Această metodă trebuie să poată arunca excepții.
  3. Clasa Client trebuie să fie executabilă, iar metoda main trebuie să instanțieze un obiect de tip Client, folosind ca host și port primele două argumente specificate la execuție, să apeleze pentru el metoda getQuote și să afișeze string-ul obținut pe ecran.