A tantárgy adatlapja
1. A képzési program adatai
1.1 Felsőoktatási intézmény	Babeș-Bolyai Tudományegyetem	
1.2 Kar 	Matematika és Informatika	
1.3  Intézet	Magyar Matematika és Informatika	
1.4 Szakterület	informatika	
1.5 Képzési szint	alap	
1.6 Szak / Képesítés	Informatika és Matematika-informatika	

2. A tantárgy adatai
2.1 A tantárgy neve	Haladó szintű programozási módszerek	
2.2 Az előadásért felelős tanár neve	Darvay Zsolt	
2.3 A szemináriumért felelős tanár neve	Simon Károly	
2.4 Tanulmányi év	2	2.5 Félév	1	2.6. Értékelés módja	vizsga / kollokvium	2.7 Tantárgy típusa	kötelező –szak/alap	

3. Teljes becsült idő (az oktatási tevékenység féléves óraszáma)
3.1 Heti óraszám	5	melyből: 3.2 előadás	2	3.3 szeminárium/labor	3	
3.4 Tantervben szereplő össz-óraszám	70	melyből: 3.5 előadás	28	3.6 szeminárium/labor	42	
A tanulmányi idő elosztása:	óra	
A tankönyv, a jegyzet, a szakirodalom vagy saját jegyzetek tanulmányozása	21	
Könyvtárban, elektronikus adatbázisokban vagy terepen való további tájékozódás	4	
Szemináriumok / laborok, házi feladatok, portofóliók, referátumok, esszék kidolgozása	21	
Egyéni készségfejlesztés (tutorálás)	3	
Vizsgák	6	
Más tevékenységek: ..................		
3.7 Egyéni munka össz-óraszáma	55	
3.8 A félév össz-óraszáma	125	
3.9 Kreditszám	5	

4. Előfeltételek (ha vannak)
4.1 Tantervi	•	Nincs.	
4.2 Kompetenciabeli	•	Az objektumorientált programozás alapvető fogalmainak ismerete.
•	Osztályok és objektumok a C++ programozási nyelvben.	

5. Feltételek (ha vannak)
5.1 Az előadás lebonyolításának feltételei	•	Táblával és videoprojektorral felszerelt előadóterem.	
5.2 A szeminárium / labor lebonyolításának feltételei	•	Számítógépes terem, C++, Java.	

6. Elsajátítandó jellemző kompetenciák
Szakmai kompetenciák	•	A Java programozási nyelv alapjainak megtanulása.
•	Olyan tervezési módszerek elsajátítása, amelyeket sikerrel alkalmaztak Java könyvtárak tervezésében.
•	Grafikus felhasználói felülettel rendelkező, eseményvezérelt alkalmazások készítése Java nyelvben.
•	Az UML modellező nyelv alapvető elemeinek elsajátítása.	
Transzverzális kompetenciák 	•	A szoftverrendszerek tervezése és az építészetben fellelhető minták közötti hasonlóság felismerése.
•	Matematikai problémák objektumorientált megoldása.	

7. A tantárgy célkitűzései (az elsajátítandó jellemző kompetenciák alapján)
7.1 A tantárgy általános célkitűzése	•	Az objektumorientált programozás és tervezés elmélyítése a Java programozási nyelv alapjainak, és a legfontosabb tervezési minták elsajátítása által.	
7.2 A tantárgy sajátos célkitűzései

	•	Az egységesített eljárás használatával továbbfejleszteni a szoftverrendszerek elemzésére és tervezésére vonatkozó ismereteket.
•	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 programozási nyelv objektumorientált fogalmainak használata grafikus felhasználói felülettel rendelkező eseményvezérelt alkalmazások készítésére.	

8. A tantárgy tartalma
8.1 Előadás	Didaktikai módszerek	Megjegyzések	
1. A Java nyelv és platform
- a Java nyelv általános jellemzői
- a Java virtuális gép
- csomagok a Javaban
- összehasonlítás a C++-al	Előadás		
2. A Java nyelv alapvető elemei
- primitív és referencia típusok, tömbök
- típuskonverzió
- kifejezések és utasítások
- paraméterátadás	Előadás		
3. Osztályok és objektumok
- osztályokra és közöttük lévő kapcsolatokra vonatkozó UML jelölések
- osztálysablonok
- belső osztályok
- inicializátor blokkok
- automatikus szemétgyűjtés	Előadás		
4. Származtatott osztályok
- alosztályok és öröklés
- metódus elfedés és felülírás
- kovariáns visszatérési érték	Előadás		
5. Interfészek és kivételkezelés
- absztrakt osztályok
- interfészek
- kivételkezelés a Javaban	Előadás		
6. Osztálykönyvtárak és tervezési minták
- a parancs és díszítő tervezési minták
- burkoló osztályok
- a lista adatszerkezet
- keresési és rendezési algoritmusok	Előadás		
7. Bemeneti/kiviteli műveletek a Javaban
- bináris adatfolyamok
- karakter alapú adatfolyamok
- szerializáció
- az illesztő tervezési minta
- perzisztens objektumok	Előadás		
8. Grafikus felhasználói felület
-  AWT és Swing osztályhierarchia
- elrendezésmenedzserek
- Swing-komponensek	Előadás		
9. Eseményvezérelt programozás
- eseményosztályok
- eseménydelegációs modell	Előadás		
10. A Model-View-Controller és egyéb tervezési minták
- a megfigyelő tervezési minta
- a stratégia tervezési minta	Előadás		
11. A programfejlesztés munkafázisai
- a felmérés és kidolgozás 
- követelményfeltárás, használati esetek
- analízis
- tervezés	Előadás		
12. GRASP tervezési minták
- Expert
- Creator
- Low coupling
- High cohesion
- Controller	Előadás		
13. A konstrukció munkafázisa
- osztályok, metódusok, jellemzők megvalósítása a tervezési diagramok alapján
- csomagok, komponensek	Előadás		
14. Az alkalmazások logikai szerkesztése rétegek szerint
- egy alkalmazás rétegei
- egyéb tervezési minták	Előadás		
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.	
8.2 Szeminárium / Labor	Didaktikai módszerek	Megjegyzések	
Sz1. Polimorfizmus.	feladat, egyéni munka, párbeszéd		
Sz2. Egyszerű Java programok.	feladat, egyéni munka, párbeszéd		
Sz3. Interfészek.	feladat, egyéni munka, párbeszéd		
Sz4. Kivételkezelés.	feladat, egyéni munka, párbeszéd		
Sz5. Az Observer tervezési minta.	feladat, egyéni munka, párbeszéd		
Sz6. Példa olyan alkalmazásra, amelyre az összes munkafázist tárgyaljuk. Követelményfeltárás, használati esetek, analízis.	feladat, egyéni munka, párbeszéd, gyakorlati projekt		
Sz7. Példa olyan alkalmazásra, amelyre az összes munkafázist tárgyaljuk. Tervezés, implementáció.	feladat, egyéni munka, párbeszéd, gyakorlati projekt		
L1. Absztrakt adattípus (tároló) – C++ megvalósítás	feladat, egyéni munka, párbeszéd		
L2. Absztrakt adattípus megvalósítása Javaban	feladat, egyéni munka, párbeszéd		
L3-4. Interfész alapú programozás	feladat, egyéni munka, párbeszéd		
L5. Kivételkezelés – verem megvalósítása	feladat, egyéni munka, párbeszéd		
L6. Kivételkezelés – várakozási sor megvalósítása	feladat, egyéni munka, párbeszéd		
L7. B/k műveletek.	feladat, egyéni munka, párbeszéd		
L8. Szerializáció.	feladat, egyéni munka, párbeszéd		
L9. Egyszerű GUI alkalmazás.	feladat, egyéni munka, párbeszéd		
L10. Swing alkalmazások	feladat, egyéni munka, párbeszéd		
L11-12: A Decorator tervezési minta – grafikus felület.	feladat, egyéni munka, párbeszéd		
L13-14: Az Observer tervezési minta.	feladat, egyéni munka, párbeszéd		
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.	

9. A tárgy tartalmának összhangba hozása az episztemikus közösségek képviselői, a szakmai egyesületek és a szakterület reprezentatív munkáltatói elvárásaival.
•	A tantárgy tartalma összhangban van a fontosabb egyetemeken oktatott Java programozásra, illetve tervezési mintákra vonatkozó előadásokkal. 

	

10. Értékelés
Tevékenység típusa	10.1 Értékelési kritériumok	10.2 Értékelési módszerek	10.3 Aránya a végső jegyben	
10.4 Előadás 	Az előadás tartalmának folyamatos elsajátítása	Ellenőrző kérdések előadáson	10%	
	Az elméleti anyag ismerete	Írásbeli vizsga	40%	
10.5 Szeminárium / Labor	Szemináriumi tevékenység	Zárthelyi dolgozat	15%	
	Laboratóriumi tevékenység	Laboratóriumi gyakorlatok és házi feladatok	15%	
	A gyakorlati anyag elsajátítása	Gyakorlati vizsga	20%	
10.6 A teljesítmény minimumkövetelményei	
•	 A Java programozási nyelv alapjainak ismerete.
•	Az alapvető tervezési minták alkalmazása objektumorientált tervezési feladatokra.

	

Kitöltés dátuma			Előadás felelőse			Szeminárium felelőse
					Dr. Darvay Zsolt, adjunktus	          Dr. Simon Károly, adjunktus
2012. szept. 25.			...............................			...................................

Az intézeti jóváhagyás dátuma				Intézetigazgató	
2012. szept. 28.						Dr. Szenkovits Ferenc, egyet. docens
..........................