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	
MID0004	Metode avansate de programare	

Semestrul	Ore: C+S+L	Categoria	Statutul	
3	2+1+2	specialitate	obligatorie	

II. Cadre didactice cu norma de bază în Universitate
Numele şi	Titlul	Gradul	Catedra	Tipul activităţii	
prenumele	ştiinţific	didactic		C	S	L	
LAZAR Ioan	Dr. 	Lect.	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
* 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	

IV. Conţinutul disciplinei
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	

V. 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

VI. Tematica activităţilor didactice pe săptămâni

VII. Metode didactice folosite

VIII. 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. 	

IX. Bibliografie suplimentară

	Decan,							Sef de catedra,

	Data,							Titular curs,
								Lect. Dr.  LAZAR Ioan