JAVA PROGRAMOZÁS 1.ELŐADÁS



Hasonló dokumentumok
Java II. I A Java programozási nyelv alapelemei

Programozási nyelvek JAVA EA+GY 1. gyakolat

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

Szoftvertechnológia alapjai Java előadások

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

Programozási nyelv Java

JAVA PROGRAMOZÁS 2.ELŐADÁS

Programozási technológia I.

Java II. I A Java programozási nyelv alapelemei

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

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

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

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

JAVA PROGRAMOZÁS 3.ELŐADÁS

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

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

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

A Java programozási nyelv

Java programozási nyelv

Java I. A Java programozási nyelv

Programozás I. Első ZH segédlet

Informatika terméktervezőknek

A C# programozási nyelv alapjai

A Java és a C++ összehasonlítása

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

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

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

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

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

Szoftvertervezés és -fejlesztés I.

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

Java I. A Java programozási nyelv

Adatszerkezetek és algoritmusok

Készítette: Nagy Tibor István

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

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

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

és az instanceof operátor

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

OOP #14 (referencia-elv)

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

A C programozási nyelv I. Bevezetés

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

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

Osztályok. 4. gyakorlat

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

A C programozási nyelv I. Bevezetés

C programozás. 1 óra Bevezetés

JAVA SE/ME tanfolyam tematika

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

Adatbázis és szoftverfejlesztés elmélet

Bevezetés a C++ programozási nyelvbe

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

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

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

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

GYAKORLATIAS JAVA MINTA

Interfészek. PPT 2007/2008 tavasz.

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

A C# PROGRAMOZÁSI NYELV

Programozási nyelvek (ADA)

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

Bevezetés a Java programozási nyelvbe

Bevezetés a Java programozási nyelvbe

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

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

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

C#, OOP. Osztályok tervezése C#-ban

Java programozási nyelv 4. rész Osztályok II.

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?

Készítette: Nagy Tibor István

A Java nyelv. Bevezetés, alapok Elek Tibor

Apple Swift kurzus 3. gyakorlat

Web-technológia PHP-vel

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Már megismert fogalmak áttekintése

Java programozási nyelv

Programozás I. C# bevezető. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 17.

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

JAVA PROGRAMOZÁS 8.ELŐADÁS

A Java nyelv. II. rész - alapok, osztályok /2 53

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

3. Gyakorlat Ismerkedés a Java nyelvvel

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?

Programozási nyelvek Java

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

Objektumorientált programozás C# nyelven

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

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

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

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

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Programozási nyelvek II.: JAVA, 4. gyakorlat

C++ programozási nyelv Konstruktorok-destruktorok

Objektumorientált Programozás II.


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

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

Átírás:

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: 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. 2. Előadás: 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. 3. Előadás: 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. 4. Előadás: Kivételkezelés Javá-ban 5. Előadás: 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: 7. Előadás: Grafikus kezelői felület létrehozása (Java Swing) SWING csomag, SWING komponensek 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: Szálak. Szálak jellemzői, létrehozása, vezérlése. Szinkronizálás. 10. Előadás: Java Kollekciók és generikus típusok 11. Előadás: 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/indexjsp-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 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) 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

20 Java keretrendszer Java SE 8

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: 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 eloadasok\e1\hello.java Futtatás a java paranccsal történik 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\

26 Példa Hello World!, NetBeans-ben

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

32 Kivételes karakterek

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 Azonos prioritás eseten balrol-jobbra szabály, kivétel az értékadás, amely jobbrol-balra értékelődik ki.

42 Operátorok precedenciája

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; 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) if (feltétel) { utasítás1; utasítás; else... utasítás2; } 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; }

50 Többágú szelekció - else if és switch

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);

54 Iterációk while, do while - Példa

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>);

69 Objektum értékadás

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 72 szemétgyűjtés 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

76 A StringBuffer osztály - Példa

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

78 Objektum átadása paraméterként

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); String s = dobj.tostring(); //s=="6099.8 <type> <type>value() Például: Integer iobj = new Integer(30); int i = iobj.intvalue(); // i==30 double d = iobj.doublevalue(); // 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.out.println(Byte.MIN_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.cs2.cs3; 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 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.