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

Alapadatok

Év, oldalszám:2015, 89 oldal

Nyelv:magyar

Letöltések száma:72

Feltöltve:2020. május 30.

Méret:1 MB

Intézmény:
-

Megjegyzés:

Csatolmány:-

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



Értékelések

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

Tartalmi kivonat

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)   Java Enterprise Edition (J2EE)   Kliens alkalmazások, appletek készítése 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      IDE: 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 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   eloadasokE1Hello.java Futtatás a java paranccsal történik   Példa: javac 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; // int konvertálása doubel-re implicit módon. Bővités d = i; Típuskonverziók 46  Példa: d = 79.4; // 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 i  = (int)d; 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():  length(): int 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, javamath, 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