Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
FIŞA DISCIPLINEI

Codul	Disciplina	
MID0016	Sabloane de proiectare	

Specializarea	Semestrul	Ore: C+S+L	Categoria	Statutul	
Informatică - linia de studiu română	6	2+0+2	specialitate	optionala	
Matematică informatică - linia de studiu română	6	2+0+2	specialitate	optionala	

Titularii de disciplină	Prof. Dr. PÂRV Bazil, bparv@cs.ubbcluj.ro
Lect. Dr. DARVAY Zsolt, darvay@cs.ubbcluj.ro	
Obiective	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
	
Conţinutul	1. Introducere
1.1. Ce este un şablon de proiectare
1.2. Descrierea şabloanelor de proiectare
1.3. Catalogul şabloanelor de proiectare 
1.4. Probleme de proiectare rezolvate de şabloanele de proiectare
1.5. Cum se alege un şablon de proiectare
1.6. Cum se foloseşte un şablon de proiectare
2. Studiu de caz
2.1. Enunţul problemei
2.2. Probleme de proiectare
2.3. Structura documentului
2.4. Formatarea
2.5. Interfaţa cu utilizatorul
2.6. Mai multe standarde de aspect şi interacţiune
2.7. Mai multe sisteme de ferestre
2.8. Operaţii utilizator
2.9. Prelucrări analitice 
3. Şabloane creaţionale
3.1. Introducere
3.2. Abstract Factory
3.3. Builder
3.4. Factory Method
3.5. Prototype
3.6. Singleton
3.7. Concluzii
4. Şabloane structurale
4.1. Introducere
4.2. Adapter
4.3. Bridge
4.4. Composite
4.5. Decorator
4.6. Facade
4.7. Flyweight
4.8. Proxy
4.9. Concluzii
5. Şabloane comportamentale
5.1. Introducere
5.2. Chain of Responsibility
5.3. Command
5.4. Interpreter
5.5. Iterator
5.6. Mediator
5.7. Memento
5.8. Observer
5.9. State
5.10. Strategy
5.11. Template Method
5.12. Visitor
5.13. Concluzii

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
Trei mini-proiecte, ce vor conţine folosirea şabloanelor de proiectare creaţionale, structurale şi respectiv comportamentale. Fiecare soluţie va fi implementată în două limbaje de programare diferite (Java, C#, Visual Basic 6.0, Visual Basic .NET, Python, etc).

Materialele de curs şi de laborator sunt disponibile pe serverul Win, în directorul ..Patterns
	
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]
	
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