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

Előadás

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.

Labor

1.      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