Differences

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

Link to this comparison view

poo-ca-cd:laboratoare:design-patterns-part-one [2025/11/24 10:58]
florian_luis.micu [Dezavantaje]
poo-ca-cd:laboratoare:design-patterns-part-one [2025/12/03 02:25] (current)
florian_luis.micu [Exerciții]
Line 690: Line 690:
 </​code>​ </​code>​
  
-Însă această soluție permite **un singur comportament de afișare** per clasă. Dacă vrem să afișăm același obiect în mai multe formate (TEXT, JSON, XML), nu putem suprascrie ​`show()de trei ori. Ar trebui să delegăm afișarea către clase externe (''​ExporterText'',​ ''​ExporterJson'',​ ''​ExporterXml''​),​ iar dacă folosim overloading pentru acestea, revenim la aceeași problemă: **overloading-ul se decide la compile-time**,​ ignorând tipul real al obiectului.+Însă această soluție permite **un singur comportament de afișare** per clasă. Dacă vrem să afișăm același obiect în mai multe formate (TEXT, JSON, XML), nu putem suprascrie ​''​show()'' ​de trei ori. Ar trebui să delegăm afișarea către clase externe (''​ExporterText'',​ ''​ExporterJson'',​ ''​ExporterXml''​),​ iar dacă folosim overloading pentru acestea, revenim la aceeași problemă: **overloading-ul se decide la compile-time**,​ ignorând tipul real al obiectului.
 </​note>​ </​note>​
  
Line 733: Line 733:
  
 <note tip> <note tip>
-Aceasta este situația clasică unde single dispatch și overloading nu sunt suficiente. Avem nevoie de double dispatch.+Aceasta este situația clasică unde **single dispatch și overloading nu sunt suficiente**. Avem nevoie de **double dispatch**.
 </​note>​ </​note>​
  
Line 843: Line 843:
   - Dorim să separăm algoritmii de structura de date, păstrând clasele vizitabile simple.   - Dorim să separăm algoritmii de structura de date, păstrând clasele vizitabile simple.
  
-Pe scurt: Folosim Visitor când vrem să avem **mai mulți algoritmi** (ex. ExporterPDF,​ ExporterXML,​ ExporterJSON) pentru **mai multe tipuri de entități** (ex. SeightSeeing,​ Industry, City).+**TL;DR:** Folosim Visitor când vrem să avem **mai mulți algoritmi** (ex. ExporterPDF,​ ExporterXML,​ ExporterJSON) pentru **mai multe tipuri de entități** (ex. SeightSeeing,​ Industry, City).
 </​note>​ </​note>​
  
Line 992: Line 992:
 ====== Exerciții ====== ====== Exerciții ======
  
 +<note warning>
 +  * Exercițiile vor fi făcute pe platforma [[https://​code.devmind.ro/​|Devmind Code]]. Găsiți exercițiile din acest laborator în **contestul aferent**.
 +  * Vă recomandăm să copiați scheletul și să faceți exercițiile **mai întâi** în IntelliJ, deoarece acolo aveți acces la o serie de **instrumente** specifice unui IDE. După ce ați terminat exercițiile puteți să le **copiați** pe Devmind Code.
 +</​note>​
 =====Task 1 (8p)===== =====Task 1 (8p)=====
  
poo-ca-cd/laboratoare/design-patterns-part-one.1763974694.txt.gz · Last modified: 2025/11/24 10:58 by florian_luis.micu
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