Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - linia de studiu română
Limba de predare: Română

SYLLABUS

I. Date generale
Codul	Disciplina	
MID0016	Şabloane de proiectare	

Semestrul	Ore: C+S+L	Categoria	Statutul	
6	2+0+2	specialitate	opţională	

II. Cadre didactice cu norma de bază în Universitate
Numele şi	Titlul	Gradul	Catedra	Tipul activităţii	
prenumele	ştiinţific	didactic		C	S	L	
PÂRV Bazil	Dr. 	Prof.	Limbaje şi Metode de Programare	*			

Cadre didactice asociate
Numele şi	Titlul	Instituţia	Tipul	Tipul activităţii	
prenumele	ştiinţific		postului	C	S	L	

III. Obiectivele disciplinei
La terminarea cursului, studenţii trebuie să:
a) cunoască şi înţeleagă şabloanele de proiectare fundamentale
b) fie capabili să identifice posibilele şabloane în faza de proiectare 
c) ştie să folosească combinaţii de şabloane de proiectare în rezolvarea unor probleme reale
d) posede abilităţile necesare pentru a realiza proiecte şi componente soft reutilizabile	

IV. Conţinutul disciplinei
1. Introducere
2. Studiu de caz
3. Şabloane creaţionale
4. Şabloane structurale
5. Şabloane comportamentale	

V. Bibliografie
1. COOPER, J.W.: The Design Patterns Java Companion, Addison-Wesley, 1998. 
2. COPLIEN, J.: Multi-Paradigm Design, PhD Thesis, Vrije Universiteit Brussel, 2000 [http://www.netobjectives.com/download/CoplienThesis.pdf].
3. ECKEL, B.: Thinking in Patterns with Java [http://www.bruceeckel.com].
4. GAMMA, E., R. HELM, R. JOHNSON, J.  VLISSIDES: Design Patterns - Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.
5. MARTIN, R.C.: Agile Software Development: Principles, Patterns, and Practices, Prentice-Hall, 2002.
6. STELTING, S., O. MAASSEN: Applied Java Patterns, Prentice Hall, 2001. 
7. Data and Object Factory Patterns, [http://www.dofactory.com/patterns/Patterns.aspx]	

VI. Tematica activităţilor didactice pe săptămâni
Activităţi de curs: 2 ore săptămânal, 12 săptămâni
Săpt. 1. Probleme organizatorice. Cap 1. Ce este un şablon de proiectare (DP). Descrierea DP.  Catalogul DP. Probleme de proiectare rezolvate folosind DP. 
Săpt. 2. Cap. 1. Probleme de proiectare rezolvate folosind DP. Cum se alege un DP. Cum se foloseşte un DP.
Săpt. 3. Cap. 2. Studiu de caz.  Enunţul problemei. Probleme de proiectare. Structura documentului.
Formatarea
Săpt. 4. Cap. 2. Studiu de caz. Interfaţa cu utilizatorul. Mai multe standarde de aspect şi interacţiune. Mai multe sisteme de ferestre. Operaţii utilizator. Prelucrări analitice 
Săpt. 5. Cap. 3. Şabloane creaţionale. Abstract Factory. Builder. Factory Method
Săpt. 6. Cap. 3. 3. Şabloane creaţionale. Prototype. Singleton. Concluzii
Săpt. 7. Cap. 4. Şabloane structurale. Adapter. Bridge. Composite.
Săpt. 8. Cap. 4. Şabloane structurale. Decorator. Facade. Flyweight. Proxy. Concluzii
Săpt. 9. Cap. 5. Şabloane comportamentale. Chain of Responsibility. Command. Interpreter. 
Săpt. 10. Cap. 5. Şabloane comportamentale. Iterator. Mediator. Memento. Observer
Săpt. 11. Cap. 5. Şabloane comportamentale. State. Strategy. Template Method. Visitor. Concluzii
Săpt. 12. examen scris
Prezentarea fiecărui şablon respectă etapele: scop, problema rezolvată, descrierea structurii (inclusiv diagrama UML), exemple (un exemplu structural şi cel puţin un exemplu real). 

Activităţi de laborator: 2 ore săptămânal
Lucrările de laborator sunt grupate în trei mini-proiecte.
P1. Şabloane creaţionale - termen săptămâna 5
P2. Şabloane structurale - termen săptămâna 8
P3. Şabloane comportamentale - termen săptămâna 11
Fiecare mini-proiect va fi o aplicaţie cu următoarele cerinţe 
•	să folosească cel puţin trei şabloane de proiectare din familia aferentă (două pentru şabloanele creaţionale).
•	să fie implementată în două limbaje de programare diferite (Java, C#, Visual Basic 6.0, Visual Basic .NET, Python, etc)
•	să aibă documentaţie cu următorul cuprins
1.	Definirea problemei: enunţul problemei de rezolvat
2.	Cerinţe: modelul cazurilor de utilizare, modelul claselor (numai clase, entităţi din domeniul problemei)
3.	Analiza: modelul claselor (atribute + relaţii)
4.	Proiectarea: 
•	modelul detaliat al claselor (atribute + relaţii + metode), 
•	diagrame de secvenţe şi colaborare, diagrame de stare sau activităţi (dacă este cazul), 
•	obiecte specifice soluţiei (unde se folosesc, de ce)
•	şabloane de proiectare folosite, prezentate după tiparul: nume, problema de rezolvat, soluţia (inclusiv diagrame), consecinţe
5.	Implementarea (în două limbaje diferite)
•	pentru fiecare limbaj: avantajele și dezavantajele folosirii lui pt problema respectivă; în ce măsură ajută/încurcă implementarea şabloanelor folosite
•	comparaţie între limbaje asupra gradului de asistenţă în implementarea şabloanelor
    6. Demo executabile
    7. Bibliografie
       Anexe cu textele sursă

Materialele de curs şi de laborator, precum și bibliografia suplimentară sunt disponibile pe serverul Win, în directorul \win\labor\Romana\an3\DesignPatterns	

VII. Metode didactice folosite
Metodele didactice folosite sunt: expunerea (descriere, explicaţie, prelegere cu demonstraţii), conversaţia (dezbatere şi dialog), discutarea unor studii de caz.
Prelegerile se desfăşoară prin proiectarea unor prezentări Powerpoint folosind videoproiectorul. Materialul expus este însoţit de exemplificări implementate în Java. Activitatea de laborator constă din realizarea unor miniproiecte de programare	

VIII. Evaluare
Nota finală va reflecta activitatea de laborator, calitatea mini-proiectelor realizate şi rezultatul la examenul scris (în ultima săptămână, la curs). Se acordă (pe o scală de notare cu 10 puncte):
1p din oficiu
1p prezenta la seminar/laborator
4p mini-proiectele realizate
4p examenul scris	

IX. Bibliografie suplimentară
1.	Data and Object Factory Patterns, [http://www.dofactory.com/patterns/Patterns.aspx]
2.	Object Mentor Homepage, [http://www.objectmentor.com]
3.	Agile Modeling Homepage, [http://www.agilemodeling.com]	

	Decan,							Sef de catedra,

	Data,							Titular curs,
								Prof. Dr.  PÂRV Bazil