Differences

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

Link to this comparison view

poo:laboratoare:12 [2021/01/11 13:31]
mihai.nan
poo:laboratoare:12 [2021/01/11 17:57] (current)
carmen.odubasteanu
Line 1: Line 1:
 ===== Laboratorul 12. ===== ===== Laboratorul 12. =====
  
-<​html>​ 
-  <iframe src="​https://​ocw.cs.pub.ro/​courses/​_media/​poo/​laboratoare/​poo_lab12_v1.pdf"​ width="​640"​ height="​720"></​iframe>​ 
-</​html>​ 
- 
-<​hidden>​ 
  
 ==== Probleme ==== ==== Probleme ====
Line 17: Line 12:
 In acest caz veti avea o clasa **Product** care descrie un produs, caracterizat prin pret, care va fi float si un nume, care va fi un String. ​ In acest caz veti avea o clasa **Product** care descrie un produs, caracterizat prin pret, care va fi float si un nume, care va fi un String. ​
  
-In **ShopSingleton** va exista o metoda void numita **//​showProducts//​**,​ care va lista produsele din magazin.  +In **ShopSingleton** va exista o metoda void numita **//​showProducts//​**,​ care va afisa produsele din magazin.  
-Veti avea o clasa Test, in care veti avea urmatoarele metode: ​+Veti avea o clasa Test, in care veti avea implementate ​urmatoarele metode: ​
   * addProduct(Product) - veti adauga un produs in magazin, ​   * addProduct(Product) - veti adauga un produs in magazin, ​
   * removeProduct(Product) - eliminarea unui produs din magazin, ​   * removeProduct(Product) - eliminarea unui produs din magazin, ​
-  * getCheapestProduct() - va returna produsul cel mai ieftin din magazin.+  * getCheapestProduct() - va returna produsul cel mai ieftin din magazin 
 +Si un main in care veti testa aceste metode.
  
 === 2) Factory === === 2) Factory ===
Line 35: Line 31:
  
 === 3) Observer === === 3) Observer ===
-Implementati un mini-sistem de notificare ​de utilizatori ​abonati la un canal Youtube. Veti implementa o clasa-subiect numita **Channel**,​ care va reprezenta un canal si o clasa-observator numita **User**, care va reprezenta un utilizator.+Implementati un mini-sistem de notificare ​a utilizatorilor ​abonati la un canal Youtube. Veti implementa o clasa-subiect numita **Channel**,​ care va reprezenta un canal si o clasa-observator numita **User**, care va reprezenta un utilizator.
 Clasa **Channel** va contine o lista de utilizatori abonati la canalul respectiv, un membru de tip String ce va reprezenta numele canalului si urmatoarele metode: Clasa **Channel** va contine o lista de utilizatori abonati la canalul respectiv, un membru de tip String ce va reprezenta numele canalului si urmatoarele metode:
   * void subscribe (User user) - se va adauga un utilizator in lista de abonati   * void subscribe (User user) - se va adauga un utilizator in lista de abonati
   * void unsubscribe (User user) - se va sterge un utilizator din lista de abonati   * void unsubscribe (User user) - se va sterge un utilizator din lista de abonati
   * void notify (String notification) - se va trimite o notificare (mesaj de tip String) tuturor utilizatorilor din lista de abonati (de exemplu ca s-a incarcat un nou videoclip pe canal)   * void notify (String notification) - se va trimite o notificare (mesaj de tip String) tuturor utilizatorilor din lista de abonati (de exemplu ca s-a incarcat un nou videoclip pe canal)
 +Testati clasele implementate intr-un main.
  
 === 4) Strategy === === 4) Strategy ===
Line 51: Line 48:
   * daca 30 <= aniVechime < 40, atunci se va folosi ThirtyStrategy   * daca 30 <= aniVechime < 40, atunci se va folosi ThirtyStrategy
   * daca 40 <= aniVechime, atunci se va folosi FortyStrategy   * daca 40 <= aniVechime, atunci se va folosi FortyStrategy
-  * +Testati functionarea sistemului intr-un main. 
 === 5) Visitor === === 5) Visitor ===
  
Line 62: Line 60:
 In clasa **Cat**, la visit(Fisier),​ veti folosi citirea din fisiere pentru a afisa continutul unui fisier. In clasa **Cat**, la visit(Fisier),​ veti folosi citirea din fisiere pentru a afisa continutul unui fisier.
  
 +
 +<​hidden>​
 <​HTML>​ <​HTML>​
   <iframe src="​https://​ocw.cs.pub.ro/​courses/​_media/​poo/​laboratoare/​lab12_var_final.pdf"​ width="​640"​ height="​720"></​iframe>​   <iframe src="​https://​ocw.cs.pub.ro/​courses/​_media/​poo/​laboratoare/​lab12_var_final.pdf"​ width="​640"​ height="​720"></​iframe>​
 </​HTML>​ </​HTML>​
  
 +<​html>​
 +  <iframe src="​https://​ocw.cs.pub.ro/​courses/​_media/​poo/​laboratoare/​poo_lab12_v1.pdf"​ width="​640"​ height="​720"></​iframe>​
 +</​html>​
 +</​hidden>​
  
 +<​hidden>​
 {{:​poo:​laboratoare:​laborator12_schelet.zip|Schelet de laborator}} {{:​poo:​laboratoare:​laborator12_schelet.zip|Schelet de laborator}}
  
 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''​.</​hidden>​ 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''​.</​hidden>​
poo/laboratoare/12.1610364716.txt.gz · Last modified: 2021/01/11 13:31 by mihai.nan
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