This shows you the differences between two versions of the page.
poo-ca-cd:laboratoare:visitor [2024/11/10 17:39] silvia_elena.nistor |
poo-ca-cd:laboratoare:visitor [2024/11/13 09:56] (current) silvia_elena.nistor [Exerciţii] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 7: Visitor pattern ===== | + | ===== Laboratorul 6: Visitor pattern ===== |
**Video introductiv:** [[https://www.youtube.com/watch?v=_mfLYYInv6c| link ]] | **Video introductiv:** [[https://www.youtube.com/watch?v=_mfLYYInv6c| link ]] | ||
Line 260: | Line 260: | ||
==== Exerciţii ==== | ==== Exerciţii ==== | ||
- | Dorim să prelucrăm forme geometrice, pe care să le afișăm în diverse formate: text și JSON [https://datatracker.ietf.org/doc/html/rfc8259]. Pentru un design decuplat între formele prelucrate și tipurile de formate dorite, implementați conversia folosind patternul Visitor. | + | Dorim să prelucrăm forme geometrice, pe care să le afișăm în diverse formate: text și JSON https://datatracker.ietf.org/doc/html/rfc8259. Pentru un design decuplat între formele prelucrate și tipurile de formate dorite, implementați conversia folosind patternul Visitor. |
Problema de pe DevMind va avea două task-uri, corespunzătoare celor două tipuri de Visitor. Pentru simplitatea implementării acestor Visitors, vă sugerăm să urmăriți TODO-urile din schelet. | Problema de pe DevMind va avea două task-uri, corespunzătoare celor două tipuri de Visitor. Pentru simplitatea implementării acestor Visitors, vă sugerăm să urmăriți TODO-urile din schelet. | ||
- | * Vom avea trei tipuri de forme geometrice care implementează interfața comună "**Shape**": **Dot**, **Circle**, **Triangle**. Aceste tipuri de forme vor accepta obiecte Visitor pentru a putea permite afișarea lor în cele două formate. | + | * Vom avea trei tipuri de forme geometrice care implementează interfața comună "**Shape**": **Dot**, **Circle**, **Rectangle**. Aceste tipuri de forme vor accepta obiecte Visitor pentru a putea permite afișarea lor în cele două formate. |
* Vom avea două tipuri de Visitor care implementează interfața comună "**Visitor**": **TextVisitor** și **JsonVisitor**. Fiecare Visitor va implementa metoda visit(), care va aplica modalitatea de afișare specifică pe obiectul primit ca parametru. | * Vom avea două tipuri de Visitor care implementează interfața comună "**Visitor**": **TextVisitor** și **JsonVisitor**. Fiecare Visitor va implementa metoda visit(), care va aplica modalitatea de afișare specifică pe obiectul primit ca parametru. | ||
* Scheletul conține în fiecare clasă copil a tipului Shape, câmpuri specifice formei geometrice. Pentru acestea, va trebui să creați getters și setters. | * Scheletul conține în fiecare clasă copil a tipului Shape, câmpuri specifice formei geometrice. Pentru acestea, va trebui să creați getters și setters. |