Java Programozás 2. Ea: Java alapok. Ismétlés ++

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Java Programozás 2. Ea: Java alapok. Ismétlés ++"

Átírás

1 Java Programozás 2. Ea: Java alapok Ismétlés /1 B ITv: MAN

2 A Java nyelv jellemzői Interpreteres Forrás file fordítás Byte kódú file-ok (class file-ok, nem gépikód, nem futtatható, egy új forrásnyelv) Interpreter: betölti, soronként (?!) fordítja és végrehajtja a Java Virtuális Gép (JVM) Következmények: A Bytekódú file hordozható Webes környezetben is használható Az interpreter program beágyazható más programokba vagy eszközökbe (böngésző, telefon) Lassúság a compileres nyelvekhez képest!!! 110/2

3 Hárombetűsek: JDK, JVM, JRE F.java SZ SZ F.class 110/3 F Fájl SZ Szoftver H Hardver SZ H

4 A Java nyelv jellemzői Objektum orientált nyelv Megvalósítja az OOP alapelveit A bonyodalmakat okozó részeket kihagyja, pl:többszörös öröklődés (nehezebb megvalósítás, kódújrafelhasználás) operátor overloading (félreérthető használat, kevésbé olvasható kód) Szigorúan OOP (nincsen osztályon kívüli deklaráció, utasítás) Hasonlóság a C++-hoz A szintaktika teljesen C++-szerű Nincsenek mutatók Gazdag osztály könyvtár (csomagok) 110/4 Kb osztály illetve interfész a JDK 9-ben

5 A Java nyelv verziói : a SUN belső project-je James Gosling vezetésével (+Patrick Naughton, Mike Sheridan, ) Programnyelv a Set Top Box-okhoz Igény: platform-független technológia ne függjön a doboz hardverétől annak programozása Egyik akkori nyelv sem volt megfelelő, ezért terveztek egy újat. A projekt (és vele az új nyelv) aztán lassan elhalt. 110/5

6 A Java nyelv verziói 1995: az Internet rohamos terjedése újra felvetette a platform-független technológia szükségességét. Újraéledt a project, de általánosabb célkitűzéssel. Eredménye egy Oak névre keresztelt programnyelv, ez volt a Java nyelv alapja, első verziója Mivel az Oak név foglalt volt, átnevezték a programnyelvet Java-ra, a fejlesztő környezetet JDK-ra (Java Development Kit). Java szigetén készítették az első kávét, amit Java kávénak neveztek, ez alapján nevezték el Java-nak az első platformfüggetlen programnyelvet, és lett a nyelv jelképe egy csésze kávé. 110/6

7 A SUN Green project fejlesztő csapata 1997-ben 110/7

8 A Java nyelv verziói Java Alfa JDK 1.0 Oak JDK 1.1 J2SE 1.2 Playground Java nyelv alapok Java API WebRunner (applet futtatáshoz) JVM JRE JDK JDBC AWT, RMI JavaBeans InnerClass Swing, Collections Just in Time compiler J2SE, J2EE, J2ME J2SE 1.3 J2SE 1.4 J2SE 5.0 Java SE 6 Kestrel Merlin Tiger Mustang JavaSound Java Naming and Directory Interface Java Platform Debugger 110/ XML support JDBC 3.0 Regex Exception chaining For-each loop Generics Autoboxing Enums JDBC 4.0 Java Compiler API Annotations GSS, Kerberos, LDAP support

9 110/9

10 A Java nyelv verziói : az Oracle megveszi a Sun Microsystems-t. Az ez utáni verziókat az Oracle fejleszti Java SE 7 Dolphin String in Switch New exception handling java.nio package Java SE 8 Spider Lambda Expressions Pipelines and Streams Date and Time API JDK 9 Jigshow Modularity JVM options jshell 110/10

11 110/11

12 Kávé bébi! Minden class fájl hexa kódja így kezdődik! 110/12

13 A Java nyelv jellemzői Magas szintű programozási nyelv: platform-független általános célú teljesen objektum-orientált egyszerű interpretált (de speciális módon) elosztott (distributed) robosztus biztonságos hordozható többszálú (multithreaded) A C++ ismeretében született, annak formalizmusát tekintette mintának 110/13 A C++ hátrányait igyekezett kiküszöbölni

14 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) A platform olyan hardver vagy szoftverkörnyezet, ahol a programok futnak. A legtöbb platform a hardvert és az operációs rendszert jelenti. A Java platform annyiban különbözik a legtöbb más platformtól, hogy teljesen szoftverplatform, és más hardver alapú platformokra épül. A Java platform két komponensből áll: Java API Java VM 110/14

15 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) A Java API igen sok (több ezer) használatra kész szoftverkomponenst tartalmaz: csomagokba szervezett osztályokat és interfészeket. A Java Virtual Machine egy program, amely az előállított platform-független bájt kódot lefuttatja az adott hardveren. A Java bájtkódot gépi kóddá alakítja a Java VM. Minden Java értelmező, akár a fejlesztőkörnyezet, akár egy böngészőben futó applet, tartalmaz Java VM-et a futtatáshoz. 110/15

16 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) 110/16 Olyan programozási nyelv, amit széleskörűen fel lehet használni szoftverek írására. Tetszőleges témakörben készíthetők programok, a Java támogatja: a hálózatok használatát, adatbázis kezelést, nemzetközi programozást. A java alkalmas: asztali alkalmazások, appletek (böngészőben futtatható programok), szervletek (dinamikus tartalmat generáló, szerver oldalon futó programok) készítésére.

17 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) A Java C / C++ szerű nyelv, de nem vette át azokat a nyelvi elemeket, amelyek veszélyes konstrukciókat engednek meg (pl. többszörös öröklődés, pointerek, operátor overloading ) Megvalósítja az összes OOP alapelvet: Adatok és a hozzájuk kapcsolódó tevékenységek egységbe zárása (encapsulation) Alapegység: osztály, melynek építőkövei: adattagok, metódusok. 110/17

18 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) 110/18 Információ rejtés: Egy objektum adatai a külvilág számára hozzáférhetetlenek. Egy objektum a külvilággal csak az interfészén keresztül tarthatja a kapcsolatot. (Interface: a külvilág számára elérhető módszerek metódusok együttese.) A módszerek implementációja rejtett. Öröklődés (inheritance): az osztályok egy részét már meglévő osztályok továbbfejlesztésével hozzuk létre, úgy, hogy további adattagokkal, illetve metódusokkal bővítjük. Többalakúság (polimorphism): A származtatott osztályokban lehetnek ugyanolyan elnevezésű, de más tevékenységű metódusok, mint az ős osztályban => áttekinthető kód, nem kell az elnevezéseket variálnunk.

19 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) A Java nyelv a szintaxisát főleg a C és a C++ nyelvektől örökölte, viszont sokkal egyszerűbb objektummodellel rendelkezik, mint a C++. A Java nyelv könnyen megtanulható. Ez nem jelenti azt, hogy jó Java programok írása is könnyű feladat! Nagyon nagyméretű a programozási környezethez tartozó standard könyvtár készlet! Ez hatékonyabbá teszi a programozást (sok kódot nem kell nekünk megírni), de nehezíti a program megtanulását. 110/19

20 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) A Java egyszerre fordított és interpretált A legtöbb programozási nyelv esetén fordítást vagy értelmezést hajtunk végre, mielőtt a program futna a gépünkön. A Java esetén a kettőnek egy különös keverékét használjuk. Először a forrásprogramot (myprogram.java) a fordító (compiler, javac.exe) egy közbülső nyelvre fordítva Java bájtkódot (myprogram.class) állít elő, és ezt a platform-független kódot értelmezi és futtatja a Java VM (interpreter, java.exe). 110/20

21 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) 110/21 A fordítás egy alkalommal történik, az értelmezés pedig minden alkalommal, ahányszor a program végrehajtódik. A Java bájtkódot gépi kóddá alakítja a Java VM. Minden Java értelmező, akár a fejlesztőkörnyezet, akár egy böngészőben futó applet, tartalmaz Java VM-et a futtatáshoz. A fordítást és értelmezést is alkalmazó hibrid megoldás manapság egyre nagyobb népszerűségnek örvend. A Microsoft.Net platformja sok architektúrális elemet vett át a Javától, és a web hagyományos értelmező megoldásai ma már sokszor előfordítással is kombinálhatók.

22 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) 110/22 A Java alkalmas elosztott rendszerek kialakítására. Elosztott rendszernek nevezzük azt a kommunikációs csatornán keresztül összekötött, autonóm műveletvégző egységekből álló számítógépes rendszert, amely a komponensek összehangolásával képes informatikai feladatok közös megoldására. Az RMI (Remote Method Invocation), azaz távoli metódushívás egy olyan eszköz a Java nyelvben, mely lehetővé teszi más VM-ben elhelyezkedő objektumok metódusainak meghívását.

23 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) Az RMI rendszert úgy tervezték, hogy a hálózaton elosztott objektumok viselkedése hasonló legyen a helyi objektumok viselkedésével, de ne egyezzen meg, a teljes transzparencia biztosítása nem volt cél. A rendszer elrejti a kommunikációt végző részt, és a metódushívás hasonló a helyi, azaz lokális objektumok metódusainak meghívásával, bizonyos megszorításokkal és kötöttségekkel. 110/23

24 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) 110/24 Robusztus egy nyelv, ha megakadályozza vagy futás közben kiszűri a programozási hibákat. A robusztusság nyelvi szinten a szigorú, statikus típusosságban jelenik meg. Minden adatnak fordításkor jól definiált típusa van, nincsenek automatikus konverziók, az explicit konverzió csak kompatibilis típusoknál sikerül, egyébként legkésőbb futtatáskor programhibát (exception) okoz. A dinamikus szemétgyűjtés megkímél bennünket a hasznos memória elszivárgásától (memory leak).

25 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) 110/25 Biztonságos egy nyelv, ha megakadályozza, hogy rosszindulatú programok kerüljenek a rendszerünkbe. A biztonság egyik alappillére a robusztusság, a fordító csak korrektül viselkedő programokat ad ki magából. A VM betöltője ellenőrzi, hogy az elindított program megfelel-e a nyelv szabályainak. Ha az elindított programok átjutottak a betöltő konzisztencia-ellenőrzésén, akkor a virtuális gép felügyelete alatt kezdenek futni, ez ellenőrzi, hogy a programok csak engedélyezett tevékenységet hajtanak végre.

26 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) Szigorúan szabályozott - vagy teljesen tiltott - például helyi állományokhoz való hozzáférés, tiltott más helyi programok indítása, jelentősen korlátozott a hálózaton felvehető kapcsolatok címzettje. A Java SE 6-ban megjelent GSS, Kerberos, LDAP elosztott azonosítási rendszerek, és a meglévő MD5, SHA titkosítási rendszerek szintén növelik a biztonságot. 110/26

27 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) 110/27 Ahhoz, hogy a lefordított program változtatás nélkül futtatható legyen különböző hardver architektúrákon, a fordítóprogram a programot nem egy konkrét processzor gépi kódjára, hanem egy képzeletbeli hardver (VM) utasításrendszerére fordítja le. Az így létrejött közbülső, ún. Byte kódot töltjük le a célarchitektúrára, ahol a virtuális gépet megvalósító program értelmezi és hajtja végre. Egy új architektúrán akkor futtathatók a Java programok, ha már implementálták rá a virtuális gépet, beleértve a rendszerkönyvtárakat is.

28 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) A virtuális gépet C-ben írták, a kód a POSIX.1 szabványnak megfelelő operációs rendszert tételez fel, így viszonylag kis munkával hordozható. A hordozhatóság érdekes aspektusa a fejlesztői környezet hordozhatósága. A környezet egyes részei, mint például a fordítóprogram, nyomkövető eszközök, vagy maga a HotJava böngésző is Java nyelven íródott. Viszont ha a Java programok hordozhatók, akkor egy pillanat alatt az egész környezet is átkerülhet egy új architektúrára. 110/28

29 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) 110/29 A programok jelentős része párhuzamosan végrehajtható részletekre - vezérlési szálakra - bontható. Így jobban kihasználható a számítógép központi egysége, a programok a külső - például felhasználói - eseményekre gyorsabban reagálhatnak. Az egymással kommunikáló, viszonylag laza kapcsolatban álló szálakra bontott feladat könnyebben áttekinthető, megvalósítható és optimalizálható. A többszálú programozáshoz a Java nyelvi szinten biztosítja az automatikus kölcsönös kizárást: szinkronizált (synchronized) módszerek vagy utasítások, valamint a szálak létrehozásához, szinkronizációjának megvalósításához a rendszerkönyvtár tartalmaz egy ún. Thread osztályt.

30 A Java nyelv jellemzői Platform-független Általános célú Teljesen objektum-orientált Egyszerű Interpretált (de speciális módon) Elosztott (distributed) Robosztus Biztonságos Hordozható Többszálú (multithreaded) A Java virtuális gép a szálak futtatásához prioritáson alapuló preemptív - de nem feltétlenül időosztásos - ütemezőt tartalmaz. A többszálú programozás támogatása ellenére a Java nyelv valósidejű programok írására nem alkalmas. A virtuális gép nem tartalmaz határidős ütemezési képességeket, de még a prioritás-öröklést sem ismeri, a jelenleg implementált szemétgyűjtő algoritmus sem alkalmas valósidejű futtatásra - bár ez utóbbi a virtuális gép "magánügye", a programok változtatása nélkül könnyen lecserélhető. 110/30

31 Java fejlesztő környezetek A SUN az alábbi részekre (kiadásokra) osztja a Java alapú szabványos eszközöket: J2SE - Java 2 Platform, Standard Edition J2EE - Java 2 Platform, Enterprise Edition J2ME - Java 2 Platform, Micro Edition 110/31

32 Java fejlesztő környezetek J2SE Standard Edition Általános fejlesztési környezet, mindazon alapszolgáltatások, amelyek Java programok készítését teszik lehetővé. Legfontosabb részei maga a Java nyelv, alapvető hálózati szolgáltatások, RMI, applet és a szervlet, lokális komponensek (JavaBeans), GUI (platform-független felhasználói interfész elemek), és még nagyon-nagyon sok más /32

33 Java fejlesztő környezetek J2EE - Enterprise Edition A J2SE szolgáltatásait is tartalmazza, ezen felül a legfontosabb részei: komponens szemléletű fejlesztés a nagyméretű alkalmazások készítését támogatja Web szolgáltatás alapú alkalmazások készítése biztonságos, robosztus rendszerek fejlesztésének eszközei J2ME - Micro Edition Kis erőforrásokkal rendelkező rendszerekre optimalizált Telefonok, vezeték nélküli eszközök, beágyazott rendszerek stb. fejlesztéséhez 110/33

34 Teszt 1. Tegye időrendbe az eseményeket! Kezdje a legkorábbival!? 110/34

35 Teszt 2. Milyen fejlesztő környezetek léteztek 2017-ben? Java SE JDK, Java SE JRE, Java ME SDK, Java EE SDK Java SE JDK, Java SE JRE Java SE JDK, Java ME SDK, Java EE SDK Java JDK, Java JRE Java JDK 110/35

36 A Java program felépítése A számítógépes program megmondja egy számítógépnek, hogy mit csináljon, jellemző módon azt, hogy az adatokkal milyen műveleteket végezzen. A számítógépes program egy programnyelven írt algoritmus, azaz bizonyos egzakt feltételeket, követelményeket (előre definiáltság, egyértelmű végrehajthatóság, stb.) kielégítő utasítássorozat. A Java program logikailag kizárólag osztályokból és interfészekből áll. Az osztályok (és interfészek) csomagokba (névtérhez hasonló fogalom) szervezhetők. 110/36

37 A Java program felépítése A Java program logikailag kizárólag osztályokból és interfészekből áll. Az osztályok (és interfészek) csomagokba (névtérhez hasonló fogalom) szervezhetők. Fizikailag: Az elkészítés szempontjából.java kiterjesztésű fájlok, melyek megfelelnek a nyelvi követelményeknek A fordító (compiler) szempontjából.java kiterjesztésű forrás fájl(ok), melyekből egy vagy több.class fájl készül A végrehajtás szempontjából (VM).class file-okból áll. A class file-ok lehetnek egy mappában, de jar vagy zip fájlba tömörítve, sőt adatbázisban tárolva is. 110/37

38 A Java program felépítése Forrás file szerkezete: csomag deklaráció import deklarációk osztály, interfész definíciók (ezek közül egy publikus!) Sorrend fontos! package sajat; import java.lang.*; public class Hello { public static void main(string[ ] args) { System.out.println( Helló világ ); } } 110/38

39 Csomag fogalma, használata Csomag: az osztály tárolási helye a fájlrendszerben Kettős rendszer: Gyári (fejlesztő környezet) könyvtárak Felhasználó által definiált könyvtárak 110/39

40 Csomag fogalma, használata Gyári (fejlesztő környezet) könyvtárak: Installáláskor jönnek létre A kialakított szerkezetnek megfelelően lehet elérni az egyes osztályokat 110/40

41 Csomag fogalma, használata pl. java.util.scanner osztály használata: java.util.scanner sc = new java.util.scanner(system.in); import java.util.scanner;... Scanner sc = new Scanner(System.in); import: jelzés a fordítónak, hogy a megadott könyvtárban keresse a hivatkozott objektumot, emiatt nem kell mindig kiírni az osztály elérési útvonalát. 110/41

42 Csomag fogalma, használata Felhasználó által definiált könyvtárak: Adott az a könyvtár, amiben dolgozunk, ahová az elkészült osztályok alapértelmezésként kerülnek (ez máshol van, mint a fejlesztő környezet könyvtárai) Ez alatt is létre hozhatók alkönyvtárak (csomagok), így szabályozható az egyes osztályok láthatósága, vagyis növelhető az adatbiztonság Pl.: ha nem adunk meg láthatósági módosítót egy adattagra, az ugyanabban a csomagban (ugyanabban a mappában) lévő osztályok látják az adattagot, a más csomagban lévők nem 110/42

43 Csomag fogalma, használata Felhasználó által definiált könyvtárak: Létrehozása: package m1; Pl.: 110/43 package m1; public class Szamol {... } package m2; public class Adat {... } Eredmény: hiába vannak félnyilvános adattagok az Adat osztályban, a Szamol osztályból nem láthatók!

44 Csomag fogalma, használata A felhasználó által létrehozott csomagok használata: package m1; public class Szamol { m2.adat a = new m2.adat(); } package m1; import m2; public class Szamol { Adat a = new Adat(); } Használatuk módja megegyezik a gyári csomagok használatával. 110/44

45 Csomag fogalma, használata Logikailag összetartozó osztályok (interfészek) Az elnevezés hierarchikus, de a csomagok tartalma nem! pl. java.awt, java.awt.event csomagok java.awt.event csomag nem része a java.awt-nek! az import java.awt.* az awt csomagban lévő összes osztályt importálja, de az alcsomagok tartalmát nem! Két különböző csomagban lehetnek azonos nevű osztályok (interfészek)! Az osztály nevére mindig teljes névvel (minősített névvel) kell hivatkozni! csomagnév.osztálynév (pl. java.util.date) 110/45

46 Csomag fogalma, használata java sajat.cs1.skprg; (Az SkPrg.class futtatása parancssorból) A cs1 nevű csomagot a Java rendszer egy környezeti változóval megadott keresési útvonalon keresi. A környezeti változó neve CLASSPATH Beállítása: set classpath= c:\java9; myjava Lehetséges a csomagoknak a tömörített módú tárolása is, ZIP vagy JAR fájlban set classpath=.; jdbcdriver.jar; skcsomagok.zip Ha nincs megadva a classpath, alapértéke az aktuális könyvtár Tehát a cs1 csomagot a VM az alábbi helyeken keresi: az aktuális munkakönyvtár alatti sajat alkönyvtárban a CLASSPATH által definiált könyvtárak sajat alkönyvtárában a CLASSPATH által definiált zip/jar fájlok sajat alkönyvtárában 110/46

47 Csomag fogalma, használata java sajat.cs1.skprg; (Az SkPrg.class futtatása parancssorból) A classpath megadható a VM-nek közvetlenül a parancssorból: Pl. Ha a sajat mappában állunk: java classpath.. sajat.cs1.skprg (.. a szülő könyvtárra utal) Tömörített fájlok közvetlen használatához meg kell adnunk a fájlok nevét a classpath-ban. Pl. Ha az SkPrg programhoz szükség van egy jdbcdriver.jar fájlra, amit a sajat\drivers mappában tartunk, a munkakönyvtárból kiadott helyes indító parancs: java classpath sajat/drivers/jdbcdriver.jar sajat.cs1.skprg 110/47

48 Csomag fogalma, használata sajat.cs1.skprog.java; A compiler számára fontos, hogy a forrás fájlokat hol keresse. Erre való a SOURCEPATH paraméter. A sourcepath logikája megegyezik a classpath változóval Fordításkor megadható az is, hogy a bájtkódok (.class) hová kerüljenek, erre való a d <classdir> Használatuk parancssorból: Pl. A munkakönyvtárban állunk. A forrásfájlok az src alkönyvtárban vannak, a lefordított állományok a bin alkönyvtárba kerüljenek: javac sourcepath src d bin sajat.cs1.skprog A csomagszerkezetnek léteznie kell az scr könyvtár alatt, és fordításkor (ha nem létezik) létrejön a bin könyvtár alá is! Az elkészült program indítása: java bin/sajat/cs1/skprg 110/48

49 Import objektumok keresési helyének megadása Utasítás a fordítónak, hogy mely csomagokban keresse a kódban hivatkozott objektumokat (osztályok, interfészek) Ha megadunk egy csomagot, a kódban nem kell kiírni az abban elérhető osztályok teljes elérési útvonalát. Példák import a.b.c.osztálynév; (konkrét osztály, teljes eléréssel megadva) import a.b.c.*; (a c csomag összes osztálya) Minden fordítási egységbe automatikusan importálódik a java.lang csomag összes osztálya. Import nélkül is használhatók az osztályok java.util.scanner sc = new java.util.scanner (System.in); 110/49

50 Teszt 3. A java.util csomagban kb. 100 db osztály van. Válassza ki a helyes választ a fordítás után keletkező bájtkód méretével kapcsolatban! 1 import java.util.scanner; public class Alma { Scanner sc = new Scanner (System.in); } 2 import java.util.*; public class Alma { Scanner sc = new Scanner (System.in); } Egyforma méretű bájtkód keletkezik Az 1. kód bájtkódja kisebb lesz, mint a 2. kódé 110/50

51 Teszt 4. import java.awt.*; Importáltuk a java.awt csomag teljes tartalmát. Szükséges külön importálni a java.awt.evet csomag tartalmát is? Igen, a * csak az awt csomagban lévő osztályokat importálja, az alcsomagok tartalmát nem. Nem, a * importálja az awt csomag teljes tartalmát, vagyis az alatta lévő csomagokban található osztályokat is. 110/51

52 Alapvető osztálykönyvtárak Csomag java.awt java.awt.event javax.swing java.util java.io java.text javax.applet java.lang java.math java.net java.rmi java.sql 110/52 Tartalma, feladata Alapvető grafikai elemek Grafikus elemek eseménykezelői További grafikai elemek Fontos segédosztályok (kollekciók, szkenner ) Kommunikáció Formátumok, formázó osztályok Appletek Alapvető nyelvi elemek Matematikai osztályok Hálózatkezelés Távoli metódushívás Adatbázis-kezelés

53 Fejlesztő környezetek Minimális: Java SDK (letölthető a oldalról) Legfrissebb verzió ( ) Egy tetszőleges szövegszerkesztő (Notepad) Kicsit fejlettebb: Notepad++ (notepad-plus-plus.org/download) Integrált: NetBeans (netbeans.org/downloads) Eclipse ( Oracle Jdeveloper ( developer-tools/jdev/downloads) Javelin (stepaheadsoftware.com/products/javelin) JProfiler ( 110/53

54 110/54

55 Hello Java program public class Hello { public static void main(string args[]) { System.out.print("Hello "); if (args.length == 0) System.out.println("World!"); else System.out.println(args[0] + "!"); } } Kötelezően egy Hello.java nevű fájlban kell lennie! 110/55

56 Fejlesztési lépések 1. Forrásfájl (Hello.java) megírása egy tetszőleges szövegszerkesztővel 2. Fordítás: javac Hello.java Abban a könyvtárban célszerű kiadni, ahol a forrásfájl van A fordítás eredménye a Hello.class bájtkód 3. Futtatás: java Hello BitMan A Hello.class fájlt futtatja javac Hello.java java Hello BitMan public class Hello { public static void main(string args[]) { System.out.print("Hello "); if (args.length == 0) System.out.println("World!"); else System.out.println(args[0] + "!"); } } Hello.java 110/56 CAFE BABE 37DA 4107 FAC4 660D 00F1 300BD 1FF0 35BB 337DD 239C Hello.class Java VM Hello BitMan!

57 A Java nyelv alapelemei 110/57

58 Azonosítók A Java a Unicode karakterkészletet használja, tehát akár ékezetes azonosítókat is használhatunk. Az azonosító betűvel kezdődő és betűvel vagy számmal folytatódó karaktersorozat. Az _ és a $ is a betűk közé sorolandó. Az azonosítóban használható karakterekre a Character.isJavaIdentifierPart(char) true-t ad eredményül Character.isJavaIdentifierFirst(char) megengedett első karakter vizsgálatához A betűk bármelyik karakterkészletből származhatnak. Az azonosító hossza tetszőleges. A JAVA is kis- és nagybetű érzékeny (case sensitive). Kulcsszavak, valamint néhány további foglalt szó nem lehet azonosító 110/58

59 Kulcsszavak abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while További foglalt szavak true false goto null 110/59

60 Azonosítók használata Változókhoz, metódusokhoz: Kisbetűvel írt, egyszerű, tartalomra utaló nevek: alma, sebesség, kiír(), szoroz() Az azonosítókat úgy tagoljuk, hogy az összetett szavak kezdőbetűit nagybetűvel, a többit kisbetűvel írjuk: maxsebességhatár, átlagérték() Csomagokhoz: Ékezet nélkül: sajat.forras, masik.kepek Konstansokhoz: Nagy betűkkel írt név: MAX_ÉRTÉK Osztályokhoz: Nagybetűvel kezdjük: Embere, AlapadatBeolvasóRutin 110/60

61 A Java nyelv típusai Elemi típusok, primitív típusok, érték típusok Egy egyszerű értéket képesek tárolni: számot, karaktert vagy logikai értéket. A változó neve közvetlenül egy értéket jelent. Minden típus előjeles, nincs előjel nélküli (unsigned) Típusnév boolean char byte short int long float 110/61 double Jelentése (tartalma) logikai 1 darab unicode karakter 1 byte egész 2 byte egész 4 byte egész 8 byte egész 4 byte lebegőpontos 8 byte lebegőpontos

62 Teszt 5. Milyen értékeket vehet fel egy byte típusú változó? /62

63 A Java nyelv típusai Referencia típusok Osztály Interfész Speciális szintaktikával rendelkező osztály típusok Tömb Felsorolás (enum) A referencia-változó más nyelvek mutató vagy memóriacím fogalmára hasonlít. Az objektum neve (objectname) nem egy közvetlen értéket, hanem csak egy referenciát jelent. Az értéket közvetetten, a referencián keresztül érhetjük el. 110/63

64 Literálok (Konstansok) boolean literálok: true, false char literálok: B, \n, \u00ff Egész literálok: int literál: 5, -48, 012 (okt), 0x5F (hexa) long literál: , 4L, 4l, 0x2DL byte, short literál: csak konverzióval (short)5 Lebegőpontos literál: double literál: 5.4, 0.12e3, 0.1E-2D float literál: 4.21e2F, 0.2E5f Szöveg (String) literál: szöveg Referencia literál: null 110/64

65 Lokális változók használata Deklarálás: adattípus azonosító; pl: int a; Lehet kezdőértéke is (inicializálás), pl: int a = 5; Ha nem adunk kezdőértéket, null-szerű értékkel jön létre Deklarálni bárhol lehet, de csak metóduson belül, de nemcsak egy blokk elején Hatóköre: a deklarálási ponttól az adott blokk végéig Adattag (tagváltozó): osztályon belül bárhol használható Lokális változó: metóduson vagy blokkon belül használható metódus (konstruktor) paramétere catch paramétere 110/65

66 Készülünk a vizsgára Helyes vagy hibás az alábbi kód? 2. Mit ír (vagy írna) ki a kód? public class Teszt { public static void main(string args[ ]) { int a = 2; int b = c = 3; System.out.print(""+a+b+c); } } 110/66

67 Lokális változók használata Nincs globális változó! Egyszerű típusú lokális változó definíciója egyben helyfoglalást is jelent. Végleges változó (nem változhat az értéke): final int fv = 17; Kötelező inicializálni! 110/67

68 Teszt 7. Melyik korrekt változónév? 2var var2 _var _3_ #var $var 110/68

69 Egydimenziós tömb Tömb: azonos típusú adatokat tartalmazó adatszerkezet Deklarálás: adattípus [ ] azonosító; int [ ] szamok; adattípus azonosító [ ]; int szamok [ ]; Helyfoglalás a tömb elemeinek (méret megadása): azonosító = new adattípus[elemek_száma]; szamok = new int [12]; Egy lépésben: adattípus [ ] azonosító = new adattípus[elemek_száma]; int [ ] szamok = new int [12]; Deklarálás és azonnali kezdőérték adás: int [ ] szamok = {2,0,4,3,7,5,2}; 110/69

70 Egydimenziós tömb Hivatkozás egy elemre: azonosító[sorszám], pl: a[2] = 4; Az indexelés 0-tól kezdődik! A tömb elemeinek a számát az azonosító.length utasítással kérdezhetjük le: int db = szamok.length; Több dimenziós tömb: pl: int mx [ ] [ ] = new int [4] [3]; mx [0] [2] = -5; int px[ ] [ ] = { {3,2}{0,0}{1,4} }; 110/70

71 Teszt 8. Mit ír ki a kód? public class Teszt { public static void main(string args[ ]) { int [ ][ ] szamok = { {1,2,3}, {0,-1,-2}, {4,5,6} }; System.out.println(szamok[1][1]); } } 110/71

72 Operátorok Operátor Hely Jelentés Operandusok [] index Tömböknél, az index egész. minősítés Referenciában, tagok között () fgv. hívás Függvény, paraméter ++ Növelés utólag numerikus -- Csökkentés utólag numerikus ++ Növelés előtte numerikus -- Csökkentés előtte numerikus + - előjelek numerikus ~ bit. tagadás egész! log. tagadás boolean () Típus konverzió Típus, kifejezés new példányosítás típus 110/72

73 Operátorok Operátor Hely Jelentés Operandusok * / % szorz, oszt, mod numerikus + - összead, kivon numerikus + string összefüzés String << bitléptetés egész >> bitléptetés egész >>> bitléptetés egész < <= reláció numerikus > >= reláció numerikus instanceof típus vizsg. referencia, típus == egyenlőség tetszőleges!= nem egy. tetszőleges 110/73

74 Operátorok Operátor Hely Jelentés Operandusok & bit and, v. log and egész v. boolean ^ bit xor, v. log xor egész v. boolean bit or, v. log or egész v. boolean && log and (röv) boolean log or (röv) boolean?: feltételes op boolean, tetsz. =, +=, értékadás változó, kifejezés Fontos (érdekes): referencián végezhető műveletek:., (típus), +(csak String), instanceof, ==,!=, = MÁS NEM! 110/74

75 Teszt Helyes vagy hibás az alábbi kód? 2. Mit ír (vagy írna) ki a kód? public class Teszt { public static void main(string args[ ]) { int a =2, b=5; System.out.print(++a*4+b+ +b++); } } 110/75

76 Kifejezések A kifejezések hajtják végre a program feladatát. A kifejezéseket többek között változók kiszámítására, értékük beállítására és a program futásának ellenőrzésére használjuk. A kifejezéseknek kétféle feladata van: végrehajtani a számításokat, amelyeket a kifejezés alkotóelemi határoznak meg, visszaadni a számítás végeredményét. A kifejezés változók, operátorok és metódushívások olyan sorozata (a nyelv szintaxisát figyelembe véve) amely egy értéket ad vissza. 110/76

77 Kifejezések kiértékelési sorrendje A kifejezések kiértékelési sorrendjét meghatározza: 1. Zárójelezés 2. Operandusok prioritása 3. Azonos prioritás esetén balról-jobbra szabály, kivétel az értékadás, amely jobbról-balra értékelődik ki. A kifejezésekben a metódushívások ("függvény hívások") sorrendje is a kiértékelés sorrendjét követi. 110/77

78 Kifejezések kiértékelési sorrendje Zárójelezés: x + y / 5 Ha határozattan nem jelezzük a sorrendet, amely szerint akarjuk, hogy az összetett kifejezés kiértékelődjön, akkor a sorrendet az operátorok precedenciája fogja meghatározni. A magasabb precedenciával rendelkező operátorok hajtódnak végre elsőként. Például az osztás operátor magasabb precedenciájú, mint az összeadás. Így a következő két kifejezés megegyezik egymással: x + y / 5 és x + (y / 5) Zárójelek használatával megváltoztathatjuk a kiértékelés sorrendjét: (x + y) / 5 110/78

79 Operátorok precedencia (elsőbbségi) szintje 110/79 Típus Operátorok postfix expr++ expr-- unáris ++expr --expr +expr -expr ~! multiplikatív * / % additív + - léptetés << >> >>> relációs < > <= >= instanceof egyenlőség ==!= bitenkénti és & bitenkénti kizáró vagy ^ bitenkénti vagy logikai és && logikai vagy feltételes? : értékadás = += -= *= /= %= &= ^= = <<= >>= >>>=

80 Operátorok precedencia (elsőbbségi) szintje A táblázatban legfelül a legnagyobb precedenciával rendelkező operátor található. A magasabb precedenciával rendelkező operátorok előbb hajtódnak végre, mint az alacsonyabbal rendelkezők. Az azonos szinten elhelyezkedő operátorok azonos precedenciával rendelkeznek. Ha azonos precedenciájú operátorok szerepelnek egy kifejezésben, akkor szabályozni kell, hogy melyik értékelődjön ki elsőként (zárójelek). Minden bináris operátor, kivéve az értékadó operátorokat balról jobbra hajtódnak végre. Az értékadó operátorok jobbról balra hajtódnak végre. 110/80

81 Típuskonverzió A Java erősen típusos nyelv, a fordító a típus kompatibilitásának ellenőrzését minden lehetséges esetben elvégzi. Egy típus kompatibilis egy másik típussal, ha az adott környezetben helyettesíthető vele. Bizonyos műveletek végrehajtása előtt az operandus típusát konvertálni kell egy másik típussá. A típuskonverzió kiváltási módja lehet: Implicit (automatikus) a fordító automatikusan elvégzi Explicit (kényszerített) a programozónak kell azt kikényszeríteni. A konverzió iránya lehet: Szűkítő 110/81 Bővítő

82 Típuskonverzió Elemi típusok konverziója Automatikus konverzió a bővebb típus irányába 110/82 long float: Jegyvesztés lehetséges! boolean numerikus, numerikus boolean: Nincs! char numerikus, numerikus char: Nincs! Automatikus konverzió műveletvégzéskor A műveletekben a byte és short int-ként szerepel, a float double-ként. A két operandusú műveletekben a szűkebb típus a bővebb típusként vesz részt, eredmény a bővebb típus

83 Típuskonverzió Elemi típusok konverziója Automatikus konverzió műveletvégzéskor Egy operandusú műveletek esetén: Ha az operandus típusa int-nél szűkebb (byte, short), akkor az operandust int típusúvá konvertálja, egyébként nem konvertál. A float típus double típusként vesz részt a műveletekben Két operandusú műveletek esetén: Mindkét operandust a kettő közül a bővebb, de minimum int típussá konvertálja. 110/83

84 Típuskonverzió Példák automatikus konverzióra Kifejezés Eredeti típusok Konvertált típusok Kifejezés típusa 1b * 1s byte * short int * int int 1b + 1b byte + byte int + int int 1b + 1 byte + int int + int int 1i / 1L int / long long / long long 1f + 1i float + int float + float float 1L 1s long short long long long 1L * 1.0 long * double double * double double 1c / 1b char / byte int / int int 1d + 1f double + float double + double double 110/84

85 Típuskonverzió Elemi típusok kikényszerített konverziói típus konverziós operátorral: Típuskényszerítésről beszélünk, ha a programozó egy kifejezés értékére ráerőltet egy típust: (<típus>) <kifejezés> int a = (int) 5.8; short b = (short) A ; int c = (int) true; double x = 5 / (double) 2; 110/85

86 Típuskonverzió A konverzió iránya double d; int i = 5; d = i; int konvertálása double típussá implicit módon. Ez bővítés. int i; d = 79.4; i = (int) d; int i; d = 79.4; i = d; double konvertálása int típussá explicit módon. Ez szűkítés. Szintaktikai hiba!!! 110/86

87 A Java nyelv utasításai Blokk Lokális változó deklaráció Üres utasítás Kifejezés utasítás Elágazások (if, switch) Assert utasítás Ciklusok (while, do, for) Ugró, vezérlésátadó utasítások (break, continue, return) Kivételek kezelésével kapcsolatos utasítások (throw, trycatch) 110/87

88 A Java nyelv utasításai Blokk { } utasítás1 utasítás2 stb. Határai: { } A blokk utasításait sorban hajtja végre A blokkban levő utasítások bármilyenek lehetnek, akár blokk utasítások is Lehet olyan blokk amiben nincs utasítás 110/88

89 A Java nyelv utasításai Lokális változó deklaráció Szintaktika (nem tömb esetén): típus elem; típus elem, elem; Ahol az elem egy azonosító, vagy egy azonosító=inicializáláls kifejezés Pl. int a; String b= alma,c; int d, e=1; Értéke, ha nem inicializáljuk definiálatlan. A fordító hibát jelez, ha hivatkozunk rá értékadás előtt. Hatásköre a blokk, amelyben deklarálták, azt elhagyva el is pusztul (referencia változók esetén?) 110/89 Elfedi a külső blokk egyező nevű azonosítóit

90 A Java nyelv utasításai Üres utasítás ; Kifejezés utasítás kifejezés; Lehet:értékadás, increment, decrement, függvény hívás, objektum létrehozás pl. a+=2; De: a+2; Hibás! 110/90

91 A Java nyelv utasításai Feltételes utasítások: IF A feltétel csak logikai kifejezés lehet if (feltétel) { utasítások } else if (feltétel) { utasítások } else { utasítások } 110/91

92 Teszt 10. Helyes vagy hibás az alábbi kód? public class Teszt { public static void main(string args[ ]) { int i=1; if (i) System.out.println("Oké!"); } } 110/92

93 Teszt 11. Mit ír ki a kód? public class Teszt { public static void main(string args[ ]) { int nap=5, perc=3, d=0; if (nap>=2 && perc!=0) { d++; if (nap>5 perc!=3) d--; else d++; } System.out.println(d); } } 110/93

94 A Java nyelv utasításai Feltételes utasítás: SWITCH Az érték típusa csak: byte, short, int, char, ezek burkoló osztályai, vagy enum lehet Az értékkel megegyező címke a belépési pont Kiugrás a break utasítás hatására A default címke nem kötelező, de ez a belépési pont, ha egyik címkével sem egyezik az érték 110/94 switch (érték) { case címke1: utasítás; break; case címke2: utasítás; break; case címke3: utasítás; break; default: utasítás; break; }

95 Készülünk a vizsgára public class Teszt { public static void main(string args[ ]) { int szam = 7; switch (szam) { case 1: case 3: case 5: case 7: case 9: System.out.println("Páratlan"); break; case 2: case 4: case 6: case 8: System.out.println("Páros"); break; default: System.out.println("Csak 1 és 9 között működök!"); } } } 110/ Helyes vagy hibás a kód? 2. Mit ír (vagy írna) ki a kód?

96 A Java nyelv utasításai Kódtesztelés: ASSERT utasítás Tesztesetek írásakor a rendszerben lévő metódusokat hívjuk, és az assert segítségével ellenőrizzük, hogy a kívánt eredményt kapjuk-e assert x.szamol(2,2) == 8; Ha az assert után megfogalmazott logikai kifejezés hamis eredményt ad, a környezet AssertionError exception-t dob. Alaphelyzetben futtatáskor az assert működése ki van kapcsolva, így a VM átlépi az assert kódokat. Bekapcsolás: java ea ProgramNeve 110/96

97 A Java nyelv utasításai Ciklus: WHILE while (feltétel) { utasítások } A feltétel csak boolean eredmény adó kifejezés lehet A ciklusmag lehet egyetlen utasítás, de lehet blokk is Elöltesztelő, igaz feltétel esetén ismétli a ciklusmagot 110/97

98 A Java nyelv utasításai Ciklus: DO do { utasítások } while (feltétel) A feltétel csak boolean eredmény adó kifejezés lehet A ciklusmag lehet egyetlen utasítás, de lehet blokk is Hátultesztelő, igaz feltétel esetén ismétli a ciklusmagot 110/98

99 A Java nyelv utasításai Ciklus: FOR Hagyományos alak Java 5.0-tól továbbfejlesztett változat tömbökhöz, gyűjteményekhez for (inicializálás; feltétel; növekmény) { utasítás(ok) } Az inicializálás egy olyan kifejezés, amely kezdőértéket ad a ciklusnak A feltétel kifejezés azt határozza meg, hogy meddig kell a ciklust ismételni A növekmény egy olyan kifejezés, amely minden 110/99 ismétlődés után végrehajtódik a ciklusban

100 Teszt 13. Melyik ciklus hajtódik végre legalább egyszer a következő deklaráció mellett? int a = 10, b = 12; while (a >=10 && b!=0) {...} do{... } while (a==b b<0); for (int i=5; i<0; i--){...} while (a<0 (a+b)%2 == 0 ) 110/100

101 Készülünk a vizsgára Helyes vagy hibás az alábbi kód? 2. Mit ír (vagy írna) ki a kód? public class Teszt { public static void main(string args[ ]) { for (int k=0; k<=6; k++) { int s = k%5; s *= s; } System.out.print(s+" "); } } 110/101

102 Teszt 15. Jelölje meg az összes igaz állítást! A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag A do és while kulcsszavak közötti egyetlen utasítást nem kell blokkba tenni A for utasítás fejében kötelező ciklusváltozót deklarálni A for elöltesztelő ciklus, emiatt lehet, hogy egyszer sem hajtódik végre a ciklusmag 110/102

103 A Java nyelv utasításai Ciklus: FOR Továbbfejlesztett változat tömbökhöz, gyűjteményekhez for (elemtípus elem : tároló) { utasítás(ok) } Működés: az elem rendre felveszi a tároló elemeit és minden érték mellett végrehajtódik az utasítás. Példakód: 110/103 int [ ] tomb = {1,3,5,6,8}; for (int a : tomb) { System.out.println(a); }

104 A Java nyelv utasításai Ugró, vezérlésátadó utasítások: BREAK Kilép a blokkból amiben szerepel, és a blokkot követő utasításra adódik a vezérlés. Csak switch, while, do, for utasításában levő blokkban használható. Switch esetén szerepe, hogy ne kerülhessen át a végrehajtás a következő case-re. Ciklusok esetén, hogy a ciklusból kilépjünk. break címke; utasítás Egymásba ágyazott blokkok esetén a belső blokkban levő break a címkével megjelölt külső területre léphet ki, így tetszőleges helyen folytatódhat a program végrehajtása 110/104

105 A Java nyelv utasításai Ugró, vezérlésátadó utasítások: CONTINUE Csak ciklusok blokkjában használható. A blokk végére ugrik, azaz a ciklusmag hátralevő részét átugorja. continue címke; utasítás A break-hez hasonlóan egymásba ágyazott ciklusoknál használható 110/105

106 A Java nyelv utasításai Ugró, vezérlésátadó utasítások: RETURN Kilép a függvényből és a függvény hívás utáni utasításon folytatódik a végrehajtás. Csak voidfüggvényekben használható. return kifejezés; utasítás Kilép a függvényből és a függvény hívás helyére behelyettesítődik a kifejezés értéke. Csak nem void függvényekben használható. 110/106

107 A Java nyelv utasításai Kivételek kezelésével kapcsolatos utasítások THROW: kivétel dobása, generálása TRY: védett kód kijelölése CATCH: kivétel elkapása, a blokkban definiált utasítások végrehajtása FINALLY: végül, akár volt kivétel, akár nem, lefut. String s1 = sc.nextline(); //Beolvasás scannerről try { int szam = Integer.parseInt(s1); System.out.println("A szám: "+szam); } catch (NumberFormatException nfe) { System.out.println("Hiba: "+nfe.getmessage()); } 110/107

108 Teszt 16. Hány darab x-et ír ki a kód? public class Program { public static void main(string[ ] args) { for (int i=1; i<4; i++) for (int j=i; j<=4; j++) System.out.print("x"); } } 110/108

109 Felhasznált irodalom Ficsor Lajos elektronikus jegyzetei Elek Tibor elektronikus jegyzetei chortle.ccsu.edu/ Java course oldal anyagai oldal anyagai prog.hu oldal anyagai oldal anyagai G. Judit (szerk.): JAVA 2 útikalauz programozóknak, ELTE TTK Hallgatói Alapítvány, Budapest, 1999 Daniel J. Berg, J. Steven Fritzinger: JAVA felsőfokon,wiley, 1999 Joshua Bloch: Hatékony Java, /109

110 VÉGE VÉGE 110/110

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv Java I. A Java programozási nyelv története,, alapvető jellemzői Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 02. 12. Java I.: Történet, jellemzők, JDK JAVA1 / 1 Egy kis történelem

Részletesebben

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv Java I. A Java programozási nyelv története,, alapvetı jellemzıi Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 02. 12. Java I.: Történet, jellemzık, JDK JAVA1 / 1 Egy kis történelem

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

A Java nyelv. Bevezetés, alapok Elek Tibor

A Java nyelv. Bevezetés, alapok Elek Tibor A Java nyelv Bevezetés, alapok Elek Tibor A Java nyelv jellemzıi Interpreteres Forrás file fordítás Bytekódú file-ok (class fileok, nem gépikód, nem futtatható, egy új forrásnyelv) Interpreter: betölti,

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

Részletesebben

Bevezetés a Java programozási nyelvbe

Bevezetés a Java programozási nyelvbe Bevezetés a Java programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a Java programozási nyelvbe JAVABEV / 1 Egy kis történelem 1. 1990-es évek eleje: a SUN belső project-je

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

JAVA ALKALMAZÁSOK 1. ELŐADÁS 2/22/2017 1

JAVA ALKALMAZÁSOK 1. ELŐADÁS 2/22/2017 1 JAVA ALKALMAZÁSOK 1. ELŐADÁS 2/22/2017 1 TARTALOM Bevezető okövetelmények és Jegyzetek Az első csésze kávé Java fejlesztőkörnyezet és IDE bemutatása oaz első alkalmazás obájtkód (javac), Fordítás bájtkódra,

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Bevezetés a Java programozási nyelvbe

Bevezetés a Java programozási nyelvbe Bevezetés a Java programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a Java programozási nyelvbe JAVABEV / 1 Egy kis történelem 1. 1990-es évek eleje: a SUN belső project-je

Részletesebben

A Java programozási nyelv

A Java programozási nyelv 1. óra A Java programozási nyelv Bevezetés, alapfogalmak Változók, egyszerű típusok, tömb Vezérlési szerkezetek Standard I/O legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Java programozási nyelv Témakörök

Részletesebben

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet Eötvös Loránd Tudományegyetem Informatikai Kar Programozási technológia I 1. gyakorlat A Java nyelvi alapjai, a NetBeans környezet 2012.02.16. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

1. Egyszerű (primitív) típusok. 2. Referencia típusok

1. Egyszerű (primitív) típusok. 2. Referencia típusok II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget

Részletesebben

OOP: Java 1.Gy: Java alapok

OOP: Java 1.Gy: Java alapok OOP: Java 1.Gy: Java alapok Eclipse alapok +INFOMATRIX O O P Objektum Orientált Programozás 50/1 B ITv: MAN 2019.02.08 Info Mátrix 50/2 Rólam 50/3 Szűcs Miklós Alias: BitMan Mesteroktató Informatika épület,

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs Szoftver labor III. Dr. Csébfalvi Balázs Irányítástechnika és Informatika Tanszék e-mail: cseb@iit.bme.hu http://www.iit.bme.hu/~cseb/ Tematika Bevezetés Java programozás alapjai Kivételkezelés Dinamikus

Részletesebben

Java. JIT (Just in Time) fordítók alkalmazása, optimalizálás AOT (Ahead of Time) fordítók alkalmazásának lehetősége

Java. JIT (Just in Time) fordítók alkalmazása, optimalizálás AOT (Ahead of Time) fordítók alkalmazásának lehetősége Bevezetı a Java világába Java Magas szintű, bytecode alapú, objektumorientált Virtuális gép (VM Virtual Machine): egy számítógép szoftver implementációjának tekinthető, amely képes végrehajtani a bytecode

Részletesebben

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

Programozási nyelv Java

Programozási nyelv Java Programozási nyelv Java 1. gyakorlat Félév tematikája Bevezetés, alapok Vezérlési szerkezetek Eljárások, függvények Csomagok Tömbök, adatbevitelek Osztályok, objektumok, Interfészek Öröklődés, absztrakt

Részletesebben

Java programozási nyelv 6. rész Java a gyakorlatban

Java programozási nyelv 6. rész Java a gyakorlatban Java programozási nyelv 6. rész Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október A Java programozási nyelv Soós Sándor 1/16 Tartalomjegyzék

Részletesebben

Szoftvertervezés és -fejlesztés I.

Szoftvertervezés és -fejlesztés I. Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik.

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

I. Bevezetés. 1. ábra A Java "logója"

I. Bevezetés. 1. ábra A Java logója I. Bevezetés 1. A Java nyelv története A Java nyelvet 1991-ben a Sun MicroSystems egy csoportja fejlesztette ki. Eredetileg kommunikációs eszközök programozására tervezték, de sikere messze meghaladta

Részletesebben

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke

Részletesebben

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék

Részletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3) Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char

Részletesebben

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség A JAVA TECHNOLÓGIA LÉNYEGE Programozás III Többlépcsős fordítás JAVA ALAPOK Platformfüggetlenség A JAVA TECHNOLÓGIA LÉNYEGE JAVA PLATFORM Két komponense: Java Virtual Machine (JVM) Java Application Programming

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás Objektum orientáltság alapjai Objektum: A való világ egy elemének ábrázolása, amely minden esetben rendelkezik: Állapottal,Viselkedéssel,Identitással

Részletesebben

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente

Részletesebben

Programozási technológia I.

Programozási technológia I. Programozási technológia I. 2.gyakorlat A tárgy célja A tárgy alapvető Java ismeretek nyújt. A fő célja, hogy a hallgatók képesek legyenek az UML diagramokból Java kód előállítására. Félév tematikája Bevezetés,

Részletesebben

1. Jelölje meg az összes igaz állítást a következők közül!

1. Jelölje meg az összes igaz állítást a következők közül! 1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.

Részletesebben

Java programozási nyelv 5. rész Osztályok III.

Java programozási nyelv 5. rész Osztályok III. Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Occam 1. Készítette: Szabó Éva

Occam 1. Készítette: Szabó Éva Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti

Részletesebben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

A C# PROGRAMOZÁSI NYELV

A C# PROGRAMOZÁSI NYELV A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework

Részletesebben

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1 Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA PROGRAMOZÁS 2.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,

Részletesebben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás

Részletesebben

Adatbázis és szoftverfejlesztés elmélet

Adatbázis és szoftverfejlesztés elmélet Adatbázis és szoftverfejlesztés elmélet Témakör 4. Összefoglalás 1. A kódolás eszközei Általános szövegszerkesztő Programozói szövegszerkesztő Fejlesztői környezet Vizuális fejlesztői környezet Általános

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is

Részletesebben

Programozási nyelvek (ADA)

Programozási nyelvek (ADA) Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)

Részletesebben

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 1. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Követelmények Gyakorlatok látogatása kötelező! (maximum 2 igazolatlan hiányzás) 2 db kisdolgozat

Részletesebben

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,

Részletesebben

Programozás I. Első ZH segédlet

Programozás I. Első ZH segédlet Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett

Részletesebben

Magas szintű programozási nyelvek 2 Előadás jegyzet

Magas szintű programozási nyelvek 2 Előadás jegyzet Magas szintű programozási nyelvek 2 Előadás jegyzet 1. Rendszerfejlesztés 0. lépés: Elemzés (analízis) 1. lépés: Tervezés a, technológia független rész b, technológia függő rész 2. lépés: Megvalósítás

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás

Részletesebben

GYAKORLATIAS JAVA MINTA

GYAKORLATIAS JAVA MINTA Java SE programozási alapok - alapelemek viszont a Javadoc-ban nem fog megjelenni. */ 4.2. Egyszerű és összetett típusok A programozás során az adatainkat (legyen az csak átmeneti is) ún. változókban tárolunk.

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén

Részletesebben

JAVA SE/ME tanfolyam tematika

JAVA SE/ME tanfolyam tematika JAVA SE/ME tanfolyam tematika TANFOLYAM TEMATIKA: A JAVA MEGISMERÉSE Java története, miért készült, miért népszerű NETBEANS környezet telepítése, megismerése Programozási alapok java nyelven Változók,primitív

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2010/2011-2 félév, 11. gyakorlat (az előző 2 gyak közül az egyiken ZH volt, a másik szünet miatt elmaradt) 1 JAR fájl készítés A JAR (Java

Részletesebben

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. Programozás III CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van a fejlesztő környezet és az osztálykönyvtárak is: rt.jar fájl

Részletesebben

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 2. előadás Console I/O bővebben Lásd mintaprogram 2015.09.21. Számítástechnika I. 2. Előadás 2 Számábrázolásról

Részletesebben

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Java Programozás 1. Gy: Java alapok. Ismétlés ++ Java Programozás 1. Gy: Java alapok Ismétlés ++ 24/1 B ITv: MAN 2018.02.18 Feladat Készítsünk egy komplett konzolos alkalmazást, mely generál egy számot 0 és 100 között (mindkét határt beleértve), feladatunk

Részletesebben

Vezérlési szerkezetek

Vezérlési szerkezetek Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását

Részletesebben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

OOP: Java 8.Gy: Gyakorlás

OOP: Java 8.Gy: Gyakorlás OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét

Részletesebben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Már megismert fogalmak áttekintése

Már megismert fogalmak áttekintése Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak

Részletesebben

S z á m í t ó g é p e s a l a p i s m e r e t e k

S z á m í t ó g é p e s a l a p i s m e r e t e k S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami

Részletesebben

Abstract osztályok és interface-ek. 7-dik gyakorlat

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 12. gyakorlat 1 Távoli metódushívás Java-ban (RMI) Java-ban a távoli metódushívás ( Remote Method Invocation, RMI) egy

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István Operátorok Műveletek Egy (vagy több) műveleti jellel írhatók le A műveletet operandusaikkal végzik Operátorok fajtái operandusok száma szerint: egyoperandusú operátorok (pl.:

Részletesebben

Kifejezések. Kozsik Tamás. December 11, 2016

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv A nyelv alapjai Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/34 Java információ források

Részletesebben

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

A JavaScript főbb tulajdonságai

A JavaScript főbb tulajdonságai JavaScript alapok A JavaScript főbb tulajdonságai Script nyelv azaz futás közben értelmezett, interpretált nyelv Legfőbb alkalmazási területe: a HTML dokumentumok dinamikussá, interaktívvá tétele Gyengén

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

Programozás II. 2. Dr. Iványi Péter

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem A J2EE fejlesztési si platform (application model) 1.4 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11.13. A J2EE application model A Java szabványok -

Részletesebben

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract

Részletesebben

AWK programozás, minták, vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás

Részletesebben

7. K: JAVA alapok Konzultáció

7. K: JAVA alapok Konzultáció Objektum Orientált Programozás 7. K: JAVA alapok Konzultáció 35/1B IT MAN B IT v: 2017.05.03 MAN Hiba, biztonságos program 01. Szintaktikai hiba imt i = 0; system.out.println( alma ); for (int i = 0, i

Részletesebben

Imperatív és procedurális programozás a Javában

Imperatív és procedurális programozás a Javában Imperatív és procedurális programozás a Javában Kozsik Tamás kto@elte.hu http://kto.web.elte.hu/ Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék 2008. Kozsik Tamás (ELTE)

Részletesebben