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.oracle.com/technetwork/articles/javase/i ndex-jsp-138363.html) IDE szerkesztő: NetBeans https://netbeans.org/ http://www.oracle.com/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/index.php
IntelliJ
IDEA
https://www.jetbrains.com/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.3.p df
Könyvészet és dokumentáció 7
Hasznos linkek http://docs.oracle.com/javase/7/docs/ http://docs.oracle.com/javase/tutorial/ http://www.tutorialspoint.com/java/ http://www.learnjavaonline.org/ http://www.javatpoint.com/
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.emte.siculorum.ro/~pallaszlo/oktatas_hu.html (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: 1. Java történet 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
eloadasok\E1\Hello.java
Futtatás a java paranccsal történik
Példa: javac
Példa: java
eloadasok.E1.Hello
A Path környezeti változó beállítása szükséges
Példa:
set PATH=%PATH%;c:\ProgramFiles\Java\jdk1.8.0_31\bin\
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’, ‘\t’ 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) .(pont) minősítő operátor (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.out.println("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>]
<metódus neve> ([