Babeş–Bolyai Tudományegyetem, Kolozsvár
Matematikai és Informatikai Kar
Tanév: 2006-2007
I. félév

I.	A tantárgy adatai

A tárgy neve: Fejlett programozási módszerek
Kód: MID0004
Kreditszám: 5
Hol tartják? :
Mikor tartják? :

II.	Az oktatók adatai

Előadás, szeminárium, laboratórium
Név, tudományos cím: Darvay Zsolt, dr.
Elérhetőség (e-mail, telefon): darvay@cs.ubbcluj.ro
Fogadóóra : 

III.	A tantárgy leírása: 

Célok

- az egységesített eljárás használatával továbbfejleszteni a szoftverrendszerek elemzésére és tervezésére vonatkozó ismereteket;
- az UML modellező nyelv alapvető elemeinek elsajátítása;
- egyes tervezési minták elsajátítása annak érdekében, hogy az alkalmazásokat ésszerűen tudjuk strukturálni;
- az objektumok felelősségére vonatkozó szabványos minták alkalmazása;
- a Java és C# programozási nyelvek alapjainak megtanulása;
- olyan tervezési módszerek módszerek elsajátítása, amelyeket sikerrel alkalmaztak Java és .NET könyvtárak tervezésében;
- grafikus felhasználói felülettel rendelkező, eseményvezérelt alkalmazások készítése Java nyelvben.

Képességek 

A fenti céloknak megfelelő képességek elsajátítása.

Módszerek

Előadás, gyakorlati projekt, feladat, egyéni munka, párbeszéd

IV.	Kötelező könyvészet:
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., Programtervezési minták. Újrahasznosítható elemek objektumközpontú programokhoz, Kiskapu, Addison-Wesley, 2004.
4. The Java Tutorial, SUN Microsystems, Inc, 2004.
http://java.sun.com/docs/books/tutorial/index.html

V.	Az oktatásban használt eszközök: 
A  laboratóriumi gyakorlatok alatt az egyetem számítógéphálózatát  veszik igénybe a diákok. A témára vonatkozó egyéb anyagok (könyvek, cikkek, az interneten elérhető erőforrások) használatára is sor kerül.

VI.	A tevékenységek és ellenőrzések/részleges vizsgák órarendje:

Az előadások, szemináriumok és labóratóriumok tervezése 
(E1-E14 előadások, Sz1-Sz14 szemináriumok, L1-L14 laboratóriumok)

1. A Java nyelv és platform. A .NET keretrendszer. (E1)
- A Java nyelv általános jellemzői.
- A Java virtuális gép.
- Összehasonlítás a C++-al.

2. A Java nyelv alapvető elemei és egyes UML jelölések (E2+E3)
- osztályokra és közöttük lévő kapcsolatokra vonatkozó UML jelölések
- Java nyelv:
	- primitív és referencia típusok, tömbök
	- utasítások
	- osztályok és objektumok
	- alosztályok és öröklés
	- csomagok
	- Garbage Collector

3. Interfészek és kivételkezelés (E4)
- absztrakt osztályok
- interfészek
- a Template Method tervezési minta
- kivételkezelés Javaban

4. Bemeneti/kiviteli műveletek a Javaban (E5)
- adatfolyamok
- szerializáció
- a Decorator tervezési minta

5. Grafikus felhasználói felület (E6+E7)
-  AWT és Swing osztályhierarchia
- elrendezésmenedzserek
- eseményvezérelt programozás
- Swing-komponensek

6. A Model-View-Controller és egyéb tervezési minták (E8)
 - Az Observer tervezési minta
- A Strategy tervezési minta

7. A programfejlesztés munkafázisai (E9+E10)
- A felmérés és kidolgozás 
- Követelményfeltárás, használati esetek
- Analízis
- Tervezés

8. GRASP tervezési minták (E11)
- Expert
- Creator
- Low coupling
- High cohesion
- Controller

9. A konstrukció munkafázisa (E12)
- Osztályok, metódusok, jellemzők megvalósítása a tervezési diagramok alapján
- Csomagok, komponensek

10. Az alkalmazások logikai szerkesztése rétegek szerint. Perzisztens objektumok. (E13)
- Egy alkalmazás rétegei
- A Command tervezési minta
- A Broker és Bridge tervezési minták
- A Virtual Proxy tervezési minta

11. A C# programozási nyelv alapjai (E14)
- A Java és a C# összehasonlítása

Laboratóriumok:

L1: Absztrakt adattípus (tároló) – C++ megvalósítás
L2: Absztrakt adattípus megvalósítása Javaban
L3: Interfész alapú programozás
L4: Kivételkezelés – verem és várakozási sor megvalósítása
L5: B/k műveletek. Szerializáció.
L6: Egyszerű GUI alkalmazás.
L7: A Decorator tervezési minta – grafikus felület.
L8: Az Observer tervezési minta.
L9-L14: Projekt – az összes munkafázis megadása.

VII.	Értékelés módja:

A végleges jegyet az alábbi összetevők alapján határozzuk meg:
J1: Tevékenység az órákon (szeminárium, laboratórium, ellenőrző kérdések előadáson) = 30% 
J2. Írásbeli vizsga = 40%
J3. Gyakorlat = 30%
Az írásbeli vizsgára és a gyakorlatra a vizsgaidőszakban kerül sor.
Az írásbeli alapvetően elméleti jellegű, de feladatrészleteket is tartalmazhat. A gyakorlat megoldása számítógépen történik.
Végleges jegy: JEGY=(J1*30+J2*40+J3*30)/100

VIII.	Szervezési kérdések, a különleges esetek kezelése:

A vizsgára való jelentkezés feltétele J1 >= 5. Sikeres a vizsga, ha az összes jegy >= 5.

IX.	Ajánlott, de nem kötelező könyvészet:

1. Angster E. Objektumorientált tervezés és programozás. Java. I. és II. kötet, 4KÖR Bt., 2003, 2004.
2. Fowler, M., Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
3. Larman, C.: Applying UML and Design Patterns: An Introduction to OO Analysis
and Design, Berlin: Prentice Hall, 2000.