JAVA ALKALMAZÁSOK FEJLESZTÉSE ÉS HASZNÁLATA AZ OKTATÁSBAN
Molnár Zsolt,
[email protected] GDF Keszthely Multimédia Szakirány Hallgatói Szekció
1. A Java nyelvről 1.1 Objektumorientált nyelv A programnyelveket csoportosítani szokás aszerint, hogy az OO elvet milyen mértékben valósítják meg. Azt a programnyelvet, amelyik kényszerít az OO elvek betartására, tiszta objektumorientált nyelvnek nevezzük (pure OO language) - ilyen például a Java vagy a Smalltalk. Sok programozási nyelvbe később építették bele az OO lehetőségeket, így az ilyen nyelvekben továbbra is lehet hagyományos, strukturált módon programokat írni – ezek az ún. vegyes, hibrid nyelvek (hybrid OO language), mint például a C++ vagy a Turbo Pascal. Azt a nyelvet, amely támogatja az objektumazonosságot, az osztályozást és a bezárást, de nem támogatja az öröklést, objektum alapú nyelvnek (object-based language) nevezzük – ilyen például a Basic. Nézzük most át, érintőlegesen a legelterjedtebb OO nyelveket: - C++ Hibrid nyelv. Az AT&T Bell Laboratiries fejlesztette ki a C nyelvből az 1980as évek elején. A nyelvet Bjarne Stroustrup tervezte. Napjaink OO rendszereinek nagy százalékát C++ nyelven írják. A C++ legnépszerűbb változata a Borland C++, Microsoft C++ és a Watcom C++. - Java Tiszta OO nyelv. A Sun Microsystems egyik csoportja, a JavaSoft fejlesztette ki James Gosling vezetésével. A Java a C++ egy átdolgozott, leegyszerűsített változata; legnagyobb erőssége, hogy alkalmas az Internet programozására, A fejlesztői környezet és Java osztálykönyvtár magja a szabványos JDK (Java Development Kit), melynek alapján több cég is gyárt fordítót, illetve futtató programot. - Pascal Hibrid nyelv. Objektumorientált változatát először az Apple Computer fejlesztette ki 1986-ban, egyetértésben Niklaus Wirth-el, a Pascal tervezőjével. Legnépszerűbb változata az Object Pascal, a Delphi programozási nyelve (Borland International, Inc.). - Smalltalk Tiszta OO nyelv, legnépszerűbb változatai a Smalltalk/V (Digital Inc.), a Smalltalk-80 (ParcPlace Systems, Inc.) és az IBM Corporation). - Eiffel Tiszta objektumorientált nyelv, Bertrand Meyer fejlesztette ki az 1980-as években (Interactive Software Engineering, Inc.).
1.2 A Java nyelv története A Java nyelv története 1991-re nyulik vissza, amikor a Sun MikroSystems egy csoportja Patrick Naugton és James Gosling vezetésével egy beágyazott, számítógépes mini nyelvet terveztek, amely olyan kommunikációs eszközök programozására alkalmas, mint például egy kábel TV kapcsoló doboza. Mivel az ilyen eszközök nem túlságosan gyorsak, és memóriájuk is szűkös, a nyelvnek nagyon kicsinek, a lefordított kódnak, pedig roppant hatékonynak kellett lennie. Kapóra jött a csapatnak az, az ötlet is, amelyet Niklaus Wirth már az UCSD Pascalban kidolgozott. Eszerint egy olyan hordozható nyelvet kell készíteni, amely egy virtuális gépre közbenső kódot generál – innen ered a virtuális gép, vagyis a Java Virtual Machine (JVM) elnevezés. Ez a közbenső bájkód aztán használható minden olyan gépen, amely rendelkezik a megfelelő interpreterrel. James Gossling és társai a C++ nyelvet egyszerűsítették le a kívánt cél érdekében), hiszen Unixos közegből jöttek, és C++-ban dolgoztak. (talán ezért is volt ilyen szimpatikus számomra a Java, hiszen erősen leegyszerűsített nyelv, viccesen nevezik még C++-- nak is). A Java nyelv nagyon jóra sikerült, ezt érezték alkotó is. Terméküket el szerették volna adni, 1992-től több éves házalás következett, de szerződést senki nem ajánlott nekik. A legérdekesebb, hogy még Jim Clark sem látta meg a Javaban a jövőt, az a Jim Clark, aki később, mint a Netscape vezetője leginkább támogatta a nyelvet. Eközben az Internet és a Web óriási sebességgel fejlődött, ennek hatására Patrick Naughton és Jonathan Payn 1994-ben el is készítette a HotJava browser-t. Belecsempészték a böngészőbe a Java futtatórendszert, a JVM-et, s ezzel alkalmassá tették azt a Java fordító által generált bájtkód futtatására. A honlapok életre keltek: azok már nem csupán mozdulatlan információkat, hanem mozgó ábrákat, animációkat, videókat is tartalmaztak. Egyszóval futottak a Java programok a távoli felhasználó gépén. A szerzők 1995. májusában bemutatták terméküket, és ezzel elindult a Java a sikerútján: 1996 januárjában a Netscape 2.0 ár Java képes (Java enabled) volt, majd ezt követően mindenki beállt a sorba, ma már nincs böngésző, ami nem tud futtatni Java alkalmazásokat. S erről a sikerútról máig nem tért le a nyelv meggyőződésem szerint. Miután a Gábor Dénes Főiskolán több mai modern nyelvvel (C++, Delphi) volt szerencsém megismerkedni, a Java az, amelynek egyszerűsége és hatékonysága felkeltette érdeklődésem a programozgatás iránt. Még egy kis érdekesség a végére. Talán többekben felmerül a kérdés miért pont Java lett a nyelv neve? Nos miután a nyelv elkészült, az alkotók megpróbáltak nevet találni. Eredetileg Oak vagyis tölgynek szerették volna nevezni, mert Gosling irodájának ablaka alatt a Sunnal egy hatalmas gyönyörű tölgyfa állt, de kiderült közben, hogy már létezik egy ilyen név, ezért elvetették ez a felvetést. Viccesen azt is mondhatnánk, hogy az egész fejlesztés során nem találkoztak ekkora akadállyal, mint itt a névválasztásnál. Miközben már órák napok óta azon tanakodtak, mi legyen a név, kedvenc kávéjukat fogyasztották, s innen jött az ötlet, legyen a név Java, utalva Java szigetére, ahonnan a kávé származott. 2. Java kis alkalmazások az oktatásban 2.1 Teszt alkalmazások A következő képeken szeretném kicsit bemutatni az alkalmazások működését. Alapvetően három változat készült, ezek pedig: az első változatnál egyetlen helyes megoldás van, s úgy is van megírva a program, hogy egy kérdéshez csak egy helyes válaszlehetőség választható ki.
Második esetben több helyes megoldás is lehetséges, ezért több válaszlehetőség is jelölhető. A harmadik változat ismét csak egy helyes megoldást tartalmazhat, itt viszont a kérdésekhez képek is tartozhatnak, amelyet a kép fülre kattintva lehet megtekinteni (ez a fül csak akkor aktív, ha van csatolt kép a kérdéshez). Induláskor az alkalmazás jelszót kér, ami mindhárom esetben „georgikon” kipróbálásra. Ez a későbbi védeni kívánt alkalmazások miatt kellet beépíteni, hisz a mai Internetes világban elengedhetetlen programjaink védelme, emellett a jelszavas védelem mellett még be van építve egy olyan rész a programba, hogy csak a saját szerven lévő forrásfájlokból fut, ha valaki letölti a csomagolt jar fájlt, és felteszi egy másik helyre, onnan nem fog elindulni. 2.2 Kérdések betöltése Az egész alkalmazás működése alacsony és magas szintű eseményekhez van rendelve. Magának a kérdések betöltésének menetét mutatnám most be. A program induláskor beolvassa a rendelkezésre álló összes forrásfájl (txt fájl) számát, magát a beolvasást egy hátul tesztelős ciklus végzi, amely minden egyes létező fájl után a ComboBox elemeihez 0-ról indulva, az előző elemet lépteve eggyel, hozzáad egy újabb elemet. Alapértelmezésben a ComboBox kiválasztott értéke az első elem tehát az 1, ekkor az alkalmazás az első oldal kérdéseit jeleníti meg. Ekkor már ebben a Comoboxban benne van az összes elérhető oldal sorszáma, így ha egy másik oldalszámot választunk ki, akkor megjelenik az új oldal kérdéssora. Végeredményben a ComboBoxon történt eseményekhez van rendelve az egész oldalbetöltési és váltási rész, hisz a 3 nyomógomb alul, név szerint az előző oldal, következő oldal és az újra ez az oldal nem csinál mást, mint csökkenti, növeli, vagy újra meg megadja a ComboBox kiválasztott elemét, vagyis eseményt generál rajta így minden esetben a megfelelő oldal töltődik. Ennek a megoldásnak a legnagyobb előnye, hogy a kérdések ill. oldalak számának növeléséhez, csak a be kell másolni a txt fájlokat a megfelelő könyvtárba, és ekkor a program automatikusan a legközelebbi indításkor automatikusan hozzáfűzi, így bővítéshez nem kell a forráskódba ill. jar fájlba belenyúlni. Végül is ez az egyik legnagyobb előnye a Java nyelvnek, hogy egy távoli számítógépen (URL címen) lévő erőforrást (fájlokat de akár streameket is) könnyedén elér és használ. 2.3 Javítás A hibajavítási megoldásánál külön kell választani azt a két változatot, amelyben a tesztkérdésekre adható helyes válaszok száma egy ill. ha több helyes megoldás lehetséges. Az egy megoldásos teszteknél minden kérdéshez tartozó megoldás betűjelét egy változó tárolja, s a megjelölt RadioButtonnak a Textje is egy betűjel, javításkor ezt a 2 értéket hasonlítom össze. Ha egyezik a kettő, a megoldás jó, így a kérdéspanel s az összes RadioButton háttere zöldre vált. Abban az esetben, ha nem jó a megjelölt válaszlehetőség, a program a kérdéspanel és az összes RadioButton hátterét pirosra állítja, ekkor viszont még egy feladat van, megmutatni mi lett volna a helyes megoldás. Ez úgy történik, hogy a megoldást tartalmazó változó értékét összehasonlítom a RadioButtonok Textjével, s amelyikkel egyezik, csak annak a háttere lesz zöld. A másik változatnál, mikor több megoldás is van, a megoldást ismét egyetlen változó tárolja, ez lehet több betűjel is adott esetben, ekkor viszont egy másik változóval hasonlítom ezt össze, mely változó a felhasználó által jelölt válaszlehetőségek betűjeleit tartalmazza. Ha egyezik szintén minden zöldre vált. Amennyiben nincs egyezés, akkor a hátterek pirosra váltanak, és a megoldás változójában tárolt betűjeleknek megfelelő
RadioButton hátterek váltanak zöldre. Minden esetben az összes Radiobutton zárolásra kerül, ezt csak az új oldal betöltődése oldhatja fel.
1. ábra 2.4 Működés bemutatása Ha egy oldalon nincs öt kérdés, akkor a hiányzó kérdés egész panelja láthatatlanná válik, valamint csak akkor lehet egy betűjelet kiválasztani, ha ahhoz válaszlehetőség is tartozik, hisz egy kérdéshez min. 2 de maximum 5 lehetséges megoldás is lehet. Ez úgy történik, hogy, ha az a szöveg típusú változó, amely a kérdést tartalmazza, nem tartalmaz karaktereket, vagyis nincs kérdés, akkor a panel setVisible metódusának false-ra állításával elrejtem a kérdéspanelt. Hasonlóan történik annak a betűjelnek az inaktívvá tétele, amelyhez tartozik megoldási lehetőség, ezt a RadioButton setEnabled metódusának false-ra állításával lehet elérni. Ezeket a beállításoknak viszont minden egyes oldal betöltődésekor újra és újra felül kell vizsgálni, egyértelmű, hogy ott más számú kérdés és válaszlehetőség lehetséges.
2. ábra Meg kell még említeni, hogy minden egyes javítás gomb lenyomás után alul kiírásra kerülnek azon adatok, hogy az adott oldalon hány kitöltött kérdésből hány helyes válasz született, valamint hogy ez hány százalékos teljesítményt jelent egész számra kerekítve, ezek csak időlegesen láthatók addig, ameddig a felhasználó nem tölt be újabb oldalt. Ha ez megtörtént, akkor a legközelebbi javítás után jelennek meg újra ezen adaton. Alul középen viszont állandó jelleggel jelezve vannak szintén ugyan ezen adatok, de már az összteljesítmény vonatkozásában, tehát folyamatosan jelezve van, hogy a belépés óta hány kérdést töltöttünk ki, ebből mennyi jó és ez hány százalékos teljesítmény itt is egész számra kerekítve. Ennek megoldása egyszerű összeadás, vagyis a számolás a hibajavító metódus után fut le, ami már beállította a háttérszíneket, így nem kell mást tenni, mint összeadni a piros ill. zöld színű kérdéspanelek számát, majd ezekből a számokból számolható a százalékos eredmény is. A számok külön, int típusú változóban tárolódnak, hisz az oldalankénti eredményeket kiírás után törölni kell, az összteljesítményt viszont meg kell őrizni és növelni a futásidő végéig.
3. ábra Abban az esetben, mikor egy helyes válaszlehetőség van, hogy ne lehessen kijelölni több megoldást, a RadioButtonok eseménykezelési eljárását ismerve megírjuk, hogy amennyiben az adcde válaszok közül, pl. b kiválasztásra kerül, a többi, vagyis acde jelű RadioButton setSelected metódusa false állapotba kerüljön, és ugyanezen megoldás fut le, bármelyik kiválasztott lehetőség esetén, így mindig csak egy maradhat. Erre a részre természetesen a több helyes megoldással rendelkező változatnál nem volt szükség, hisz ott több megoldást is ki kellhet jelölnünk. A képek betöltése úgy történik, hogy a program ellenőrzi az oldal betöltésekor, a kérdéshez tartozik- e kép is, ha igen, akkor betölti a megfelelő helyre és a kérdés mellett lévő kép feliratú fülecskét engedélyezetté teszi, így a felhasználó megtekintheti a képek, majd a kérdés feliratú fülecskére kattintva visszatérhet a kérdéshez, és megadhatja a választ. A kép mérete, főleg a magassága korlátozva van, sajnos a kép egyenlőre nem nagyítható, csak a megadott nagyságban tekinthető meg, de a további tervek közt szerepel ennek a kis kellemetlenségnek a kiküszöbölése.
4. ábra 3. Összegzés Hasznossága talán abban rejlik az egésznek, hogy látványos és gyors hibajavító rendszere van, folyamatosan írja az összteljesítményt és az oldalankénti teljesítményt, valamint az oldalak újra megoldhatóak. Teljesen mindegy az, hogy a kérdések milyen tartalmúak mihez kapcsolódnak több helyes válasz van e vagy csak egy, egy kérdéshez hány válaszlehetőség tartozik, vagy hogy egy oldalra hány kérdés van megadva, vagyis a program minimális kötöttséget ró a felhasznált txt fájlok belső struktúrájára. Reményeim szerint ezen alkalmazások hatásos segítségükre lehetnek azon hallgatótársaimnak, akik tudásuk ellenőrzésére igénybe veszik. Saját tapasztalatból kiindulva lett az első teszt alkalmazás alapja az angol nyelvtan, hisz nem egy emberke tart ott a negyedik év vége felé, hogy el kell gondolkodnia a nyelvvizsga kérdésén, ez általában itt nálunk az informatika területén több mint valószínű, hogy az angol lesz, így ha sikerül megfelelő mennyiségű kérdéssort felvinni, segíthet társaimnak a felkészülésben.