Programozási technológia I.



Hasonló dokumentumok
Programozási nyelv Java

Programozási nyelvek JAVA EA+GY 1. gyakolat

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

Programozási nyelvek Java

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

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ás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Java I. A Java programozási nyelv

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

Szoftvertechnológia alapjai Java előadások

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

A Java programozási nyelv

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

Osztályok. 4. gyakorlat

és az instanceof operátor

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

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

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

Java II. I A Java programozási nyelv alapelemei

Készítette: Nagy Tibor István

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

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

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

Java I. A Java programozási nyelv

Adatbázis és szoftverfejlesztés elmélet

Informatika terméktervezőknek

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

1. Alapok. Programozás II

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

Java II. I A Java programozási nyelv alapelemei

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

Programozás I. Első ZH segédlet

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

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?

Java programozási nyelv

OOP #14 (referencia-elv)

Programozási nyelvek Java

Pénzügyi algoritmusok

C++ programozási nyelv Konstruktorok-destruktorok

Programozási nyelvek Java

Globális operátor overloading

Java és web programozás

Programozási nyelvek Java

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

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

Programozási nyelvek Java

3D-s technológiák a játékfejlesztésben UDK bevezetés

JAVA PROGRAMOZÁS 1.ELŐADÁS

Adatszerkezetek és algoritmusok

Objektumorientált Programozás IV.

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

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

Objektumorientált programozás C# nyelven

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?

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Abstract osztályok és interface-ek. 7-dik gyakorlat

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

Delphi programozás I.

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

A C# PROGRAMOZÁSI NYELV

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

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

Bevezetés a Python programozási nyelvbe

Programzás I gyakorlat

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

Pénzügyi algoritmusok

3. Gyakorlat Ismerkedés a Java nyelvvel

Imperatív programozás

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

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

Mintavételes szabályozás mikrovezérlő segítségével

Java és web programozás

Gyakorlati vizsgatevékenység A

1. Jelölje meg az összes igaz állítást a következők közül!

A C# programozási nyelv alapjai

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

Programozási nyelvek (ADA)

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

OOP: Java 1.Gy: Java alapok

Automatizált Java Build. ApacheAnt használatával

Java és web programozás

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

Programozási nyelvek Java

Python tanfolyam Python bevezető I. rész

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozási nyelvek II.: JAVA

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Programozási nyelvek Java

C# gyorstalpaló. Készítette: Major Péter

Bevezetés a Java programozási nyelvbe

Már megismert fogalmak áttekintése

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

3. Osztályok II. Programozás II

Átírás:

Programozási technológia I. 2.gyakorlat A tárgy célja A tárgy alapvető Java ismeretek nyújt. A fő célja, hogy a hallgatók képesek legyenek az UML diagramokból Java kód előállítására. Félév tematikája Bevezetés, NetBeans bemutatása, alapok Vezérlési szerkezetek Eljárások, függvények Adatbevitelek: parancssorok, interaktívan Öröklődés, absztrakt osztály, interfészek, csomagok GUI Egérkezelés Fájlkezelés Követelmények 2 nagy beadandó 2 csoport zh min. 8 kis beadandó (heti rendszerességgel lesznek) Java bevezető Történet James Gosling kezdte fejleszteni a Sun Microsystemsnél a 90-es évek elején Első kiadás 1995-ös, azóta sok minden változott, bővült a nyelv

A Java 2 Platform, Sandard Edition (SE) 5.0 2004-es Jellemzők Objektumorientált nyelv (annyira, hogy a primitív típusokon kívül minden az Object osztály leszármazottja) C++ szerű szintaxis o a fordító bájtkódra fordít, a futtatásért a Java Virtual Machine (JVM) felel o a bájtkód hordozható platformok között (Windows, Unix, Linux, Macintosh), ami nagyon nagy előny o a programok relatíve lassúak: persze ez sokszor nem számít vagy nem érzékelhető o egyszerűbb nyelv, mint a C++ mivel a C++ igen nehezen elsajátítható nyelv, ez nem feltétlenül hátrány A nyelvről Garbage Collector (automatikus szemétgyűjtés) van o Így nehéz elrontani a memória felszabadítást o Néha azért felgyűlik a szemét Nincs memóriafelszabadító utasítás (mint a delete a C++ esetén) 8 primitív típus (boolean, char, byte, short, int, long, float, double) Az Object osztály (java.lang.object) minden további osztály őse Javadoc: viszonylag kényelmes dokumentációs kommentezést tesz lehetővé nagy hangsúly van a kivételkezelésen Java programok Egy java fájl tartalmaz egy azonos nevű osztályt (a FooProgram.java fajlban van egy FooProgram osztaly) A függvények osztálydefiníción belül fordulhatnak elő Más osztály függvényeinek használatához importálni kell a megfelelő osztályt Fordításkor a FooProgram.java-ból készül egy FooProgram.class fájl ('javac' paranccsal) Ha az osztálynak van 'main()' metódusa (belépési pontja), akkor végrehajtható (a 'java' paranccsal) Az osztályok úgynevezett 'package'-ekbe (csomagokba) szerveződnek (pl. foo.gui, foo.engine, stb.) o egy package-be tartozó osztályok látják egymást (nem kell importálni) o egy package-be tartozó osztályok alapértelmezésben látják egymás adattagjait

Fordítás és futtatás (parancssorból) A.java forrásfájlokból a Java fordító.class kiterjesztésű fájlt állít elő. Ez a fájl tartalmazza a program bájtkódját. Egy forrásfájl neve a fájlban implementált osztály nevével egyezik meg. Ha a megvalósított osztály valamilyen package-be (névtérbe) tartozik, akkor a forrásfájlt a package nevével azonos alkönyvtárba kell elhelyezni. Környezet beállítása Konzolban: Ha nem ismeri fel a konzolban a javac parancsot, akkor fel kell venni környezeti változóba a Java JDK bin könyvtárának útvonalát. Fordítás set PATH=%PATH%;c:\Program Files\Java\jdk1.6.0_20\bin\ javac paranccsal történik -d argumentummal megadható, hogy milyen könyvtárba kerüljenek a class fájlok -encoding argumentummal beállítható a karakterkódolás Példa: javac HelloWorld.java (abszolút elérési út v relatív az adott helytől) JavaDoc készítése javadoc paranccsal történik -d argumentummal megadható, hogy milyen könyvtárba kerüljön a dokumenáció -encoding argumentummal beállítható a karakterkódolás Példa: javadoc -d doc -encoding utf-8 alakzat/* Futtatás java parancs -cp argumentummal beállítható, hogy honnan vegye a class fájlokat Példa: java HelloWorld Ha nem találja az oprendszer a fenti parancsokat akkor előfordulhat, hogy telepíteni kell a Javat vagy a Java bin könyvtárát fel kell venni a PATH környezeti változóba. Ingyenes fejlesztő környezetek Eclipse: o http://eclipse.org/ o rengeteg plugin tölthető le hozzá NetBeans: o http://netbeans.org/ o használható beépített GUI szerkesztője van (de mi nem fogjuk használni)

Kódolási konvenciók Fontos betartani valami kódolási konvenciót. Fő szempontok: olvashatóság, egyértelműség, értelmezhetőség Oracle által javasolt kódolási konvenciók a Java nyelvre: http://www.oracle.com/technetwork/java/codeconv-138413.html Dokumentáció Az előadás honlapja: http://people.inf.elte.hu/sike/pt1c/pt1c.html Java tutorial: http://download.oracle.com/javase/tutorial/ Javadoc: http://download-llnw.oracle.com/javase/6/docs/ Hello World program A class kulcsszóval definiáltunk egy HelloWorld nevű osztályt, aminek 1 darab metódusa a main. Ez a program belépési pontja. A System.out.println paranccsal tudunk a console-ra kiíratni szöveget. A kimenet a következő lesz (parancssoros fordítással + futtatással):

NetBeans Java Application projektet kell ebben a félévben használni. Érdemes nagyon odafigyelni a Run és a Debug menüre, hiszen rengeteg hasznos és fontos információ, menü található bennük. Figyeljünk arra, hogy van külön futtatás (F6) és debug módban való futtatás (Ctrl + F5) is. Az első esetben a program futása folyamán figyelmen kívül hagyja a breakpointokat. Továbbá hasznos még a Refactor menü, ahol refaktorációs lépéseket végezhetünk el. Például, ha egy változót szeretnénk átnevezni, de már 15 helyen szerepel a kódban, akkor nem kell mind a 15 helyen egyesével átnevezni, hanem a használjuk Rename (Ctrl + R) parancsot és írjuk be a változó új nevét. Típusok Primitív típusok byte, short, int, long, float, double, char, boolean wrapper osztályok (Byte, Short, Integer,... ) alapértelmezett (default) értékekkel rendelkeznek (0, false, etc.) oktális (int octval = 01), hexa érték (byte hexval = 0xff), scientific notation (double d = 1.23e4) Tömbök Minden T típushoz létezik tömb. (T[]) Inicializálásnál az 1. dimenzió megadása kötelező. int[] arr1 = new int[5]; int arr2[]; int arr3[] = { 1,2,3,4,5 }; Elemeinek lekérdezése: arr3[0], arr[i] Többdimenziós tömbök inicializálásánál az 1. dimenziót kell csak megadni, azonban ha tudod a többit, akkor érdemes azokat is: int[][] arr = new int[9][9]; Túlindexelés esetén kivétel keletkezik. Érdekesség, hogy nem csak "négyszögletes" kétdimenziós tömböt lehet készíteni, hanem olyat is, ahol az egyes sorok nem azonos hosszúak. String típus A String típus char típusú elemek tömbje.

A String típusú objektumok megváltoztathatatlanok (immutable). Amikor módosítunk egy stringet, akkor automatikusan egy új példány jön létre a memóriában, ez pedig nem feltétlenül olcsó művelet. Ha többször van szükségünk erre, akkor használjuk inkább a StringBuilder típust, ez automatikusan lefoglal egy nagyobb darab memóriát, és ha ez sem elég, akkor allokál egy megfelelő méretű területet és átmásolja magát oda. A substring fv esetében, amely az eredeti szöveg egy szeletét adja vissza, nem keletkezik új tömb, hanem csak az eredeti tömbön beállítja a kezdő- és a végreferenciát. Konverziók általában bővítés automatikus szűkítés típuskényszerítéssel pl: byte b = (byte)10 Szövegkonverzió Stringgé: String s = "" + 1; (precedenciára figyelni!) vagy a tostring() függvény Stringből: Integer.parseInt("1"), Double.parseDouble("2"),... Operátorok ==,!=, &&,, %, ++,... Részletes táblázat: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html Stringek összehasonlítása: Mint az objektumokat: equals() metódussal az == operátor referencia szerinti összehasonlítást végez csak, nem tartalom szerint "a" == "a" - lehet hamis! "a".equals("a") - mindig megfelelően működik Összehasonlító operátor bal oldalára lehetőleg konstanst írjunk a kellemetlen helyzetek elkerülése érdekében:

Feladatok 1. Írjátok át úgy a programot, hogy a Hello után a saját neveteket írja ki. Például: Hello Dorian!. A név egy String típusú name nevű változóban legyen eltárolva. 2. Adott egy Integer típusú változóban egy egész szám. Írjátok át a programot úgy, hogy írja ki magát a számot és azt, hogy páros vagy páratlan. Például: A(z) 2 páros! 3. Írjátok át úgy az előző feladatot, hogy a számot a parancssorból kapja paraméterül. 4. Írjatok egy ciklust, ami a parancssorból kapott két egész szám között iterál, és minden számról írjátok ki a 2. feladatban leírtakat. Kezeljétek le, ha a 2. paraméter kisebb, mint az első! 5. Egy String típusú változó értéke legyen a következő: abrakadabra, csiribiri zabszalma. Indítsatok egy ciklust 1-től a <string hosszáig>-1. Olvassatok annyi karaktert a szövegből az elejétől, amennyi a ciklusváltozó értéke. Ha az így kapott szöveg páros hosszúságú, akkor írjátok ki a képernyőre, ha páratlan, akkor ne csináljon semmit. Segítség: length fv, substring fv