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

Codul	Disciplina	
MID0004	Metode avansate de programare	

Specializarea	Sem.	Ore: C+S+L	Categoria	Statutul	
Informatică	3	2+1+2	specialitate	obligatorie	
Matematică informatică	3	2+1+2	specialitate	obligatorie	
Ingineria informatiei	3	2+1+2	specialitate	obligatorie	

Titularii de disciplină	Lect. Dr. LAZAR Ioan, ilazar@cs.ubbcluj.ro
Lect. Dr. DARVAY Zsolt, darvay@cs.ubbcluj.ro
Lect. Dr. RUFF Laura Ildiko, laura@cs.ubbcluj.ro
Lect. COJOCAR Grigoreta Sofia, grigo@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
* insusirea unor metode de proiectare care s-au aplicat in procesul de construire a unor biblioteci Java
* insusirea unor cunostinte de baza pentru crearea programelor Java cu interfete grafice utilizator	
Conţinutul	1. Limbajul si platforma Java
- Platforme: Java 
- 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	
Bibliografie	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: 30%
B. Lucrare scrisa: 35%
C. Proba practica: 35%
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.