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

Codul	Disciplina	
MI365	Programare bazată pe componente	

Specializarea	Semestrul	Ore: C+S+L	Categoria	Statutul	
Programare bazată pe componente - în limba engleză	1	2+2+0		obligatorie	
Metode formale în programare - în limba engleză	1	2+2+1		obligatorie	

Titularii de disciplină	Prof. Dr. PÂRV Bazil, bparv@cs.ubbcluj.ro	
Obiective	La terminarea cursului, studenţii trebuie să:
a) posede cunoştinţe sistematice despre fundamentele programării bazate pe componente;
b) aibă o înţelegere clară a termenilor de componentă, interfaţă, polimorfism;
c) cunoască asemănările şi deosebirile dintre programarea bazată pe componente şi programarea orientată pe obiecte în ceea ce priveşte moştenirea şi compunerea;
d) fie avizaţi asupra importanţei aspectelor de scală, granularitate şi arhitectură a componentelor;	
Conţinutul	1. Definiţia componentelor soft
1.1. Termeni de bază: componentă, obiect, modul, interfaţă, reutilizare
1.2. Aspecte de standardizare
2. Componente, interfeţe, reentranţă
2.1. Tipuri de interfeţe pentru componente
2.2. Părţile unui contract
2.3. Relaţia client-server în sisteme procedurale, obiectuale şi bazate pe componente
2.4. Componentele în sisteme distribuite
3. Polimorfismul
3.1. Conceptul de tip de date în limbajele de programare
3.2. Extensibilitatea tipurilor şi extensibilitatea independentă a componentelor
3.3. Siguranţa în funcţionarea sistemelor bazate pe componente
3.4. Evoluţia interfeţelor şi contractelor
4. Modalităţi de implementare a polimorfismului
4.1. Tipuri de moştenire
4.2. Avantajele şi dezavantajele folosirii moştenirii
4.3. Moştenirea de interfeţe
4.4. Delegarea, compunerea, moştenirea şi polimorfismul
5. Aspecte de scală şi granularitate a componentelor
5.1. Impactul componentelor asupra dezvoltării de soft
5.2. Componentele şi procesul de dezvoltare
5.3. Execuţia sistemelor bazate pe componente
5.4. Întreţinerea sistemelor bazate pe componente
6. Arhitectura sistemelor bazate pe componente
6.1. Modalităţi de reutilizare a componentelor
6.2. Tipuri de componente în raport cu modalitatea de reutilizare
6.3. Şabloane de proiectare
6.4. Cadre de aplicaţie
6.5. Arhitectura sistemelor bazate pe componente
7. Stiluri de programare în sistemele bazate pe componente
7.1. Programarea orientată pe conexiuni
7.2. Evenimente şi mesaje
7.3. Interfeţe dispecer şi metaprogramare
7.4. Limbaje script
8. Modele de conectare pentru componente
8.1. Caracteristici generale ale unui model de conectare
8.2. OMG CORBA, OMA
8.3. Sun Java: JavaBeans, Enterprise Java Beans
8.4. Microsoft: COM, ActiveX, COM+, .NET 

Tematica seminariilor/laboratoarelor
Primele seminarii vor fi dedicate trecerii în revistă a surselor de informaţie disponibile pe Internet şi planificării tematicii seminariilor următoare. Seminariile de la 3 la 11 vor consta în prezentarea de referate de către studenţi, iar în seminariile de la 12 la 14 se vor prezenta mini-proiecte.
	
Bibliografie	1. D'SOUZA, DESMOND FRANCIS - WILLS, ALAN CAMERON: Objects, Components, and Frameworks with UML : The Catalysis Approach, Addison-Wesley, 1999.
2. SZYPERSKI, CLEMENS: Component Software. Beyond Object-Oriented Programming, Addison-Wesley (1st ed. 1998, 2nd ed. 2002). 
3. BlackBox Component Builder, [http://www.oberon.ch/BlackBox.html].
4. Component Technology Homepage, [http://www.fja-odateam.com/cop/].
5. Java Platform, Enterprise Edition, Sun Corp., 1999-2004. [http://java.sun.com/j2ee/].
6. Microsoft Component Object Model Technologies, [http://www.microsoft.com/com/ default.mspx].
7. OMG CORBA/IIOP Specifications, [http://www.omg.org/technology/documents/ corba_spec_catalog.htm].
	
Evaluare	Nota finală va reflecta activitatea de seminar/laborator, calitatea proiectului realizat şi rezultatul la examenul scris. Se acordă (pe o scală de notare cu 10 puncte):
1p din oficiu
1p prezenta la seminar/laborator
2p proiectul realizat
2p referatul prezentat.
4p examenul scris