Disciplina: Metode avansate de programare	Cod: MID0004	

Semestrul	Ore: C+S+L	Tipul	Specializarea	
3	2+1+2	obligatorie	Informatică	
3	2+0+2	obligatorie	Matematică informatică	

Cadre didactice indrumatoare	Lect. Dr. LAZAR Ioan, ilazar@cs.ubbcluj.ro
Conf. Dr. NICULESCU Virginia, vniculescu@cs.ubbcluj.ro
Lect. Dr. DARVAY Zsolt, darvay@cs.ubbcluj.ro
Asist. MIHAILA Cristina Aneta, aneta@cs.ubbcluj.ro
Asist. CHISALITA-CRETU Maria Camelia, cretu@cs.ubbcluj.ro	
Obiective	* consolidarea deprinderilor de analiza si proiectare a sistemelor soft prin invatarea unui proces liniar simplu de analiza si proiectare orientata obiect
* insusirea unor elemente de baza ale limbajului de modelare UML
* insusirea unor sabloane de proiectare care se folosesc pentru structurarea logica a aplicatiilor
* aplicarea unor sabloane standard privind alocarea responsabilitatilor pentru obiecte (care obiect sa aiba o anumita functie/responsabilitate?)
* invatarea limbajului Java si C#
* insusirea unor metode de proiectare care s-au aplicat in procesul de construire a unor biblioteci Java si .NET
* insusirea unor cunostinte de baza pentru crearea programelor Java cu interfete grafice utilizator	
Continut	1. Limbajul si platforma Java
- Platforme: Java si .NET
- Elemente sintactice de baza
- Prezentare comparativa cu C++

2. Clase si obiecte
- Clase si asocieri
- Diagrame de clase si obiecte
- Structurarea pe pachete/spatii de nume a tipurilor
- Tratarea exceptiilor

3. Relatii intre clase
- Asocieri, agregari si compuneri
- Mostenire
- Interfete si implementarea interfetelor

4. Biblioteci de clase utile
- Sabloane de proiectare: comanda si decorator
- Incapsularea tipurilor primitive in obiecte 
- Liste si tabele de corespondenta 
- Algoritmi de cautare si sortare

5. Biblioteci pentru intrari-iesiri
- Sabloane de proiectare: adaptare, obiect persistent
- Fluxuri de date binare
- Fluxuri de date orientate pe caractere
- Obiecte serializabile 

6. Construirea interfetelor grafice utilizator
- Sabloanele de proiectare: compunere si "metoda sablon"
- Interfete utilizator abstracte awt (java.awt) si swing (javax.swing)
- Ferestre si meniuri swing (javax.swing)
- Componente grafice: buton, cutie de text, eticheta si containere de componente
- Dispunerea si aranjarea componentelor in containere

7. Tratarea evenimentelor
- Sablonul de proiectare observator/publica-subscrie
- Evenimente pentru ferestre
- Evenimente pentru butoane si meniuri

8. Separarea prezentarii de model
- Sabloane de proiectare: separare domeniu-prezentare si model pentru prezentare
- Componente grafice de tip lista si tabel; Decoratori pentru defilarea continutului acestora (javax.swing)
- Modele si evenimente asociate listelor si tabelelor

9. Elemente avansate pentru construirea interfetelor utilizator
- Sabloane de proiectare: model-prezentare-control, control pentru fereastra si control pentru aplicatie
- Desenarea pe interfete grafice utilizator
- Tratarea evenimentelor mouse

10. Un proces liniar de dezvoltare orientat obiect
- Analiza cerinte: cazuri de utilizare, descrierea scenariilor 
- Analiza: model conceptual si evenimente sistem
- Proiectare: diagrame de interactiuni intre obiecte, diagrame de clase (rafinarea modelului conceptual)
- Implementare: programe Java

11. Alocarea responsabilitatilor
- Sabloane generale de alocare a responsabilitatilor: expert, creator, control, cuplare slaba, coeziune ridicata
- Folosirea sabloanelor in faza de proiectare
- Alte sabloane de proiectare: polimorfism, indirectare, fabricare obiecte

12. Structurarea logica a aplicatiilor pe straturi/nivele
- Straturile unei aplicatii: prezentare, domeniu si sursa de date
- Sabloane pentru stratul/nivelul domeniu: model procedural si model obiectual
- Surse de date: organizarea tabelara a datelor in fisiere text si corespondenta intre diagrame de obiecte si organizari tabelare a datelor

13. Persistenta obiectelor
- Identitatea obiectelor si sabloane de corespondenta intre domeniu si surse de date
- Acces rapid la obiectele persistente (gestiune in memorie - cache)
- Relatii intre obiecte si incarcarea intarziata a obiectelor si sablonul inlocuitor
- Limbajul XML
- Model obiectual pentru documente (DOM)
- Prelucrarea documentelor XML folosind DOM	
Bibliografie selectiva	1. Eckel, B., Thinking in Java (3rd ed.), New York: Prentice Hall, 2002.
2. Eckel, B., Thinking in Patterns with Java, MindView Inc, 2004. 
3. Gamma, E., Helm, R., Johnson, R., Vlissides, J., Design Patterns - Elements of Reusable Object-Oriented Software, Massachusets, Addison-Wesley, 1994. 
4. Larman, C.: Applying UML and Design Patterns: An Introduction to OO Analysis and Design, Berlin: Prentice Hall, 2000.
5. Fowler, M., Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
6. ***, The Java Tutorial, SUN Microsystems, Inc, 2004. http://java.sun.com/docs/books/tutorial/index.html	
Evaluare	Nota finala este calculata astfel: 
A. Activitatea de laborator: 40% 
B. Lucrare scrisa: 30%
C. Proba practica: 30%
Lucrarea scrisa si proba practica sunt sustinute in timpul sesiunii ca si examen final. Lucrarea scrisa consta din intrebari teroretice iar proba practica din rezolvarea unei probleme pe calculator.