Disciplina: Programare bazată pe componente	Cod: MI365	

Semestrul	Ore: C+S+L	Tipul	Specializarea	
1	2+2+0	obligatorie	Programare bazata pe componente - în limba engleza	
1	2+2+1	obligatorie	Metode formale în programare - în limba engleza	

Cadre didactice indrumatoare	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	
Continut	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 selectiva	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 scri