Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo:laboratoare:14 [2019/01/14 11:43]
carmen.odubasteanu
poo:laboratoare:14 [2026/01/12 08:32] (current)
george.tudor1906
Line 1: Line 1:
-===== Laboratorul 14. ===== 
  
-==== Aplicatie Design Patterns ​====+===== Laboratorul 13 – Fluxuri I/O. Funcționale =====
  
-Scopul vostru este să dezvoltați o aplicație care ajută elevii din clasa a 3-a să rezolve expresii artimetice. Aplicația voastră va primi ca input un String ce conține o expresie și va arăta elevului pas cu pas cum se rezolvă expresia. Această aplicație se va numi "​Arithmo"​. Formatul expresiilor de input va fi: **(operand operator operand)** unde operatorul poate fi ''​*,/,​-,​+''​ iar operanzii pot fi valori numerice sau alte expresii. Un posibl input poate fi ''​(2 + ( (9 / 3) * ( (5 * 2) - (6 * 1))))''​. Evolutia expresiei va fi: ''​(2 + (3 * (10 - 6))) -> (2 + (3 * 4)) -> (2 + 12) -> 14''​. 
  
-<iframe src="​https://​ocw.cs.pub.ro/​courses/​_media/​poo/​laboratoare/​lab12_var_final.pdf" width="​640" height="​720"></​iframe>​+{{:​poo:​laboratoare:​arhiva_13.zip|Arhiva laborator}} 
 + 
 + 
 +=== Problema 1 === 
 + 
 +Să se scrie un program pentru afișarea pe ecran a liniilor aflate pe poziții impare 
 +dintr-un fișier text. Fiecare linie va fi precedată de numărul ei și un spațiu. 
 + 
 +În implementare,​ se va folosi un obiect de tip **LineNumberReader**. 
 + 
 +Cerințe: 
 +  * Tratați toate excepțiile care ar putea să apară exact acolo unde apar! 
 +  * Atenție la închiderea fișierelor – să se facă chiar dacă apare excepție la citire! 
 + 
 +Pentru validarea acestei cerințe, puteți folosi fișierul text //​test01.in//​ pus la 
 +dispoziție în arhiva laboratorului. 
 + 
 +=== Problema 2 === 
 + 
 +Să se scrie un program care citește un text de la tastatură și îl salvează într-un 
 +fișier pe disc. Citirea se va face până la introducerea cuvântului **exit**. 
 + 
 +În implementare se va utiliza metoda **readLine()** pentru un obiect de tip 
 +**DataInputStream** sau **BufferedReader**. 
 + 
 +Tratați toate excepțiile care ar putea să apară! 
 + 
 +=== Problema 3 === 
 + 
 +Să se implementeze un program care citește din fișierul //​test02.in//​ un text și 
 +determină numărul de cuvinte din text. 
 + 
 +Pentru citire se vor utiliza un obiect de tip **FileReader** și unul de tip **StreamTokenizer**. 
 + 
 +<code java> 
 +FileReader in = new FileReader(new File("​test02.in"​));​ 
 +StreamTokenizer str = new StreamTokenizer(in);​ 
 +</​code>​ 
 + 
 +=== Problema 4 – Funcționale === 
 + 
 +Realizați o arhitectură unificată, similară cu Collections,​ pentru manipularea listelor 
 +care să conțină:​ 
 + 
 +  * Interfața **Function**,​ parametrizată corespunzător,​ care conține o metodă **execute**,​ având ca parametru un obiect de tip **A** și un rezultat de tip **B**, unde **A** și **B** sunt două tipuri formale; 
 + 
 +  * Interfața **Addition** folosită pentru a calcula suma a două numere de tip **T**, unde **T** este un subtip al lui **Number** (aceasta va conține o metodă **zero** care va întoarce elementul neutru al operației de adunare și o metodă **add**, care primește două obiecte de tip **T** și returnează suma lor); 
 + 
 +  * Doi algoritmi polimorfici:​ **reverse** care inversează elementele unei liste și **sum** care calculează suma elementelor din listă; acești algoritmi trebuie să poată fi folosiți pe implementări diferite de liste, deoarece le abordează la nivel de interfață;​ 
 + 
 +  * O serie de metode care au un comportament similar cu funcționalele din paradigma funcțională. 
 + 
 +Veți porni implementarea de la clasa **ListUtil**,​ pusă la dispoziție în arhiva laboratorului. 
 + 
 +<​hidden>​ 
 +<​HTML>​ 
 +  ​<iframe src="​https://​ocw.cs.pub.ro/​courses/​_media/​poo/​laboratoare/​laborator_13.pdf" width="​740" height="​720"></​iframe
 +</​HTML>​ 
 +</hidden>
  
  
-{{:​poo:​laboratoare:​laborator12_schelet.zip|Schelet de laborator}} 
poo/laboratoare/14.1547458989.txt.gz · Last modified: 2019/01/14 11:43 by carmen.odubasteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0