objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2...

41
1 Széchenyi István Egyetem Programozás III. Varjasi Norbert [email protected]

Upload: vanhanh

Post on 06-Feb-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

1

Széchenyi István Egyetem

Programozás III.

Varjasi Norbert

[email protected]

Page 2: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

2

Széchenyi István Egyetem

A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott Robusztus (hibatűrő, megbízható): Biztonságos Hordozható Architektúra-független

(gépfüggetlen): Interpretált Nagy teljesítményű Többszálú Dinamikus

Page 3: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

3

Széchenyi István Egyetem

A java virtuális gép (JVM)

Képzeletbei, „ideális” számítógép. Szoftveresen megvalósított működési környezet.

(az op. rendszer egy folyamata).

Feladata:Betölti a használt osztályokat (.class állományok)Az ott található blokkokat, utasításokat értelmezi, átalakítja gépi

kódú üzenetekké és futtatja.Memóriát kezel, kioszt, felszabadít, op. rendszerrel kapcsolatot tart, erőforrásokat használ.

Page 4: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

4

Széchenyi István Egyetem

Page 5: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

5

Széchenyi István Egyetem

Page 6: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

6

Széchenyi István Egyetem

Page 7: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

7

Széchenyi István Egyetem

A Java adattípusai

Page 8: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

8

Széchenyi István Egyetem

A Java adattípusai

Page 9: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

9

Széchenyi István Egyetem

A Java megszámlálható egész adattípusai Egészek:

byte (8 bites, -128 – 127) short (16 bites, -32.768 – 32.767) int (32 bites, -2.147.483.648 – 2.147.483.647) long (64 bites, -9.223.372.036.854.775.808 –

9.223.372.036.854.775.807) Pl.:

int újSzoket, régiSzoket, newSocket, oldSocket; byte elsőBájt, lastByte; byte utolsóBájt = 12; (értékadással) int folyamAzonosító = 017; (oktális értékadás) int streamId = 017; int kapcsolóAzonosító = 0XFF; (hexadecimális értékadás) int streamControlId=0X0F, switchId=0XBB;

Page 10: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

10

Széchenyi István Egyetem

Lebegőpontos típusok: float (32 bites, 1.40129846432481707e-45 -

3.40282346638528860e+38) double (64 bites, 4.94065645841246544e-324d -

1.79769313486231570e+308d)

Pl.: float összeg=23.8f, újÖsszeg=24.f; float cashValue=23.8f, newCashValue; double teljesÖsszeg=1.56e2, régiÖsszeg=2.34E4d,

össz=7.34d; double newTotal=1.56e2, oldTotal=2.34E4;

Page 11: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

11

Széchenyi István Egyetem

Karakter típusú adatok:char (2 bájt/karakter!, 0 – 65.535 )Pl.:

char elsőBetű, másodikBetű='b'; char senseChar, ringChar='e';

Logikai típusú adatokboolean (1 bit)Pl.:

boolean kilép, vanÉrték=true; boolean loopSensor, pollSensor=true;

Page 12: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

12

Széchenyi István Egyetem

Kulcsszavak és azonosítókabstract boolean break byte case

catch char class const continue

default do double else extends

final finally float for goto

if implements import instanceof int

interface long native new package

private protected public return short

static super switch synchronized this

throw throws transient try void

volatile while

Page 13: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

13

Széchenyi István Egyetem

Kifejezések, operátorok

prefix – az operátor az operandus előtt áll, postfix – az operátor az operandus után áll, vagy infix jellegű – az operátor az operandusok között

helyezkedik el.

A kifejezés kiértékelése a műveleti jelek közötti precedencia szabály alapján következik

Page 14: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

14

Széchenyi István Egyetem

Precedencia

Operátor Megnevezés[ ] tömb indexelés

. tagelérés pl: java.lang.Math.PI

( ) zárójeles kifejezés

kif++ kif-- postfix operátorok

++kif --kif +kif –kif prefix operátorok

! ~ logikai NEM, bitenkénti NEM

new példányosítás

(típus)kif típuskényszerítés

* / % aritmetikai műveletek

+ -

<< eltolás balra, a legkisebb bit 0-t kap

>> eltolás jobbra, és balról a legmagasabb helyiértékű bit értéke kerül be

>>> eltolás jobbra, balról 0 érkezik.

Page 15: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

15

Széchenyi István Egyetem

PrecedenciaOperátor Megnevezés

< > <= >= összehasonlítások

instaceof az objektum példánya-e az osztálynak

== != egyenlőségvizsgálatok (referencia összehasonlítás)

& bitenkénti ÉS

^ bitenkénti kizáró VAGY

| bitenkénti VAGY

&& logikai ÉS

|| logikai VAGY

? : feltételes kifejezés

= += -= *= /= %= hozzárendelés, értékadás

>>= <<= >>>= bit szintű értékadások

&= ^= |=

Page 16: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

16

Széchenyi István Egyetem

Referenciák, példányosítás

A „példányok” - „objektumok” típusa Minden objektum, tömb, felsorolás ilyen A referencia != mutató, (kicsit több annál :)

Pl: Osztálytípus peldánynév;Teglalap t1;String szoveg1;String szoveg2 = new String(”Béla”);Teglalap t2 = new Teglalap(3,4);

A null referenciaszoveg1 = null;

Page 17: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

17

Széchenyi István Egyetem

Hozzáférési kategóriák (adatrejtés)

nyilvános tagok (public) csomag-szintű tagok (jelöletlen) védett tagok (protected) privát tagok (private)

Page 18: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

18

Széchenyi István Egyetem

Vezérlési szerkezetek utasítások feltételes kifejezés elágazások

if if-else if-else-if… switch

ciklusok while do-while for

Page 19: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

19

Széchenyi István Egyetem

Feltételes kifejezésekif(<logikai kif.>) <utasítás>; (vagy utasítás blokk);

if(<felt.>) {<utasítás;>}else{<utasítás;>}

if(<felt.>) {<utasítás;>}else if(<felt.2>) {<utasítás;>}else {<utasítás;>}

switch(<argumentum>){ case <érték1>: utasítás(ok); break; case <értékn>: utasítás(ok); break; default: utasítás(ok);}

<argumentum>: megszámlálható típus, (java 7-től: String is!)

Page 20: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

20

Széchenyi István Egyetem

Elöl- és hátultesztelő ciklusokwhile: while (<kifejezés igaz>) {

<utasítások;> }

while (i < 5) { sum += tomb[i]; i++; }

do-while: do{

<utasítások;> }while (<kifejezés igaz>)

do {i++;nameArray[i] = ””; } while (i != lastIndex);

PÉLDA demo

Page 21: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

21

Széchenyi István Egyetem

A tömb adattípus

Page 22: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

22

Széchenyi István Egyetem

Tömbök deklarációja

<elemtípus>[] <tömbazonosító>; <elemtípus> <tömbazonosító>[];

int cT[], d; //„d” egyetlen elemi adat!!! Alkalmazott[] dolgozok; ”int a[3];” -> fordítási hibát okoz!!

Page 23: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

23

Széchenyi István Egyetem

Tömbök létrehozása

new <elemtípus> [méret]; iT = new int[365];dT = new double[365/12]; //30!sT = new String[4];

Page 24: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

24

Széchenyi István Egyetem

Tömbök helyfoglalása

short [] aTomb = new short[10];for(int i=0; i < aTomb.length; i++){aTomb[i] = i*5;}

Page 25: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

25

Széchenyi István Egyetem

Tömbök deklarálása inicializáló blokkban<elemtípus> [] <tömbazonosító> = { <érték0>, <érték1>, …};

int[] aTomb = {1, 2, 3, 7, 11 };

char[] maganh = { ’a’, ’e’, ’i’, ’o’, ’u’};

boolean[] valaszok = { true, true, false};

double[] arak = {1202.1, 33.35};

Page 26: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

26

Széchenyi István Egyetem

Többdimenziós tömbök

<elemtípus>[][] <tömbazonosító>;

Egy 2 dimenziós tömb deklarációja:

double [][] a;

A 2 dimenziós tömb létrehozása:

a = new double[2][3];

Page 27: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

27

Széchenyi István Egyetem

Többdimenziós tömb megadása inicializáló blokkal

<elemtípus> [][] <tömbazonosító> = { {<érték0>, <érték1>, …} , {<érték0>, <érték1>, …} , …};

int[][] honapNapjai = {

{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},

{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

};

Page 28: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

28

Széchenyi István Egyetem

Többdimenziós tömbök helyfoglalása

int[][] honapNapjai = {

{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},

{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

};

Page 29: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

29

Széchenyi István Egyetem

Többdimenziós tömbök egyéb esetei

Megadható különböző méretű, több lépésben létrehozott többdimenziós tömb is:

int[][] alsoMatrix = new int[3][]; for (int i=0; i < alsoMatrix.length; i++ ){alsoMatrix[i] = new int[i+1];for (int j=0; j < alsoMatrix[i].length; j++ ){

alsoMatrix[i][j] = 1;}

Page 30: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

30

Széchenyi István Egyetem

Objektumokból képzett tömbökObejektumtípus [] azon = new Objektumtípus[n];

String [] honapok = new String[12];

vagy inicializátorral:

String [] honapok = {”január”, ”február”, …};

Page 31: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

31

Széchenyi István Egyetem

Tömbök bejárása 1

for (<inic.> ; <log.kif.> ; <lépt.>){<ut.>}int i = 0 ;

for ( ; i < 10; i++) { a[i] = 0;}

for(int i = 0; i < 10; i++) { a[i] = 0;}

for(int i = 0; i < 10; ) {a[i] = 0;i++; }

for(int i=0, j=10; i<=j; i++, j--){ szamlalo++;}

for(int i=start+newList;i<=followBitSum;i+=2){utasítások ;}

Page 32: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

32

Széchenyi István Egyetem

Tömbök bejárása 2

for (<típus> <elem> : <tömb>){}

int total = 0;int t[] = new int[10];…for(int i: t){ total += i;}

Page 33: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

33

Széchenyi István Egyetem

Szöveges adatok kezeléseA String osztály

Page 34: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

34

Széchenyi István Egyetem

Karakteres típusok

'a', '\t', '\b',.... – karakteres konstans char – alaptípusKarakterekből képzett tömbök:char sor[] = new char[50];Feldolgozásuk: C nyelvhez hasonlóan

Page 35: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

35

Széchenyi István Egyetem

Sztringkezelés Egy új, önálló osztály a szöveges adatok kezelésére, együttműködés az alaptípusokkal, automatikus konverzióban használható, a String osztály használata

String szov1 = new String(”első szöveg”);

String szov2 = ”második szöveg”;

String szov3 = ”Eredmény =”+3”;

Konstans karakterláncok kezelése. Hatékony és gyors karakterlánc kezelés. Egyszerű műveletek és metódusok.

Page 36: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

36

Széchenyi István Egyetem

Sztringkezelés

Alapműveletek: length(), charAt(i), getBytes(), split(string,delim), toCharArray(), valueOf(g,i), substring(i,db)

Csak kevés módosító művelete van: concat(g), replace(mit, mire), toLowerCase(), toUpperCase(), trim().

Page 37: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

37

Széchenyi István Egyetem

Sztringkezelés – módosítható szöveges adatok A StringBuffer osztály

String – StringBuffer átalakítás oda-visszahozzáfűzés, beszúrás (append, insert)rövidítés, bővítésmegfordítható (reverse)karakterek, réssztringek törölhetők

Page 38: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

38

Széchenyi István Egyetem

StringBuffer (StringBuilder)

Metódusai:capacity(), length(), charAt(i),indexOf(g), lastIndexOf(g)append(g), delete(i1, i2), insert(iPosn, g), getChars(i),setCharAt(iposn, c), substring(), replace(i1,i2,gvalue), reverse(),trimToSize(), toString(g)

Page 39: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

39

Széchenyi István Egyetem

Szövegek darabolása – split metódus, StringTokenizerGyakori feladat a szövegek szétdarabolása fehér karakterek mentén:1. String osztály split metódus String[] eredmeny = "Egy darabolási teszt feladat".split("\\s");

for (int x=0; x<eredmeny.length; x++) System.out.println(eredmeny[x]);

(reguláris kifejezések!)2. StringTokenizer osztály

Később tárgyaljuk (a java.util csomagnál)!

StringTokenizer st = new StringTokenizer("Egy darabolási teszt"); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }

Page 40: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

40

Széchenyi István Egyetem

Csomagoló (burkoló) osztályok

∀ elemi típushoz ∃ egy ún. csomagoló osztály: Boolean, Character, Integer, Long, Float, Double

Az adott típusú értéket egy objektumban helyezi el, amely ezután referenciaként érhető el:

+ : összetett adatszerkezetekben hatékonyabban használhatóak, elérhetőek egyes speciális műveletek

– : helypazarló Példa:

Float f = new Float(3.14);int n = Integer.parseInt(”1234”);

Page 41: Objektum orientált programozás - szt1.sze.huszt1.sze.hu/java/ea/prog3_ea_2011_02.pdf · 2 Széchenyi István Egyetem A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott

41

Széchenyi István Egyetem

Csomagoló osztályok