Informatika | Grafika » Hálózati grafika és képfeldolgozás kérdések és válaszok

Alapadatok

Év, oldalszám:2006, 10 oldal

Nyelv:magyar

Letöltések száma:81

Feltöltve:2009. október 03.

Méret:70 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!


Tartalmi kivonat

Hálózati grafika és képfeldolgozás kérdések és válaszok 1. Mi a különbség a Java alkalmazás és a Java applet között? Az önálló Java-programokat alkalmazásoknak, míg a weboldalon futó programokat appleteknek nevezzük. Egy Java alkalmazásnak ahhoz, hogy szabályosan futtassuk, rendelkeznie kell egy speciális main ()-nek nevezett metódussal. Az appletek önállóan nem léteznek. szükségük van egy HTML dokumentumra, melybe az <APPLET> tag segítségével ágyazható be (a <BODY> tartományba). 2. A Java compiler és a JVM szerepe A Java compiler (fordító) a programunkat gépi kódra fordítja, úgy, hogy minden egyes osztályáról egy *.class kiterjesztésű állományt hoz létre (Maga a program *.java kiterjesztésű!!!)Ez a *.class állomány tartalmazza a Java-program verzióját, ami hordozható a különböző géptípusok között. Az olyan utasítások, amelyek nem igényelnek képi megjelenítést (pl.: számolás), hordozhatóságát a

Java virtuális gép (Java Virtual Machine, JVM) biztosítja. Ő fordítja le a *.class állományban található bájtkódot, és alakítja át olyan gépi kóddá, amely annak a gépnek felel meg, amelyen a programot futtatjuk. 3. A csomag, az osztály és az objektum fogalma A Java package (csomag) kulcsszava lehetővé teszi, hogy az egy témához tartozó osztályinkat egyetlen csomagba tegyük. A Javaban az egyszerű adattípusok mellett léteznek komplex típusok, az osztályok. Az osztály több elemet egyesíthet (változók, metódusok). Ez az ún egységbezárás, mellyel megadható, hogy az osztály, az egyes adatelemekkel milyen műveleteket végezhet és az is megadható, hogy a változókhoz honnan lehessen hozzáférni. Az osztályból példányosítás útján hozható létre egy konkrét objektum, ami már nem egy elvi leírést tartalmaz, hanem a programban ténylegesen felhasználható értékkel is rendelkező adatokat és metódusokat. 4. Az objektumorientáltság

fogalma Az első lépés egy objektumorientált program előállítása során az, hogy a problémákat objektumokra bontsuk szét, rögzítsük azok tulajdonságait és viselkedés módját, valamint meghatározzuk az őket alkotó adatelemeket és metódiusokat. 5. Egységbezárás, öröklődés, polimorfizmus fogalma Az osztály több elemet egyesíthet (változók, metódusok). Ez az ún egységbezárás, mellyel megadható, hogy az osztály, az egyes adatelemekkel milyen műveleteket végezhet és az is megadható, hogy a változókhoz honnan lehessen hozzáférni. Egy osztály adatait és metódusait örökölheti egy másik osztálytól. Öröklődéskor az alaposztály összes metódusa és adateleme megtalálható a származtatott osztályban. Az örökölt metódusokat felül lehet írni, vagyis ugyanolyan névvel kétféle metódus is létezhet. Ez a polimorfizmus 6. Mik a metódusok pl.: public int getAktOra () - public = nyilvános, elérhető más objektumok

számára a tartalmazó osztályon kívülről is; int = integer (egész), program definícióban egész jellegűnek lett def. a AktOra; getAktOra = lekérdező jellegű metódus, itt az aktuális időt kérdezi le egy program során, önmagában (appletként ez használhatatlan!!! - ez egy sor egy Java progiból!!!). Ez a sor egy tipikus tevékenység definíció. A tevékenységre a Java a metódus (módszer) szakkifejezést használja. 7. Miért kell a main metódusnak static-nak lennie? Ha egy metódus static típusú, akkor hozzáférhetünk akkor is, ha az osztálynak, amiben definiálva lett nincs egyetlen példánya sem. Ezért kell a main () függvényt static-nak definiálni, hisz a program végrehajtása a main () függvénnyel indul, és amikor a program indul, egy osztálynak sem lehet még példánya. 8. Az import utasítások szerepe import utasítás (Java-kulcsszó) Ezzel importáljuk az éppen aktuális osztály definícióját, így elérhető lesz a kurrens *.java

állományban is Mivel a kurrens *.java-ban HIVATKOZUNK (ha nem akkor rohadtul nem kell az importtal szarakodni!!!) az aktuális osztályra, a fordítónak, amikor fordítja a kurrens file-t, tudnia kell, hogy ezt az aktuális osztályt hogyan definiáltuk. Ha az állományok ugyanabban a könyvtárban vannak a fordító automatikusan megtalálja a kurrens *.java-t, az import nélkül is!!! pl.: 1 import Ora 2 c 3 public class OraTeszt 4 { 5 private Ora ora; /* az ora objektum és hivatkozás az Ora oszályra . . . 9. Hogyan készülnek az új osztályok? Egy új osztály létrehozására a class kulcsszóval bevezetett szerkezet használható: class osztálynév { } 10. Mi a példányosítás? A class kulcsszóval létrehozott osztályunk deklarálása után, vagy azzal egy időben lehet példányosítani az osztályt, ekkor keletkezik az objektum. Erre a new utasítás használható. A new kulcsszó hatására meghívódik az osztály konstruktora, aminek átadásra kerül(nek)

az általa igényelt paraméter (ek). 11. Hogyan kell appletet készíteni és futtatni? Minden webböngészőnek és appletnézőnek szüksége van egy HTML (HyperTextMarkupLanguage) állományra, amelyben az applet futtatására vonatkozó információ van. Applet készítése: public static class proba extends /* extends segítségével alakítjuk a proba progit applet-é java.appletApplet // java.applet csomagban található { public static void paint (java.awtGraphics gc) /* Graphics egy osztály a java.awt-ben, megjelenítés { gc.drawString („Nos?!”,100, 100); /* gc.drawString, a szöveg kiírása a graf. ablakba } } Beágyazás HTML-be: <html> <body> <applet code=”proba.class” width=300 heigh=100> </applet> </body> </html> Ezzel megadtuk a kiírandó szöveg szélességét és magasságát, előtte természetesen 12. Java adattípusok, konstansok, vezérlési szerkezetek áttekintése Egyszerű adattípusok - boolean (true, false)

char (Unicod-érték) byte (-128 - 128) short (-32 768 - 32768) int (Értéktartománya 4,5 milliárd) long (Értéktartománya 18*1018 nagyságrendű) float (lebegőpontos szám, ÉT= tizedesek, hihetetlenül nagy számban) double (lebegőpontos szám, ÉT= Chuck Norris kategória) Az adattípus rögzítése megadja, hogy mekkora memória területet kell lefoglalni a számára. Összetett adatszerkezetek - Tömbök - létrehozása, pl.: int k[]=new int [10] //10 elemű tömb létrehozása - tömb méretének lekérdezése, pl.: klenght - többdimenziós tömb létrehozása, pl.: int t[] []=new int [10] [15] /*10 sor, 15 oszlop Konstansok 1. A konstanst azonnal konkrét értékkel ruházzuk fel, ezek az ún literálok Ha nem rendeljük konkrét adattípushoz, akkor a fordító a literál szintaxisából következteti ki a típusát. pl.: tort szam=2612; 2. A final kulcsszóval deklarált változó: final double tort szam=33.14 - Literálok: boolean (true, false) Char

(Unicod-érték) char (különleges karakterek) byte, short, sint string long oktális hexadecimális float double Vezérlési struktúrák 1. Feltételes szerkezetek: if-else, switch Szerkezete: if (feltétel) { // ha a feltétel igaz utasítások; } else { //ha a feltétel hamis utasítások; } Ha nincs szükség az else elhagyható, igaz-nem típusú, tehát a változónak boolean típ.-nak kell lennie, vagy olyan logikai kifejezés, amihez a fordító logikai értéket rendel a kiértékelés során. Szerkezete: pl.: char x; x=”B”; switch(x) { case ”A”:utasítások 1; break; case ”B”:utasítások 2; break; case ”C”:utasítások 3; break; default: utasítások ha egyik se; break; } A switch utasítás végrehajtásánál elkezdi vizsgálni a case-eket, ahol egyezést talál, ott elkezdődik az utasítások végrehajtása, a találatot követő összes case végrehajtódik!!! Ha nincs találat akkor default hajtódik végre. Ha csak egy case-t akarunk

végrehajtatni, akkor break utasítással lehet kilépni a switch-ből. (meg egyébként is így lehet kilépni) 2. Ciklus utasítások A for coklus három, egymástól pontosvesszővel elválasztott részre osztható. Az első részben a ciklusváltozóhoz hozzárendeljük a kezdeti értéket, a második részben megadjuk a kilépési feltételt, a harmadik részben pedig a ciklusváltozót léptető utasítást adjuk meg. A fejrész után található a ciklus törzse, ami az utasításokat tartalmazza. Pl.: int i; for(i=0;i<10;i++) { utasítások; } A while ciklus elöltesztelős ciklus, a while kulcsszó után megadjuk az ismétlés feltételét. A zárójelben egy logikai kifejezés áll, ami lehet önmagában egy logikai típusú változó, vagy lehet egy adat, akár egy ciklus változó vizsgálata is. Pl.: int=0; while(i<10) { utasítások; i++; } do-while: hátultesztelős ciklus, amely a do utáni blokkban lévő utasításokat ismétli, a while után pedig a kilépés

feltétele áll, amely egy logikai kifejezés. Pl.: int=0; do{ utasítások; i++; }while(i<5) Lehetőség van a break és a continue utasításokkal a ciklusból való kilépésre, valamint a ciklus újrakezdésére. 13. Módosítók jelentése A módosítókat osztály, mező, vagy metódus definíciójánál használhatjuk a típus megnevezése előtt. (pl: public static void main()) abstract: Absztrakt egy metódus, ha csak a fejrésze van megadva, mert a programírásnak azon a pontján nem lehet a benne található műveleteket megadni, hiszen ezeket esetleg több osztály is többféleképpen fel akarja majd használni. Egy osztály akkor abstact, ha tartalmaz abstarct metódust. final: Végleges egy osztály akkor, ha nem lehet belőle további osztályt származtatni. Végleges egy metódus, ha nem lehet felülírni (nincs polimorfizmus), végleges egy mező, ha nem lehet értékét módosítani. public: Nyilvános egy mező, vagy osztály, vagy metódus, ha másik

csomagból is lehet használni. private: Egyedi egy metódus vagy egy mező, ha csak saját osztályán belül látható. protected: Védett egy mező vagy egy metódus, ha csak saját osztályában és az abból származtatott osztályokban látható. static: Állandó a mező, vagy a metódus, ha az osztály összes objektumára állandó, nem példányosítható. A statikus mezőket osztályváltozónak is nevezik Természetesen a static mezők, metódusok nem használhatják a this kulcsszót. 14. A kivételkezelés feladata, megvalósításának alapjai A Java nyelv hibakezelése a kivételkezelésen alapszik. A Java kivételkezelésének célja a futás közben fellépő hibák kezelése. Ezeket a futás közben fellépő hibákat a Java exception-nek, vagyis kivételnek nevezi. Ezek olyan kivételes események, amelyek a program futása közben megszakítják az utasítások végrehajtásának normális menetét, tehát a program futása kivételes módon folytatódik. Erről

gondoskodik a kivételkezelés. A kivételek kezelése a Java nyelvben az osztályokon alapul. Ez hibatípustól függő feldolgozást tesz lehetővé Ha egy metódus futása közben valamilyen hiba lép fel, akkor a metódus kivált egy kivételt (throwing exeption) és létrejön egy kivételobjektum, amely információkat tartalmaz a kivétel fajtájáról és a program aktuális állapotáról. Ezután a létrejött kivételobjektum a Java-futtató környezet felügyelete alá kerül. Kivétel háromféle módon keletkezhet: - Valamilyen rendellenes dolog történik a program futása közben. Pl: 0-val való osztás, erőforrás elfogyása, stb. - A programban található throw utasítás vált ki kivételt. Ez történhet a Java könyvtár valamelyik csomagjában, vagy a programozó által írt kódban. - Felléphet aszinkron kivétel. Ez több szálon futó program valamelyik szálának megszakadását jelenti. A throw utasítás által kiváltott kivételek elkapásához a JAVA

utasításokat try blokkba kell írni. A program, kivételkezelés szempontjából a try blokkban lévő utasításokat figyeli. A try blokk vezérli a benne keletkező kivételek kezelését, valamint meghatározza a blokkot követő catch ágak és finally ág érvényességét. A try blokk után kell következnie a vele összetartozó catch vagy finally blokknak úgy, hogy köztük nem lehet más nyelvi elem. Pl.: try { /*Java utasítások/ } catch(típus1 változónév1) { /*Java utasítások/ } catch(típus2 változónév2) { /*Java utasítások/ } . A catch blokkok után megadható egy finally blokk, mely a try blokk befejeződése után lefut függetlenül attól, hogy a következő három eset közül melyik valósult meg: - Nem váltódik ki kivétel, és így a futás nem érint egyetlen catch ágat sem. - Kivétel lép fel, és a program valamely catch ágon halad át. - Kivétel lép fel, de a fellépő kivételt egyik catch ág sem tudja elkapni, mert a típusuk nem

megfelelő. A vezérlés a hívó metódus kódjához jut 15. Az adat be- és kivitel alapjai A külvilággal való kommunikációra a Java három lehetőséget biztosít: - billentyűzeten és képernyőn keresztül - a háttértároló állományain keresztül - Interneten keresztül (WWW oldalak) A Java be- és kiviteli alapelve a stream (adatfolyam) koncepción alapul. Ez azt jelenti, hogy egy kommunikációs csatorna, egy adatfolyam van az adó és a vevő között. A Java sok stream osztály tartalmaz, melyek közül az adó illetve a vevő fajtájáról függően választhatunk. Az adatáramlás irányának meghatározásához a programunk szemszögéből nézzük a dolgokat, így a billentyűzet adatáramát bemeneti adatfolyamnak, a képernyő adatáramát kimeneti adatfolyamnak tekintjük. A Javaban éppúgy, mint más programozási nyelvekben, az adatfolyamokat előre definiált streamek biztosítják. A képernyős megjelenítésért a Systemout felelős, ezért ezt

standard kimenetnek nevezik. A billentyűzetről jövő bemeneti stream kezeléséért a System.in felelős, ezért standard bemenetnek nevezik 16. Az Abstract Window Toolkit lényege, feladata, elemeinek áttekintése Az Abstract Window Toolkit (AWT) az a része a Javanak, amely lehetőséget biztosít a felhasználói felületek (Graphical User Interface- GUI) előállítására. Az AWT tulajdonképpen különböző osztályok gyüjteménye (java.awt) Ezen gyüjtemény sok száz osztályt és metódust biztosít, melyekből építőkockaszerűen állíthatjuk össze a felhasználói felületet, és határozhatjuk meg annak működését. Az AWT-vel történő programozás tulajdonképpen osztályok szármáztatásából és az osztály metódusainak felülírásából áll. Grafikus programok kialakításához a következő elemek állnak rendelkezésre: - Komponensek (components): Ezek tulajdonképpen a windows-programok tipikus komponensei, úgymint a gombok,

jelölőnégyzetek, a görgető sáv, stb. - Tárolóelemek (containers): A tárolóelemek olyan speciális komponensek, amelyek más komponenseket tartalmazhatnak, ezáltal a felületelemek csoportosítására, illetve a felület struktúrált felosztására használhatók. - Elrendezéskezelők (layout-managers): Az elrendezéskezelők olyan osztályok, melyek segítségével a komponensek elhelyezkedését és eligazítását szabályozhatjuk. - Vászon (canavas): A vászon olyan komponens, amely festésre, illetve képek és grafikák megjelenítésére használatos. - Eseményfigyelők (event-listeners): Olyan speciális osztályok, melyek segítségével megvalósítható az eseménykezelés. 17. Egyszerű ábrák készítése AWT-vel Színek Képkezelés  Applet készítése: ekkor a program osztályát a java.appletApplet osztálytól származtatjuk, nyugodtan használhatunk különféle rajzolómetódusokat, a böngészőprogram az applet indításakor a grafikus felület

biztosítja.  Alkalmazás készítése: Ekkor nekünk kell gondoskodni a grafikus felületről. A program osztályát a Frame osztálytól kell származtatni. Indításkor ez egy Windows-os ablakot ad, amelyhez különféle komponenseket adhatunk, vagy rajzolhatunk is rá. A grafikus programok az ablak beállítása után a Graphics osztály paint metódusával rajzolhatnak, itt kell elhelyezni a különféle grafikus metódusokat. Végül a programban a frame objektum egy show metódussal jeleníthető meg. Színek beállítása A Java a szín tárolására egy külön osztályt készített, ebből már sejthető, hogy nem csak a szokásos, RGB színeket lehet beállítani. A tapasztalatok szerint az emberi szem több millió szín megkülönböztetésére képes. Az RGB színkeverés azon azon a megfigyelésen alapul, hogy a három alapszín, a piros, a zöld, és a kék különböző arányú összetételével bármilyen szín előállítható. Ez a monitorok működési elvével

is összhangban lévő színkeverési rendszer kényelmesen használható, ugyanis pl. 1 byte információt szánunk minden színösszetevő mennyiségének megadására és így igen sok szín előállítható. A Javaban az RGB színkeverésnél mindegyik színössztevő mennyisége 0-255 intervallumban van. Képkezelés Grafikai programok készítésénél gyakran van szükség képkezelésre. Előfordul, hogy egy már elkészített, és a háttértárra lementett képet kell a programban megjeleníteni, vagy a program egy képpontonként számított képet állít elő, és azt sokkal gyorsabb egy képként kezelni, mint esetleg pontonként megjeleníteni. - Létező kép megjelenítése: A java.awtToolkit osztály public Image getImaga(String) metódusával lehet gif vagy jpg kiterjesztésű képfile- okat betölteni. A Toolkit objektumot a getToolkit metódussal lehet elérni A kapott képet a void drawImage(Image) metódussal lehet megjeleníteni. Pl.: Image img; Try{

img=getToolkit().getImage(filenev); } //try catch (Exception ee) { System.errprintln (ee); Img=null; } // catch - Az általunk képpontonként kiszámolt képet is lehet egyben kezelni, ehhez importálni kell a java.awtimageMemoryImageSource osztályt Az Image osztály tartalmazza az Image creatImage(tomb) metódust, mely segítségével a színkódokat tartalmazó tömbből képet lehet készíteni: Pl.: Image scr; Scr=createImage (newMemoryImageSource (maxx, maxy, img, 0, maxx)); 18. Az AWT eseménymodellje A GUI (Graphical User Interface) programok idejük legnagyobb részét a felhasználóra várakozással töltik. A program általában arra vár, hogy a felhasználó az egérrel kattintson, vagy begépeljen valamit. Ezen cselekvések arra késztetik a futó ablakozó rendszert, hogy egy megfelelő eseményt váltson ki, és az aktív ablak programjának végrehajtásával folytassa tevékenységét. Ezek után a programnak fogadnia kell az operációs rendszertől érkező

utasításokat, és gondoskodni kell a végrehajtásukról. Itt ismét szerephez jut az AWT, mely az események kezelésére egy ún. DelegationEvent-Model-t használ Az események kezelése során megkülönböztetjük az eseményforrásokat és az esemény figyelőket. A források tulajdonképpen komponensek, amiken például az egérrel kattintunk, vagy amelyekre egy billentyű leütése hatással lehet. A figyelők olyan speciális osztályok, amelyek olyan metódusok deklarációit tartalmazzák, amelyek az események bekövetkeztekor hajtódnak végre. Több eseménykategória is létezik, minden esemény kezeléséhez az adott séma alapján nekünk kell megírni a tényleges metódusokat. A források és figyelők összekötése egs bizonyos addListener() metódus segítségével történik. Ha egy komponenshez több figyelőt is szeretnénk rendelni, akkor lülön-külön mindegyiket hozzá kell adni a komponenshez. 19. Komponensek az AWT-ben Gombesemények kezelése Az igazi

felhasználóbarát Windows-os programoknál megszokhattuk, a programba beavatkozási lehetőséget a különböző gombok, gördítősáv, checkbox, stb. segítségével. Ezeket a javaban komponenseknek nevezzük Az összes kjomponens osztály közvetve vagy közvetlenül a Component osztályból származik, ezért annak metódusait és működésmódját örökli. Az örökölt metódusokon kívül az egyes komponensek osztályai tartalmaznak más, az adott komponensre jellemző metódusokat is. A komponensek hierarchiája: Component:  Label (címke)  Button (gomb)        Checkbox Choise List Scrollbar TextComponent: - TextField - TextArea Container: - Panel-Applet - ScrollPanel - Window: - Dialog - Frame Canvas A fent említett komponensekhez általában többféle konstruktor tartozik, melyek közül a felhasználásnak megfelelően választhatunk. A komponensek pontos elhelyezkedését a már fent említett elrendezéskezelőkkel szabályozhatjuk.

Minden Container típusú komponenshez rendelhető egy elrendezéskezelő, a különböző elrendezéskezelők közül. A hozzárendelést a setLayout() utasítás segítségével valósíthatjuk meg Gombesemény kezelése - - - Létre kell hozni egy beágyazott osztályt, amely az ActionListener osztálytól átveszi a metódus deklarációkat, és ezen belül pl.: a gomb megnyomását az actionPerformed metódus megírásával tudjuk elképzeléseink szerint kezelni. class GombListener implements ActionListener{ /*gomb figyelése public void actionPerformed(ActionEvent e){ } //ActionPerformed } //GombListener A gomb létrehozása után, Gomb= new Button(„Betölt”); Add(„South”, Gomb); Validate(); A gombot tartalmazó ablakhoz hozzáadjuk a gombesemény figyelést. Gomb.addActionListener (new GombListener());