Tankocka – Rövid válasz: Java konstansok

Folytatjuk Tankockák blog bejegyzés sorozatunkat. A feladatban 12 db Java konstans értékét kell megadni, számként. Ez a témakör főként a Java SE szoftverfejlesztő tanfolyamunkhoz kötődik. Hasznos ismerni a JDK-beli konstansokat, mert alapvetően befolyásolják egy adatszerkezet, objektum működését, viselkedését akkor is, ha külön nem adjuk meg a létrehozó konstruktorok meghívásakor minden paramétert.

A konstansok hathatnak a memóriafoglalásra, a grafikus komponensek megjelenésre, Meghatározhatják a hálózati kommunikáció időzítését, paraméterezhetik a fájlkezelés működését. Egy-egy algoritmus (például: rendezés, keverés, véletlenszám-generálás) indítását, működését is befolyásolják a konstansok. Vajon hányat tudsz az alábbi konstansok közül? Hogyan, mire hatnak ezek?

SzámOkt 2022

EMT, SzámOkt 2018Az Erdélyi Magyar Műszaki Tudományos Társaság (EMT) Számítástechnika Szakosztálya által – évente – szervezett XXXII. Számítástechnika és Oktatás – SzámOkt Multi-konferencia került megrendezésre Marosvásárhelyen 2022. október 13-16-ig. Társszervező volt a Sapientia Erdélyi Magyar Tudományegyetem Marosvásárhelyi Kar. Párhuzamos rendezvény volt XXIII. Energetika-Elektrotechnika Konferencia – ENELKO 2022 az Erdélyi Magyar Műszaki Tudományos Társaság (EMT) Energetika-Elektrotechnika Szakosztálya és a Magyar Energetikai Társaság (MET) társszervezésében.

A konferencia célja:

  • lehetőséget teremteni az erdélyi és külföldi magyar szakembereknek tudományos eredményeik bemutatására, illetve szakmai kapcsolatteremtésre és tapasztalatcserére,
  • az erdélyi magyar számítástechnikusok – középiskolai és egyetemi tanárok, rendszergazdák, egyetemi hallgatók, vállalkozók, felhasználók – számára találkozási lehetőséget biztosítani egy olyan rendezvényen, melynek keretében beszámolhatnak legújabb tapasztalataikról az oktatás, kutatás terén,
  • hogy egy átfogóbb képet nyújtson a magyar kutatók munkásságáról és eredményeikről, mint az informatika területén dolgozó magyar kutatók/fejlesztők fóruma.

9 témakörben hirdették meg az előadóknak a jelentkezési lehetőséget:

  • Számítástechnika és oktatás,
  • Algoritmika és programozás,
  • Informatikai alkalmazások,
  • Irányítástechnika, automatika, méréstechnika,
  • Képfeldolgozás és mesterséges intelligencia,
  • Elosztott és párhuzamos rendszerek, cloud rendszerek,
  • Hálózati kommunikáció és Internet, IoT, Industry.4.0.,
  • Gazdasági informatika,
  • Biztonsági rendszerek.

Letölthető a konferencia programja. A 23 előadás 3 témakörbe került: Informatikai alkalmazások, Számítástechnika és oktatás, Képfeldolgozás és mesterséges intelligencia.

Már 2015-ben, 2018-ban, 2019-ben és 2020-ban is részt vettem előadóként ezen a konferencián szakmai előadással és magyar nyelvű cikkel. Ezek a publikációs listámban megtalálhatók.

2022-ben a Koronavírus Java projekt – a tervezés és megvalósítás mérföldköveicímű előadásom a konferencia „Informatikai alkalmazások II.” című szekciójába került.

Kivonat: az előadás/cikk szoftverfejlesztő tanfolyamokon használt/használható esettanulmányt ismertet. A Java pro­jekt két különböző weboldalról gyűjt össze adatokat, ezek: https://koronavirus.gov.hu/elhunytak és https://www.worldometers.info/coronavirus/country/hungary/. Az adatokat helyi állományrendszerben tárolja, kon­vertálja, összefésüli, végül némi adattisztítást követően feldolgozza. Az it-tanfolyam.hu Java SE és Java EE szoftverfejlesztő tanfolyamok tematikáinak kapcsolódó elemei: OOP-MVC, swing GUI, eseményvezérelt programozás, szövegfájlok kezelése, hálózati kommunikáció, kivételkezelés. Az előadás/cikk ismerteti a Java projekt tervezésének és megvalósításának fontosabb lépéseit, mérföldköveit.

A cikkem megjelent a konferencia kiadványában.

Az előadásom prezentációját ILIAS e-learning tananyagban tettem elérhetővé tanfolyamaink résztvevői számára.

Az előadásom témája a Java SE szoftverfejlesztő tanfolyam 17-28. óra: Objektumorientált programozás, 29-36. Grafikus felhasználói felület, 37-44. óra: Fájlkezelés alkalmaihoz, valamint a Java EE szoftverfejlesztő tanfolyam 1-4. óra: Elosztott alkalmazások, webszolgáltatások, 5-8. óra: Szálkezelés, párhuzamosság alkalmaihoz kapcsolódik.

Kutatók éjszakája 2022

Kutatók éjszakája

Kutatók éjszakájaA Kutatók Éjszakája nemzetközi rendezvénysorozat 2005-ben indult. Magyarország 2006-ban csatlakozott. Azóta évről-évre egyre több intézmény nyitja meg hazánkban kapuit, szervez érdekes programokat, sok-sok településen, több száz helyszínen, több ezer eseményt meghirdetve sok tízezer érdeklődő/résztvevő látogatónak biztosít tartalmas estét.

Bár a kezdeményezés elsősorban a kutatói pálya népszerűsítését szolgálja, ezért leginkább a tizen- és huszonévesekre számít, az események vonzók és elég érdekesek ahhoz, hogy a kisgyerekektől a legidősebbekig mindenki megtalálja a számára izgalmas programokat. Korábban nagyobb felsőoktatási intézmények és kutatóintézetek szerepeltek döntően, de az utóbbi néhány évben egyre több kisebb intézmény, tehetséggondozással foglalkozó középiskola, cég, egyesület is csatlakozott a rendezvényhez. A Kutatók éjszakája rendezvény minden meghirdetett programja ingyenes.

Rendezvényünk plakátja

Az it-tanfolyam.hu 2022-ben is hirdetett programokat az eseményhez kötődően. Programjainkat elsődlegesen követőinknek, aktív hallgatóinknak és az alumni csoportunkban hirdettük meg, de persze nyílt rendezvényként valósult meg. Az eseményekre regisztrálni kellett a weblapon. A regisztrációs időszak két hétig tartott, szeptember 16-29-ig. Programjainkra szeptember 30-án 21:00-23:55-ig került sor.

21:00-21:35 – Kiss Balázs: Mi az ipar 4.0? Mi az okos gyár?
Az előadó évek óta foglalkozik okos architektúrák fejlődésének történetével, koncepciójával, szoftveres integrációjával és konfigurációjával. Szívesen osztja meg gondolatait, kutatási eredményeit a témáról, beszél saját kisebb és nagyobb léptékű okos projektjeiről. Praktikus tanácsok is előkerülhetnek – igény szerint. Egyensúlyoz a kész komponensek testre szabási lehetőségei és a saját fejlesztés határán. Utóbbi kulcsszavai: hálózati kommunikáció megvalósítása szerver-kliens között vagy peer-to-peer többféle programozási nyelven, autentikáció, autorizáció, protokoll, tömörítés, felhő architektúrák, robotika, robotprogramozás. Az előadó ismerteti az Európai Parlament 2016-os állásfoglalásából kiindulva, hogy milyen mérföldkövek voltak és jelenleg hol tartunk az ipar 4.0 és az okos gyárak tekintetében és mi várható a közeljövőben. A program a Java tanfolyamaink orientáló moduljához kötődik.

21:40-22:15 – Kaczur Sándor: Algoritmus vesebeteg-donorok párosítására
Hogyan működik 2007 óta Nagy-Britanniában a vesebeteg-donorok párosítása? Sima csere 2 pár esetén adódik. 3 pár esetén körbeadják a vesét egymásnak – ez már jóval összetettebb probléma. A felépített óriási adatbázisban akár több száz lehetőség is adódhat. A probléma megfelelő párosítási algoritmus és számítógép nélkül, pusztán emberi erővel megoldhatatlan lenne. Az implementált algoritmus futási ideje mindössze 30 perc. A párosítást követően a következő lépés a műtétek egyidejűsége, és a donor szervek „utaztatása” minden lehetséges úton – földön, vízen, levegőben –, minden lehetséges közlekedési eszközzel. Hogyan működik mindez a gyakorlatban? Milyen korlátok, problémák vannak? Milyen adatok alapján dönthető el a betegek „kompatibilitása”? Ezek közül mi kapcsolódik az egészségügyhöz és mi a szállításhoz? Az előadó próbál válaszokat adni, de lehet, hogy a végén több lesz a kérdés, mint a válasz. Vajon egyáltalán felmerül a párosítási algoritmus hatékonysága ekkora társadalmi hasznosság mellett? A program a Java tanfolyamaink orientáló moduljához kötődik.

22:20-22:55 – Hollós Gábor: Objektumorientált programozás vs. funkcionális programozás Java nyelven
Az előadó ismert adatszerkezeteket és ismert programozási tételeket használva összehasonlítja a hatékonyság szempontjai alapján egy-egy feladat különböző megvalósításait. Referenciaként tekint az objektumorientált megoldásokra és ehhez képest kiderül, hogy a Java 8-tól elérhető funkcionális elemek milyen változásokat jelenthetnek. Vajon kevesebb memóriát használnak? Gyorsabbak? Egyszerűbbek/bonyolultabbak? Könnyebben megérthetőek, karbantarthatóak, dokumentálhatóak? Hogyan érdemes egyensúlyozni az általunk leprogramozott, a kollekciók hagyományos beépített műveleteit használó és a lambda kifejezések között? Kiderül. A program a Java SE szoftverfejlesztő tanfolyamunk tematikájához kötődik.

23:00-23:25 – Németh András, Tóth-Szabó Tamás: Karrierváltás után – néhány hónap KKV-s tapasztalatai szoftverfejlesztőként
Mennyire könnyű ma szoftverfejlesztőként elhelyezkedni szakirányú felsőfokú végzettség nélkül? Milyen kihívásokkal találkozhatunk a felvételi folyamat során? Milyen elvárásokat támasztanak a munkaadók egy junior szakemberrel szemben? Hogyan telnek a beilleszkedés után a hétköznapok junior fejlesztőként kis létszámmal működő informatikai profilú kisvállalkozásnál? A tanfolyamainkon 2020-ban és 2021-ben végzett előadók karrierváltó junior szakemberként személyes tapasztalataikról számolnak be és válaszolnak a kérdésekre. A program a Java tanfolyamaink orientáló moduljához kötődik.

23:30-23:55 – Szegedi Kristóf: Gondolkodjunk logikusan!
Az előadás során áttekintjük az intelligencia, a kreatív problémamegoldó és logikus gondolkodás összefüggéseit és izgalmas feladatokból válogatva közösen megoldunk néhány fejtörő feladatot. Néhány példa: Hány éves a kapitány?CHOO + CHOO = TRAIN, Logikus gondolkodás teszt. Minden feladathoz adunk rávezető példákat – ha esetleg egyik-másik nem menne, akkor ebből ki fog derülni, hogy miket érdemes gyakorolni ahhoz, hogy sikerüljön.

 

A programjaink népszerűek voltak. Közel 40 érdeklődő látogatót fogadtunk. Többségükben végig velünk tartottak. Néhányan kifejezetten egy-egy adott program iránt érdeklődtek és már késő délutántól úton voltak kora hajnalig. Megragadták a lehetőséget, hogy több budapesti helyszínt is meglátogassanak – ahogyan ez megszokott a Kutatók éjszakája rendezvényeken hosszú évek óta. Kellemes hangulatban, tartalmasan töltöttük együtt az időt, aminek igazán örülök.

Szeretném megköszönni az előadó kollégák és alumni hallgatóink színvonalas munkáját, igényes felkészülését. Köszönjük mindenkinek, aki részt vett a Kutatók éjszakája 2022 rendezvényünkön. Az aktív kérdező csapatot külön is kiemelem. Az előadások prezentációit tanfolyamaink hallgatói számára – a témához kapcsolódó témakörökhöz, ILIAS-ra feltöltve – tesszük elérhetővé.

Táblázatos komponens testreszabása

táblázat logo

táblázat logoA Java programozási nyelv egyik ismert GUI csomagja a swing. Ennek népszerű grafikus komponense az adatok táblázatos megjelenítését biztosító JTable komponens. A táblázatos megjelenítéshez több beállítás is szükséges. A JTable egy MVC komponens, így külön kezelendők a modell, nézet és a vezérlő funkcióihoz kötődő beállítások. A modell tárolja az adatokat például DefaultTableModel típusú objektumban, amiben szétválaszthatók a fejlécben és a többi cellákban található adatok. A nézethez tartozik a betűméret, a cellák színezése, az adatok igazítása, megjelenítése, a gördítősáv. A viselkedést, a felhasználói reakciót a vezérlő határozza meg, például rendezés, görgetés, fókusz, kijelölés, oszlopok sorrendjének cseréje.

Feladat

Készítsünk olyan Java swing-es kliensprogramot, amely tetszőleges adatforrásból (XML vagy JSON a hálózatról, JDBC adatbázis kapcsolatból, ORM leképzésből származó objektumokból) képes az átvett adatok grafikus felületen való táblázatos megjelenítésére JTable komponenssel! Építsünk arra, hogy az adatokon kívül metaadatok is rendelkezésünkre állnak! A megoldás legyen univerzális!

Képernyőképek

OracleHR képernyőkép

Modell

A táblázatos GUI komponenst kezdetben inicializálni kell, illetve a benne tárolt adatok is törölhetők, ha újrahasznosításra kerül a sor:

Ki kell nyerni a tároláshoz és a megjelenítéshez kötődő adatokat (1. lépés). A metaadatokból a for() ciklus előállítja az oszlopTomb-öt, és az oszlopTipusTomb-be kerülnek az Oracle adattípusból Java objektumtípusként megfeleltetett adatok. Előbbi a fejléc feliratainak szövegeit tartalmazza, és az utóbbi befolyásolja az egyes cellákban az igazítást, illetve hatással van adott oszlop rendezésére is:

Ki kell nyerni a tároláshoz és a megjelenítéshez kötődő adatokat (2. lépés). A while() ciklus végigjárja az eredménytábla sorait és Object típusú tömböt állít elő az összetartozó rekord mezőiből. Ezek először generikus listába kerülnek, majd onnan kétdimenziós Object típusú tömbbe:

Mi indokolja a tömbökből álló generikus lista ( adatLista) alkalmazását?

A while() ciklus végrehajtása előtt nem tudjuk lekérdezni, hogy mennyi rekordot kaptunk vissza, így nem tudjuk rögtön az adatTomb-be tenni az adatokat. A Java nyelvben a tömbök mérete fix, és a deklaráció során meg kell adni. Az eredménytábla metaadatai között megtalálható a mezők száma, ami felhasználható a kétdimenziós tömb oszlopszámaként. A generikus lista dinamikus, annyi elemből fog állni, ahány lépésben végrehajtódik a while() ciklus. Ezután a listától lekérdezhető az elemszáma ( adatLista.size()), és ezzel megvan a kétdimenziós tömb sorainak száma, ami eddig hiányzott. Persze használhatnánk Vector-t is a tömbökből álló generikus lista helyett (mert a DefaultTableModel-nek van olyan túlterhelt konstruktora, ami átvenné paraméterként), de ezt inkább nem tesszük, hiszen a Vector már régóta obsolete kollekció.

Előállítjuk a vizuális komponens mögötti adatmodellt. Öröklődéssel kiegészítjük két hasznos függvénnyel, így cellák rajzolása/renderelése és rendezése megkaphatja a szükséges adattípust ( getColumnClass()), valamint letiltható a cellák szerkeszthetősége ( isCellEditable()). Utóbbiak inkább a vezérléshez kötődnek, de modellen keresztül itt és így kell beállítani:

Végül a vizuális komponens mögötti adatmodellt kell átadni:

Nézet

Adott betűtípus, betűstílus és betűméret használható a táblázat fejlécében, celláiban, illetve a betűmérettől függhet a sorok magassága:

Hasznos ha JScrollPane típusú gördítősáv tartozik a táblázathoz, így dinamikusan megjeleníthető/elrejthető a függőleges/vízszintes gördítősáv:

Vezérlés

Az adatokhoz valahogyan hozzá kell jutni. Most JDBC kapcsolatot használunk és az Oracle HR sémából kérdezünk le adatokat, de a forráskód-részlet univerzális. A folyamat a következő:

  • Betöltjük a driver osztályt.
  • Autentikációval c kapcsolatot nyitunk az adatbázis-szerver felé.
  • Végrehajtjuk a lekérdező SQL parancsot.
  • Feldolgozzuk az eredményül kapott ResultSet típusú rs objektumot.
  • Végül lezárjuk a c hálózati kapcsolatot.

Ha engedélyezzük, akkor a megjelenő táblázat fejlécében az egyes oszlopok felirataira kattintva elérhetjük, hogy az adott oszlop típusának megfelelően növekvő vagy csökkenő sorrendbe átrendeződjenek az adatok:

A kivételkezelést nem részleteztük a fenti forráskódoknál, de természetesen kötelezően adott.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam 45-52. óra: Adatbázis-kezelés JDBC alapon, illetve Java adatbázis-kezelő tanfolyam 9-12. óra: Oracle HR séma elemzése, 33-36. óra: Grafikus kliensalkalmazás fejlesztése JDBC alapon, 2. rész alkalmaihoz kapcsolódik.

Tankocka – Keresztrejtvény: programozási tételek

Folytatjuk Tankockák blog bejegyzés sorozatunkat. A feladatban a 12 db programozási tétel nevének beírásával meg kell fejteni a keresztrejtvényt. Ez a témakör főként a Java SE szoftverfejlesztő tanfolyamunkhoz kötődik. A programozási tételek olyan alapfeladatok, amelyek univerzálisan használható építőkövek és bizonyított, hogy mindegyikük helyes. A programozási tételek fontosak a programozáshoz szükséges gondolkodásmód kialakításához, formálásához.

A programozási tételeket csoportosíthatjuk: elemi és összetett. Az elemi programozási tételek közös jellemzője, hogy bemenetük egy sorozat és kimenetük egyetlen adat (ami nem feltétlenül része/eleme a sorozatnak). Az összetett programozási tételek már több sorozattal működnek: lehet több bemenetük és több kimenetük is. Például egy bemeneti sorozatból előállítanak 2-3-több (nem biztos, hogy előre tudjuk, hogy hány darab) kimeneti sorozatot (vagy éppen fordítva). Más is lehet a csoportosítás alapja, például egyediek a sorozat elemei vagy lehetnek azonos elemek a sorozatban, számít az elemek sorrendje vagy nem. No vajon mi a keresztrejtvény megfejtése?