A programozás alapjai 3
VIIIAB00 | Mérnökinformatikus BSc | Félév: 3 | Kredit: 5
A tantárgy célkitűzése
A tárgy alapvető célja, hogy alapozó tárgyként folytassa a számítógépes problémamegoldás módszereinek és alapvető eszközeinek előző félévekben megkezdett megismertetését olyan szinten, hogy azt a hallgatók további tanulmányaik során képesek legyenek hatékonyan alkalmazni. Ezen félév alapvető célkitűzése, hogy további gyakorlatokkal mélyítse az objektumorientált problémamegoldási képességet, megismertesse a hallagtókkal a Java programozási nyelvet, megismertesse a nagymértékben osztálykönyvtárak használatára épülő programfejlesztést, ezen belül az általános megoldásokon (kollekciók, IO, stb) túl speciális problémákra (szálkezelés, XML feldolgozás, grafika és GUI) nyújtott lehetőségeket. Cél továbbá a Szoftvertechnológia c. párhuzamos tárgyban tanult UML modellek Java nyelven való megvalósításának képessége is.
Célkitűzését a tárgy az előző félévekben megszerzett C és C++ nyelvi tudásra alapozva, a Java nyelv megismertetésével éri el. A laborok anyaga folyamatosan követi az előadások tematikáját, azok mélyebb megértését teszi lehetővé.
A tantárgy részletes tematikája
1. Java alapok. Bevezető. Típusok, operátorok, utasítások. Objektumok, osztályok, Interfészek. Package-ek. Kivételkezelés, kódolási stílus.
2. Java I/O. System Class. I/O Basics. I/O filters. Speciális osztályok: pipe, file. Serialization.
3. Utilityk..(Scanner, Random, BigInteger, BigDecimal, szövegfeldolgozás).
4. Java generikus osztályok. Genericitás és öröklés. Összevetés C++ generikus megoldásával. Megközelítések: heterogén kollekció, kasztolás, template.
5. Java kollekciók.. Kollekció-keretrendszer. Collection, Iterator, List, ListIterator, Set, SortedSet, Map, SortedMap. Kollekciók kezelése (java.util.Collections).
6. UML és Java kapcsolata. Asszociációk, aggregációk megvalósítása, jelölése. C++ visszatekintés (kompozíció, destruktor, deep és shallow copy)
7. Szálkezelés. Kölcsönös kizárás, szinkronizálás, jelzések küldése kezelése. Szálbiztos kollekciók. Speciális szálosztályok (java.util.concurrent)
8. Java GUI alapfogalmak. Componensek és konténerek, layout-ok. Esemény-kezelés. Alacsony szintű grafika.
9. Speciális komponensek: menü, dialógbox, stb. Swing és AWT. Swing MVC modellje, JList, JTable, JTree.
10. Automatizált tesztelés Java nyelven. JUnit.
11. XML feldolgozása Javaban: SAX, DOM és JDOM.
12. Naplózás. Log4J. Naplózási szintek. Nemzetköziesítés, lokalizáció.
13. Kitekintés: relációs leképezés JPA-ban, hálózati kommunikáció, RMI.
Labor1. Eclipse alapok, intellisense, help, felépítés, projektfájlok.
2. Hello World, parancssori fordítás, eclipse Java támogatás, csomagkezelés.
3. Java öröklés, kivételek: C++ heterogén kollekciós vizsgapélda Java megoldása.
4. Java IO gyakorlatok (beolvasás fájlból, kiírás, szerializálás, parancssori argumentumok)
5. Java Util: kollekciókezelés, rendezés, iteráció.
6. Java-UML kapcsolat gyakorlása, UML modellező eszközből egyszerű kódgenerálás.
7. Java szálkezelés példa: termelő-fogyasztó, szinkronizálás.
8. Swing alapok. Egyszerű SWING példa: titkosító alkalmazás (Caesar kódoló)
9. SWING MVC: JTable feladat megoldása: rendezés, megjelenítés, speciális renderelés.
10. Alacsonyszintű grafika: egyszerű vektorgrafikus alkalmazás készítése (kör, vonal, négyzetrajzolás)
11. JUNIT példa: kész szoftver JUnit tesztjeinek előállítása, kipróbálása.
12. (XML példa: feldolgozás, generálás.)
13. Feladatbeadás