Programozás | Java, JSP » Dr. Pál László - Java bevezetés, nyelvi alapelemek

A doksi online olvasásához kérlek jelentkezz be!

Dr. Pál László - Java bevezetés, nyelvi alapelemek

A doksi online olvasásához kérlek jelentkezz be!


 2015 · 89 oldal  (1 MB)    magyar    72    2020. május 30.  
    
Értékelések

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

Tartalmi kivonat

Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 1.ELŐADÁS 2014-2015 tavasz Java bevezetés, nyelvi alapelemek Előadás tematika 2 1.Előadás: 2. Előadás: 3. Előadás: 4. Előadás: 5. Előadás: Bevezetés a Java nyelvbe: Java történet, Java nyelv tulajdonságai, Szintaxis, Programozói környezet, Egyszerű példák A Java nyelv alapelemei: változók, konstansok, metódusok, osztályok, objektumok, tömbök, vezérlési szerkezetek, operátorok. Csomagok használata és importálása. Objektumorientált programozás Javá-ban: Az osztályok részletes ismertetése. Példányváltozók, metódusok, metódusok hívása, metódus nevek túlterhelése objektumok használata, hozzáférési kategóriák. Statikus tagok: osztályváltozók, osztálymetódusok Konstruktorok, túlterhelés, láthatóság, getter-setter metódusok. Objektumorientált programozás Javá-ban: Konstruktorok, inicializáló blokkok, destruktor jellegű metódusok. Egységbe

zárás, öröklődés, polimorfizmus, absztrakt osztályok és metódusok. Interfészek. Interfészek közötti öröklődés, interfészek implementálása Rendező interface-ek: Comparator, Comparable; Interface készítés; equals() és hashCode() felüldefiniálása. Kivételkezelés Javá-ban Grafikus kezelői felület létrehozása (Java AWT) és esemény kezelés Az AWT csomag, Layout manager, AWT komponensek, Appletek készítése 6. Előadás: Grafikus kezelői felület létrehozása (Java Swing) SWING csomag, SWING komponensek 7. Előadás: Java Input/Output: Csatornák, leképzés fizikai adatszerkezetre, szűrők, véletlen elérésű file-ok, kapcsolat a file rendszerrel, kivételek kezelése. Sorosítás 8. Előadás: Hálózati alkalmazások készítése A java.net package, ServerSocket, Socket, és DatagramSocket osztályok 9. Előadás: 10. Előadás: 11. Előadás: Szálak. Szálak jellemzői, létrehozása, vezérlése Szinkronizálás Java Kollekciók és

generikus típusok Projektek védése Labor tematika 3 Nagyjából követi az előadás tematikát. Kitűzött feladatok közös illetve egyéni megoldása. Házi feladatok bemutatása  Fejlesztési eszközök:   JDK 8 (Java Platform, Standard Edition) (http://www.oraclecom/technetwork/articles/javase/i ndex-jsp-138363.html)  IDE szerkesztő: NetBeans  https://netbeans.org/  http://www.oraclecom/technetwork/articles/javase/index- jsp-138363.html Labor tematika – Fejlesztési eszközök 4  Egyéb fejlesztési eszközök:  Eclipse  https://eclipse.org/home/indexphp  IntelliJ IDEA  https://www.jetbrainscom/idea/  UML eszközök:  Visual Paradigm (Integrálható Netbeans-be, Eclipse-be)  ArgoUML  OpenAmeos Könyvészet és dokumentáció 5  Könyvtári könyvek  Angster Erzsébet, Objektumorientált tervezés és programozás. Java I-II (Bazele programării orientate pe obiecte), Ed. 4 Kör Bt, Budapesta, 2002.  Kathy Sierra, Bert Bates:

Agyhullám: Java, Kiskapú, 2011. Könyvészet és dokumentáció 6  Könyvtári könyvek  Antal Margit: Objektumorientált programozás, Scientia Kiadó, 2007  Más jegyzet:  http://nagygusztav.hu/sites/default/ files/csatol/java programozas 1.3p df Könyvészet és dokumentáció 7  Hasznos linkek  http://docs.oraclecom/javase/7/docs/  http://docs.oraclecom/javase/tutorial/  http://www.tutorialspointcom/java/  http://www.learnjavaonlineorg/  http://www.javatpointcom/ Könyvészet és dokumentáció 8  Előadások, labor feladatok, egyéb dokumentációk megtálalhatok az alábbi linken: http://www.emtesiculorumro/~pallaszlo/oktatas huhtml (Java programozás) Vizsgakövetelmények 9  Felmérési mód: kollokvium  Zárthelyi: 60% (11. hét (Labor))  Gyakorlat + Elmélet  Projekt: 30% (védés - 11. hét (Előadás))  Házi feladat: 10% (2 hetes határidő)  Mind a zárthelyi és projekt átmenő (5-ös) kell legyen a sikeres vizsgához 

Labor óra: max 3 hiányzás engedélyezett  Részletes követelmények 10 1.Előadás Tartalom: Java történet 1. 2. Java nyelv tulajdonságai 3. Programozói környezet 4. Java nyelv alapelemei: változók, konstansok, vezérlési szerkezetek, operátorok, metódusok, osztályok, objektumok, tömbök, csomagok használata Programozási nyelvek rangsor 2014 11  TIOBE  IEEE Spectrum Java nyelv bevezető a SUN Microsystems által kifejlesztett általános célú, objektumorientált programozási nyelv  A fejlesztések a ‘90-es évek elején kezdődtek és folytatódtak egészen napjainkig  2009-ben az Oracle felvásárolta a SUN céget  2011-ben, Java 1.7-es verzió az Oracle gondozásában  2014-ben, 1.8-as verzió  Szlogen: „write once, run anywhere”  Java nyelv jellemzői  Egyszerű  Szintaxisa hasonlít a C, C++ nyelvekre, de számos elemet egyszerűsítettek. Automatikus memória kezelés Objektumorientált  Elosztott   Támogatja a

HTTP, FTP protokollokat  Robusztus, biztonságos  Nincsenek pointerek Java nyelv jellemzői  Architektúra semleges, hordozható  Bájtkódot használ, amit a virtuális gép futtat  Interpretált  Just-In-Time (JIT) compiler  Többszálú  Párhuzamosításra lehet használni, ami hasznos lehet főleg több processzoros gépek esetén Java nyelv jellemzői A Java forráskód .java kiterjesztésű  A forráskód .class kiterjesztésű fájlokba fordítódik  A .class fájl bájtkódot tartalmaz (nem natív kód)  A bájtkódot a Java Virtuális Gép (Java Virtual Machine) hajtja végre  Java nyelv jellemzői  A Java VM (JVM) tetszőleges operációs rendszerre telepíthető, ezért ugyanaz a bájtkód (.class) mindegyik operációs rendszeren fut Java kronológia 1991: James Gosling, Oak (tölgyfa) nyelv  1996: JDK 1.0, fordító, virtuális gép, javac, appletek  1997: JDK 1.1  1988: J2SE 1.2, esemény kezelés, JIT  2000: J2SE 1.3, J2EE, J2ME,

JDBC, stb  2002: J2SE 1.4  2004: J2SE 5.0, generikus osztályok  2006: Java SE 6  2011: Java SE 7  2014: Java SE 8  Java szabványok  Java Standard Edition (J2SE)  Kliens alkalmazások, appletek készítése  Java Enterprise Edition (J2EE)  Szerver oldali alkalmazások készítése (Java Servlets, Java Server Pages)  Java Micro Edition (J2ME)  Mobil alkalmazások készítése Java keretrendszer – Java SE 8 19 Java nyelv  Eszközök, Java API   javac, java, javadoc, jar, JConsole, stb.  Felhasználói felületek  JavaFX, AWT, Swing  Integration libraries  JDBC  Java Virtuális gép Java keretrendszer – Java SE 8 20 Java keretrendszer – Java SE 8 21  Java platform leegyszerűsítve:  Java VM  Java API (Application Programming Interface):  Sok használatra kész szoftverkomponenst tartalmaz: csomagokba szervezett osztályokat es interfészeket Java környezet 22  Java programok futtatása  Elegendő a JRE (Java Runtime

Environment)  Java programok fejlesztése  Java Development Kit (JDK)  Tartalmazza a JRE-t és egyéb eszközöket:  javac: Java fordító  java: futtatóprogram  javadoc: dokumentáció generáló  jar: JAR fájlok kezelésére szolgál  IDE: pld. NetBeans Forrásprogram(.java) szerkezete 23 Csomagok importálása Main metódus: a program belépési pontja App a fordítási egység egyetlen publikus osztálya Forrásprogram 24 Egy forrásfájl neve a fájlban implementált osztály nevével egyezik meg  Ha a megvalósított osztály valamilyen csomagban (package) van, akkor a fájl a package nevével azonos alkönyvtárba kell elhelyezni  Fordítás, futtatás parancssorból 25  Fordításhoz használható a javac parancs  Példa: javac eloadasokE1Hello.java  Futtatás a java paranccsal történik  Példa: java eloadasok.E1Hello  A Path környezeti változó beállítása szükséges  Példa: set PATH=%PATH%;c:ProgramFilesJavajdk1.80 31in

Példa – Hello World!, NetBeans-ben 26 Példa – Hello World!, NetBeans-ben 27 Szerkesztés Futtatás, kimenet: 28 A Java nyelv alapelemei Azonosítók 29 A Java az Unicode karakterkészletet használja  Betűvel kezdődik – betűvel vagy számmal folytatódik  Case-sensitive, azaz különböznek a kis- és nagybetűk  Az azonosítók hossza nincs korlátozva  A nyelv kulcsszavai nem lehetnek azonosítók  Megjegyzések 30  Javában a megjegyzés (comment) két típusú lehet:  Egysoros megjegyzés: // Ez egy egysoros megjegyzes  Többsoros megjegyzés: /* */  Dokumentációs megjegyzés: /* / Literálok 31  Literál: egy állandó, amely beépül a program kódjába  Egész literál:  Decimális: +125, -12  Oktális: 021, 077  Hexadecimális: 0xa1, 0xff  Valós literál  Tizedes: 3.14  Lebegőpontos: -3.4e12  Karakter literál: ‘a’, ‘X’, ‘u0041’, ‘ ’  Szöveg literál: “almafa” Kivételes karakterek 32

Egyszerű típusok (primitív) 33 boolean: logikai típus (true, false)  char: 16 bites Unicode karakter  byte: 8 bites egész szám (-128 - +127)  short: 16 bit, (-32 768 - +32 767)  int: 32 bit (-2 147 483 648 - +2 147 483 647)  long: 64 bit (-9 223 372 036 854 775 808 - +.)  float: 32 bites lebegőpontos szám (-3,40292347E+38 +3,40292347E+38)  double: 64 bit (-1,79769313486231570E+308 - +.)  Változók 34 Változó: egy névvel azonosított memóriaterület  Egy változónak mindig van azonosítója, adott méretű memóriahelye, típusa és aktuális értéke  Javában minden változót deklarálni kell  Két típusú változó: egyszerű (primitív), referencia (lásd később)  Deklarálás, inicializálás:  típus változo1 [=kifejezes1], változo2;  Példa: double x = 4.5, y; Konstansok 35  Konstans:  Egy változónak a „befagyasztása”, azaz nem engedjük megváltoztatni  Nem összetévesztendő a literállal  Kódolási konvenció:

nagybetűvel írjuk  Példa: final int EVSZAM=2015; Operátorok 36 Java kifejezés: operandusokból és operátorokból (műveletekből) áll.  Operátor:   Unáris: egyetlen operandusa van  Prefix: operandus előtt szerepel (++i)  Postfix: operandus után szerepel (i--)  Bináris: két operandusa van Operátorok 37  Unáris postfix és prefix operátorok: [] tömbképző (lásd később) minősítő operátor .(pont) (param) metódus képző ~, ! Bitenkénti operátorok new példányosító operátor (lásd később) (típus) kifejezés típuskényszerítő +(plusz), -(minusz) előjel operátorok ++, -léptető operátorok Operátorok 38  Aritmetikai operátorok: + * / % összeadás kivonás szorzás valós osztás maradékképzés  Relációs operátorok: > nagyobb >= nagyobb vagy egyenlő < kisebb <= kisebb vagy egyenlő = = egyenlő ! = nem egyenlő Operátorok 39  Logikai operátorok: && logikai és || logikai vagy !

logikai nem & bitenkénti és | bitenkénti vagy ^ bitenkénti nem ~ bitenkénti tagadás (negáció) Feltételes kiértékelés: (feltétel) ? kif1 : kif2  Példa:  int y = 70; int x = (y>50)?100:0; Operátorok 40  Értékadó operátorok:  = alapértékadó operátor, érték rendelése változóhoz  Rövidített értékadó operátorok: +=, stb.  Példa: -=, *=, /=, %=, Kifejezések kiértékelési sorrendje 41  A kifejezések kiértékelési sorrendjét meghatározza:  Zárójelezés  Operandusok prioritása  Azonos prioritás eseten balrol-jobbra szabály, kivétel az értékadás, amely jobbrol-balra értékelődik ki. Operátorok precedenciája 42 Utasítások 43 Blokk utasítás: {}  Mindaz, amit abban a blokkban adunk meg, pontosan arra a blokkra érvényes  Egy blokk utasításokból áll  Minden utasítást pontosvessző zár le  Utasítások fajtái 44  Deklaráló utasítás (Memóriahelyek foglalása): int letszam; 

Értékadó utasítás (Memóriahelyek foglalása): int letszam;  Postfix és prefix növelő és csökkentő utasítások : letszam++; --letszam; Metódushívás: System.outprintln("Hello");  Példányosítás (Új objektum létrehozása):  aDatum = new Datum(2000,11,05); Programvezérlő utasítás: if (i==0) .  Üres utasítás: ; (csak egy pontosvessző)  Típuskonverziók 45 Java erősen típusos nyelv: a fordító a típus kompatibilitásának az ellenőrzését minden esetben elvégzi  Két szempont:   Automatikus (implicit) vagy kényszerített (explicit) konverzió  Szűkítő vagy bővítő konverzió  Példa: double d; int i = 5; d = i; // int konvertálása doubel-re implicit módon. Bővités Típuskonverziók 46  Példa: d = 79.4; i = (int)d; // double konvertálása int-re explicit módon. Szűkités ->79 i = d; //szintaktikai hiba  A szűkítő konverzió információvesztéssel jár Egyágú szelekció - if 47 

Példa Kétágú szelekció - if.else 48 if (feltétel) utasítás1; else utasítás2; if (feltétel) { utasítás; . } else { utasítás; . } Többágú szelekció - else if és switch 49 if (feltétel1) utasítás1; else if (feltétel2) utasítás2; . else utasításN; switch (kifejezés) { case érték1: utasítások; break; case érték2: utasítások; break; . default: utasítások; } Többágú szelekció - else if és switch 50 Iterációk – for 51 for (inicializálás; feltétel; léptetés) { utasítás1; utasítás2; . utasításN; } Iterációk – for  Parancsori paraméterek kiíratása: Iterációk – while, do while 53 while (feltétel) { utasítás1; utasítás2; . utasításN; } do { utasítás1; utasítás2; . utasításN; } while (feltétel); Iterációk – while, do while - Példa 54 Kiugrás ciklusból Break: az aktuális utasításblokkból (pl. ciklusból) való azonnali kiugrást eredményezi  Continue: hatására a

vezérlés az utasításblokk (ciklus) végére kerül  Példa:  Metódusok  Eljárás:  Utasítások egyszerű végrehajtása  Visszatérítési típusa: void (semleges)  Függvény:  Van visszatérítési értéke  Eljárásként is hívható  Statikus metódusból kizárólag az osztály statikus elemeire hivatkozhatunk Metódusok  Szintaxis: <módosítók>]<visszatérési típus><metódus neve> ([<formális paraméterlista>])[<throws .>] { <metódusblokk> }  Megjegyzések:  Javában csak érték szerinti paraméterátadás van, azaz a paraméter helyén szereplő értékről másolat készül. A metódus ezt a másolatot látja, használja  Fordítási hiba, ha függvényben van return nélküli ág; lokális változó nincs inicializálva Metódusok - Példa Metódusok - Példa Metódusok - Példa Java osztályok rendszerezése 61 Java API: kb. 2000 osztály  A java.lang csomag legfontosabb

osztályai:  Az Object osztály 62 Minden osztály közös őse  Bármely osztályból létrehozott példány “az egy” objektum  A Java minden objektumára jellemző metódusokat tartalmaz. Például:   boolean equals(Object obj)  String toString()  Class getClass() Primitív típus vs. Referencia 63  Primitív:  8 primitív típus: boolean, char, byte, short, int, long, float, double  A változó azonosítójával közvetlenül hivatkozunk a változó memóriahelyére  A deklaráló utasítás végrehajtása: memória foglalás  A programozó nem definiálhat primitív típust Primitív típus példa 64  Közvetlen (direkt) címzés: Referencia típus 65  Objektumra mutat  A változó azonosítójával az objektum memóriahelyére közvetve hivatkozunk egy referencián (hivatkozáson) keresztül  A hivatkozás rejtve marad (automatikus indirekció)  NULL referencia: nem mutat semmire, nem hivatkozik objektumra Referencia típus

példa 66 Ember ember = new Ember("Erika",1953); ember objektum címe Objektum létrehozása 67  Létrehozás a new operátorral: new <OsztályAzonosító>(<aktuális paraméterlista>)  Példányosítás  Memóriafoglalás  Konstruktorhívás: beállítja az objektum kezdeti állapotát  adatok  kapcsolatok  Visszaadja az új objektum referenciáját Objektum deklarálása 68  Deklarálás: <OsztályAzonosító> objektum;  Az objektum egy referencia típusú változó  Memóriafoglalás: csak a referencia részére  Az objektum létrehozása a programozó feladata <OsztályAzonosító> objektum; objektum=new <OsztályAzonosító>(<aktuálisparaméterlista>); <OsztályAzonosító> objektum = new <OsztályAzonosító>(<aktuális paraméterlista>); Objektum értékadás 69 Objektumok egyenlőségvizsgálata 70   Objektumok állapotát nem lehet a (==, !=) operátorokkal

összehasonlítani (referencia hasonlíás) Objektumok egyenlőségét az equals metódussal szokás megállapítani  Példa:  Kimenet: Objektumok egyenlőségvizsgálata 71   Objektumok állapotát nem lehet a (==, !=) operátorokkal összehasonlítani Objektumok egyenlőségét az equals metódussal szokás megállapítani  Példa:  Kimenet: Objektum élete, automatikus szemétgyűjtés 72  Automatikus szemétgyűjtés (garbage collection):  A rendszer bizonyos időnként automatikusan felszabadítja a hibatkozás nélküli objektumok memóriahelyét  Példa: ember1 = new String("Gábor"); ember1 = new String("Anikó"); A String osztály 73 Szöveg tárolására szolgál  Értéke egész élete során állandó marad  Unikód karakterek sorozata, a karakterek sorszámozottak (0 a legelső sorszám)  Létrehozás:  String szoveg=new String(”Kész!"); String szoveg=”Kész!";  Konstruktorok:  String() 

String(value: String), String(buffer: StringBuffer) A String osztály 74  Hossz, index  length(): int  charAt(index: int): char  Manipulált karakterláncok  toLowerCase(): String  toUpperCase(): String  trim(): String  replace(oldChar: char, newChar: char): String  substring(beginIndex: int, endIndex: int): String  Konkatenálás  concat(str: String): String A StringBuffer osztály 75 Manipulálható szöveg  Konstruktorok   StringBuffer()  StringBuffer(length: int)  StringBuffer(str: String)  Kapacitás, hossz, index  capacity(): int  length(): int  ensureCapacity(minimumCapacity: int)  setLength(newLength: int)  charAt(index: int): char A StringBuffer osztály - Példa 76 Objektum átadása paraméterként 77 Az aktuális paraméter értékadás szerint kompatibilis kell legyen a formális paraméterrel  Nem az objektum másolódik át, hanem csak a referencia  Az átmásolt referenciával éppúgy meg tudjuk változtatni az

objektumot  Objektum átadása paraméterként 78 Primitív típusok csomagolása 79  Célok:  Primitív típusú változók objektumként kezelése  Primitív típusokkal kapcsolatos információk lekérdezése  Minden primitív típushoz tartozik egy csomagoló osztály (wrapper class): Character, Boolean, Byte, Short, Integer, Long, Float, Double. A csomagoló osztályok példányai változtathatatlanok  Konstruktorok:  <Type> (<type> value) Például: Character cObj = new Character('A'); Primitív típusok csomagolása 80  Konstruktorok: <Type> (String s) Például: Boolean bObj = new Boolean("True");  Példánymetódusok:  String toString() Például: Double dObj = new Double(6099.8); //s=="6099.8” String s = dObj.toString();  <type> <type>Value() Például: Integer iObj = new Integer(30); int i = iObj.intValue(); double d = iObj.doubleValue(); // i==30 // d==30.0 Primitív típusok

csomagolása 81  Numerikus csomagoló osztályok  static final <type> MIN VALUE = <a típusnak megfelelı érték>;  static final <type> MAX VALUE = <a típusnak megfelelı érték>; Például: System.outprintln(ByteMIN VALUE);  static <type> parse<Type>(String s) Például: int i = Integer.parseInt("50"); // i==50 Java csomagok 82 Az osztályok, interfészek csoportosítását a Java nyelvi szinten támogatja, a csomag (package) segítségével  A csomagok hierarchikus rendszert alkotnak  A csomagnevekben az egyes szinteket pont választja el.   Példa: java.io,  java.math, stb A hierarchiaszintek száma tetszőleges lehet Java csomagok 83 A Java megengedi, hogy két külön csomagban legyen két azonos nevű osztály  minősített nevek (qualified name): az azonos nevű osztályok megkülönböztetésére szolgálnak  A minősített nevek az osztályt tartalmazó csomag teljes nevéből, és az osztály

egyszerű nevéből állnak  Csomagok deklarációja 84 Egy osztályt a package kulcsszó segítségével helyezhetünk el egy csomagban  Egy forráskódban csak egy package deklaráció lehet, a forráskód legelején  Ha nincs package deklaráció, az adott osztály, vagy interfész a névtelen csomagba kerül  Példa:   A definiált osztály minősített neve csomag.A lesz Csomagok leképzése fájlrendszerre 85 A fordítási egységek fájlok .java kiterjesztéssel  A csomag, alcsomag nevek könyvtárak, alkönyvtárak  Példa:  package cs1.cs2cs3;  Mindig a package root alól adjuk ki a fordításhoz/futtatáshoz szükséges parancsokat  Példa:  Fordítás  Futtatás Osztályok elérése 86 Egy osztályra a definíciójával megegyező csomagban az egyszerű nevével hivatkozhatunk  Példa:  Osztályok elérése 87  Egy osztályra a definíciójától eltérő csomagban többféleképpen hivatkozhatunk:  Minősített nevek használata

(kényelmetlen) Osztályok elérése 88  Import deklarációk  import csomag.osztalynev;  import csomag.*; (minden publikus osztályt importálunk)  Az import java.lang*; minden fordítási egységben automatikusan megtörténik Könyvészet 89 Angster Erzsébet, Objektumorientált tervezés és programozás. Java I-II (Bazele programării orientate pe obiecte), Ed. 4 Kör Bt, Budapesta, 2002  Kathy Sierra, Bert Bates: Agyhullám: Java, Kiskapú, 2011.