A Java programozási nyelv

Slides:



Advertisements
Hasonló előadás
© Kozsik Tamás Különböző nyelvekhez igazítás Internationalization - i18n.
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Osztály leszármaztatás
C++ programozási nyelv Gyakorlat hét
A Java programozási nyelv
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Objective- C Bereczki Gréta Tamara
Adatbányászati technikák (VISZM185)
Öröklődés 2..
JavaScript.
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Vándor Magyar Internetes műveltségi játék.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/10 C++ programozási nyelv Gyakorlat - 5. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 5. rész – Osztályok III.
C# tagfüggvények.
C# tagfüggvények.
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
Csomagok.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
A Java jellemzői Hordozható, platformfüggetlen forráskód és bájtkód szinten forráskód és bájtkód szinten Tisztán objektumorientált csak osztályok, illetve.
Kivételkezelés.
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Komoróczy Tamás 1 Java programozási nyelv Stringek.
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Java programozási nyelv Adatbekérés konzolról
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
Programozás III KOLLEKCIÓK.
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Programozás III KIVÉTEL – CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban.
Programozás III KOLLEKCIÓK.
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

A Java programozási nyelv PPKE-ITK A Java programozási nyelv Programozási nyelvek és módszerek 1.gyakorlat Laki Sándor Email: lakis@inf.elte.hu lakis@inf.elte.hu

Követelmények Nagy házi (határidő: május 12. 24:00) 2 db ZH: beugró + géptermi ZH ZH-k időpontja: 1.ZH április 26., Szerda, 16-19 2.ZH május 22. , Hétfő, 9-12 PótZH és UV szeptemberben lakis@inf.elte.hu

Tematika Eclipse IDE C++-ról Javara Típusok, tömbök, osztályok, interface … Kivételkezelés, öröklődés Collection Framework Template … lakis@inf.elte.hu

A nyelvről röviden SUN Microsystems gyermeke Különböző kiadások: J2SE,J2EE,J2ME Mi a J2SE 1.5 –tel foglalkozunk A JAVA ősei: SmallTalk ill. a C++ Jelölésrendszere a C++ -ból átvett DE figyelem a szemantika nem mindenütt ugyanaz!!! lakis@inf.elte.hu

A nyelvről röviden Mutatók helyett referenciák! Futtató környezet(interpretált nyelv) => BÍZTONSÁGOS fejlesztés… lakis@inf.elte.hu

Interpretált jelleg Futtatás szintje Java sourcecode Solaris Virtual Machine Compiler(javac) … Windows XP Virtual Machine Java bytecode környezetfüggetlen lakis@inf.elte.hu

Különbségek a C++-tól Interpretált jelleg Nincsenek mutatók Tisztán OO nyelv( a C++ multiparadigmás) Egy java program objektumok és ezek mintáiúl szolgáló osztályok összessége. Minden fv. valamely osztály tagfv.-e! lakis@inf.elte.hu

Típusrendszer lakis@inf.elte.hu

Típusok C++ szemmel C/C++ -ban a beépített típusok pontos mérete és értéktartománya nincsen definiálva(pl. char előjeles vs előj. nélk.) Bár vannak garanciák: pl. short int legalább 16 bites… Oka: a C++ filozófiája(max. optimalitás minden platformon) lakis@inf.elte.hu

Mi a helyzet a Javaval? Cél: bináris kompatibilitás Ezért az egyes típusok mérete és értéktartománya is platformfüggetlen kell legyen Erős korlátozások a primitív típusokkal szemben (nem lehet futási időben létrehozni őket) Példányaik nem objektumok java értelemben lakis@inf.elte.hu

Primitív típusok és burkolók Méret Wrapper Hasonló C++ byte 8bites előjeles egész Byte signed char short 16bites előjeles egész Short int 32bites előjeles egész Integer long 64bites előjeles egész Long long long boolean Logikai (nem egész!) Boolean bool float 32bites lebegőpontos Float double 64bites lebegőpontos Double char 16bites Unicode kar. Character wchar_t lakis@inf.elte.hu

Primitív típusok Ilyen típusú változókat nem hozhatunk létre futási időben, ezek nem számítanak objektumoknak Változókat adhatunk át metódushíváskor Primitív típusokat érték szerint Míg objektumokat referencia szerint lakis@inf.elte.hu

Egy-két különbség a C++-hoz Nincsenek mutatók Nincsen delete A garbage collector automatikusan szabadítja fel az objektumokat Konstruktorok vannak Destruktorok nincsenek ( esetleg finalize()) lakis@inf.elte.hu

HelloWorld.java public class HelloWorld { Konvenció: A java osztályok neve nagy betűvel kezdődik! HelloWorld.java public class HelloWorld { public static void main(String[] args) System.out.println(”Hello World”); } A minden publikus osztályt külön – az osztály nevének megfelelő java kiterjesztésű – fájlba kell írni. Van egy kitüntetett osztály aminek van egy static main metódusa, ez lesz a főprogram! lakis@inf.elte.hu

Fontos A main metódus szignatúrája a következő KELL legyen: public static void main(String[] args) Ez C++-ban úgy volt: int main(int argc, char** argv); A statikus metódusok futtathatók példányoktól függetlenül. Futtatásnál a VM –nek megmondjuk, melyik a „főosztály”, aminek a main metódusát meg kell hívnia. Így indul a prg. lakis@inf.elte.hu

Eclipse IDE Letölthető a www.eclipse.org -ról Itt egy kis demózás jön… Kommentek, javaDoc Jar készítése Manifest fájl lakis@inf.elte.hu

Ismerkedés – Eclipse demo Algoritmus implementációk N! ciklussal VS rekurzív fv.-nyel LegNagyobb Közös Osztó ( külön statikus memberfv.-be) lakis@inf.elte.hu

Változók Stack – Heap ?mi is ez? int i; long big = 100000; boolean logical = true; String str = new String(”alma teve”); // ez objektum nem primitív típ. Vált. // az str úgy használható, mint C++-ban a mutató // (term. Ez egy referencia. ) String str2 = ”alma teve”; // String obj. Tartalmát nem lehet módosítani MyClass my = new MyClass(); lakis@inf.elte.hu

Hozzáférési kategóriák private Névtelen (félnyílvános-csomagszintű) protected public lakis@inf.elte.hu

Ami eddig kimaradt Betűkészlet azonosítókban: a Unicode 2.0 betűi Miért publikus/félig nyitott/private az osztály? Egybe tartozó részeket csomagokba tesszük! lakis@inf.elte.hu

Csomagoljunk Osztályainkat csomagokba szervezzük Csomagok nem ágyazhatók egymásba Azonos csomag osztályai látják egymást Ha más csomag osztályát használom, akkor minősítés v./és import a fájl elején import org.apache.xerces.sax.XMLReader; import org.apache.xerces.sax.*; lakis@inf.elte.hu

Csomagoljunk Azt, hogy az adott osztály melyik csomagban van, a fájl eleji package kulcsszóval adjuk meg. Ha nem adunk meg semmit, akkor a default csomag. package org.menrod.core; public class XMLPair { //variables protected String namespace = null; protected String element = null; … Az XMLPair az org.menrod.core nevű csomagba került! lakis@inf.elte.hu

Konstruktorok Ha nem adunk meg, akkor alapértelmezetten hozzáad egy ürest Ha megadunk egyet, és azt akarjuk, hogy létezzen üres konstr., akkor explicit meg kell adnunk!!! public class MyClass { // alapértelmezetten // létrejön egy def. // konstr. } public class MyClass { public MyClass(int i) { } } lakis@inf.elte.hu

Datum.java public class Datum { protected int ev; protected int ho; protected int nap; public Datum(int ev, int ho, int nap) { this.ev = ev; this.ho = ho; this.nap = nap; } } // end of Datum Nincs a végén pontosvessző!!!! lakis@inf.elte.hu

Example1.java public class Example1 { public static void main(String[] args) { Datum d = new Datum(2006,02,16); } lakis@inf.elte.hu

Bővítsük a „Datum”-ot public class Datum { protected int ev; protected int ho; protected int nap; public Datum(int ev, int ho, int nap) { … } public String kiir() { System.out.print(ev + ”.” + ho + ”.” + nap + ”\n”); return ev + ”.” + ho + ”.” + nap; } // end of Datum lakis@inf.elte.hu

Example2.java public class Example2 { public static void main(String[] args) { Datum d = new Datum(2006,02,16); d.kiir(); // de lehet így is System.out.println( d.kiir() ); // vajon ez mit ír ki: System.out.println( d ); } lakis@inf.elte.hu

1. Feladat Készíts egy motor nevű publikus osztályt! Attribútumok(legyenek protectedek): Hengerűrtartalom Teljesítmény Gyártás ideje( a korábbi Datum ) Legyen egy konstruktora, ahol ezeket be lehet állítani! Műveletek: getHUT getTeljesitmeny getGyartasiIdo ill. setGyartasiIdo(Datum d) lakis@inf.elte.hu

Referencia átadása public class Example3 { public static void main(String[] args) { Datum d = new Datum(2006, 02, 16); Motor m = new Motor(1998, 130, d); d.setEv(2009); m.getGyartasiIdo().kiir(); //???2006 v. 2009 lesz??? // lehetne így is m = new Motor(1198, 65, new Datum(2000, 1, 1) ); } lakis@inf.elte.hu

2.Feladat Készíts egy Gepkocsi osztályt! Attribútumok: Műveletek: Motor Gyártási idő Megtett kilométerek Műveletek: getEvjarat getMotor getKilometerek lakis@inf.elte.hu

Objectum hierarchia, operátorok Operátorok primitíveken ugyanúgy, ahogy C++-ban Objektum változóin/referenciákon a hagyományos operátorok olyanok, mint ha C++-ban mutatókon végeznénk ezeket. == helyett equals lakis@inf.elte.hu

Tömbök Tömb változók deklarációja: int t[]; int[] t; Változó dekl. nem hozza létre a tömböt Tömb típusok olyanok, mint az osztályok. Lesznek attribútumaik… Objektumok csak dinamikusan allokálhatók, hasonló a C++ dinamikus tömbkezeléséhez Hibásak: int t[10]; int[10] t; lakis@inf.elte.hu

Tömbök Tényleges objektumok létrehozása: Tömb vált. csak referencia int t[] = new int[10]; int[] t = new int[10]; int[] t = { 1, 2, 3, 4 }; t = new int[] { 1, 2, 3, 4 }; Tömb vált. csak referencia Tömbök 0-tól indexelődnek A hossz lekérdezése: t.length Tömb indexelése: t[i] Kivételt dob, ha elindexelünk ArrayIndexOutOfBoundsException lakis@inf.elte.hu

Objektumok tömbje Referenciákból álló tömb MyClass[] t = new MyClass[10]; for (int i=0; i<t.length; i++) t[i] = new MyClass(…); MyClass[] t = { new MyClass(…), new MyClass(…), … }; lakis@inf.elte.hu

Többdimenziós tömbök Nincs többdimenziós tömb, de helyette tömbök tömbje Hasonlóan a dinamikus C++-os módszerhez int[][] mx = new int[4][3]; for (int i=0;i<4;i++) for (int j=0;j<3;j++) mx[i][j] = i + j; int[][] mx; mx = new int[4][]; for (int i=0;i<4;i++) for (int j=0;j<3;j++) mx[i][j] = i + j; lakis@inf.elte.hu

Feladatok Írj verem típust(osztályt)! Amiben int-eket tárolhatsz! A megvalósításhoz használj tömböket! Írd át láncoltlistásra! Írj mátrix típust, annak műveleteivel! Figyelem operátorok túlterhelésére javaban nincs lehetőség!!!! lakis@inf.elte.hu