Académique Documents
Professionnel Documents
Culture Documents
Informatikai Kar
Tmavezet:
Ksztette:
Ksa Mrk
egyetemi tanrsegd
Fenyvesi Tibor
Szab Lszl
Informatika tanr szak
Debrecen
2010.
Tartalomjegyzk
Tartalomjegyzk...............................................................................................................2
1. Bevezets (F.T.) ...........................................................................................................4
2. A Java programozsi nyelv (Sz.L.) ...............................................................................6
2.1. A Java programozsi nyelv trtnete .....................................................................6
2.2. A Java programozsi nyelv bemutatsa .................................................................7
3. A programozsi nyelv tantsnak kvetelmnyei (F.T.).............................................10
3.1. A Nemzeti Alaptanterv elrsai..........................................................................10
3.2. Kerettantervi elrsok ........................................................................................10
3.3. Az emelt szint informatika rettsgi vizsga kvetelmnyei ................................11
4. A szmtgp jelentsge s felhasznlsa a tantsi-tanulsi folyamatban (Sz.L.)......12
4.1. A szmtgpes oktats elmlete .........................................................................12
4.2. A szmtgpek a tantsi-tanulsi folyamatban...................................................13
4.3. Az oktatprogramok hatsa az oktat-nevel munkra ........................................15
5. Az oktatprogram bemutatsa ....................................................................................16
5.1. Fejleszteszkzk (F.T.) .....................................................................................16
5.2. Rendszerterv (Sz.L.)............................................................................................16
5.3. Az oktatprogram rszletes bemutatsa ...............................................................19
5.3.1. A kezdetek (Sz.L.) ....................................................................................19
5.3.2. Nyelvi alapelemek (Sz.L.).........................................................................27
5.3.3. Nyelvi eszkzk (Sz.L.)............................................................................31
5.3.4. Numerikus- s egyb adattpusok (Sz.L.) ..................................................39
5.3.5. Karakteres adattpusok (Sz.L.) ..................................................................43
5.3.6. Elgaztat utastsok (Sz.L.) .....................................................................49
5.3.7. Ciklusszervez utastsok (Sz.L.)..............................................................55
5.3.8. Tmbk (Sz.L.).........................................................................................60
5.3.9. Input-output mveletek (F.T.) ...................................................................65
5.3.10. Emelt szint rettsgi feladatok megoldsa (F.T.) .....................................74
5.3.11. Az objektum-orientlt paradigma (F.T.) ....................................................84
5.3.12. Osztly s csomag (F.T.)...........................................................................88
Szerzk:
F.T.: Fenyvesi Tibor
Sz.L. Szab Lszl
1. Bevezets
Napjaink kzoktatsnak hangslyos rszv vlt az informatikai tuds. Mg korbban a
szmtstechnika majd ksbbi nevn informatika tantrgy csak szakmai trgyknt
szerepelt az iskolarendszer oktats palettjn, mra mr kzismereti trggy vlt.
Gyakorlatilag egyenrang lett az alaptantrgyakkal.
Ma a mindennapi let szinte minden terlete megkveteli az informatikai alaptudst.
Ez az alaptuds az informatikai eszkzk s alkalmazi szoftverek legalbb alapszint
hasznlatt jelenti, amelyet a mai ifjsg a kzoktats keretein bell elsajtthat. Van azonban
az informatikai oktatsnak egy msik ga is, amely a kezdeti idszak (80-as, 90-es vek)
egyeduralma utn gyakorlatilag httrbe szorult. Ez pedig a programozi tuds. A
trsadalomnak egyre tbb j programozra lenne szksge, mert az informatika trnyerse
tretlen. Nem elg a hardver, nem elg a kpzett felhasznl, ha nincsenek j szoftverek! Az
internet minden kpzeletet fellml trnyerse szintn programozk hadt ignyli, mert az
interaktv weboldalak nem msok, mint szmtgpes programok. Ezrt a leend
programozk kpzst rdemes minl elbb elkezdeni, de legksbb a kzpiskolai kpzs
keretn bell felttlenl.
Nhny ve lehetsg van arra, hogy kzpiskolban a hagyomnyos programozsi
nyelvek mellett (Pascal, Delphi, Visual Basic, C, C++) egy viszonylag j nyelv, a Java nyelv
is oktathat. Egyre inkbb trt hdt, az internet egyik alapnyelve, sok eszkz (pl. mosgp,
mobiltelefon) vezrlnyelve. jdonsga abban rejlik, hogy ellenben a korbbi eljrsorientlt programozsi nyelvekkel j szemlletet kpvisel: a tisztn objektumorientlt
programozst. Ez a paradigma az jrafelhasznlhatsg s a bezrtsg megvalstsval
korszer, biztonsgos eszkzt ad a programozk kezbe.
Szerztrsammal, Szab Lszlval egytt mint kzpiskolban tant pedaggusok
gy reztk, hogy lve a diplomamunka-kirs adta lehetsggel csoportmunka keretben
rdemes lenne foglalkozni ezzel a nyelvvel. Clul tztk ki egy olyan oktatprogram
elksztst, amelynek segtsgvel egy kzpiskols dik is knnyen elsajtthatja a Java
nyelv alapjait, s megismerkedhet az objektum-orientlt programozsi mdszerekkel is.
Tartalmt tekintve szem eltt tartottuk, hogy az tadni kvnt ismeretek krnek meg kell
felelnie a NAT, az informatikai kzponti kerettanterv s az emelt szint informatika rettsgi
vizsga programozsi feladata ltal tmasztott kvetelmnyeinek is.
A kezdetek 1991-re nylnak vissza, a Sun Microsystem egy nll fejleszti csoportot hozott
ltre Green Team fantzia nven. Azt a feladatot kaptk, hogy olyan hztartsi eszkzket
ksztsenek, amelyek beptett mikrocsippel (mikrochip) rendelkeznek, s kpesek az egyms
kztti kommunikcira is. Ebben a csoportban dolgozott James Gosling, Patrick Naugthon
s Mike Sheridan. Kezdetben a C++ programozsi nyelvvel prblkoztak, de Gosling
felismerte, hogy ez a nyelv alkalmatlan erre a feladatra, s a csapat megtervezte a sajt
nyelvt, az Oak-ot (Tlgy). A nv lltlag gy jutott Gosling eszbe, hogy ppen egy
knyvtrat hozott ltre az j nyelvnek, s akkor az ablakon kinzve megltott egy tlgyft. A
nyelvvel szemben tmasztott alapvet elvrs az volt, hogy platformfggetlen legyen.
A kezdeti sikerek ellenre sem kaptak nagyobb megrendelseket, gy 1993 tavaszra a
projekt vgveszlybe kerlt. Ekkor dntttek gy a csoport vezeti, hogy meg kell
prblkozni az internettel.
A grafikus bngszk elterjedsvel az internet egyre nagyobb npszersgre tett
szert. Az Oak technolgia a platformfggetlensgnek ksznheten tkletesen megfelelt az
internet szmra, hiszen nem okozott gondot a hlzatba kapcsolt gpek inhomogenitsa.
1995 elejre a csapat kifejlesztett egy grafikus bngszt Webrunner nven. Ksbb ez a
bngsz lett az se a HotJava bngsznek, s itt jelent meg a Java kabalafigurja a Duke
figura. Az Oak nevet a Sun-nak nem sikerlt levdenie, mert kiderlt, hogy mr hasznljk
egy programozsi nyelv elnevezseknt. A programnyelv kifejlesztsnek ideje alatt
rengeteg kvt fogyasztottak a fejlesztk, gy a kv hazjnak emlket lltva kapta a
technolgia a Java nevet.
Az interneten lehetv tettk a forrsok ingyenes letlthetsgt, s gy brki szmra
kiprblhatv, tesztelhetv vlt. A letltsek szma rohamosan nvekedett, 1995
novemberben mr letlthet volt a nyelv bta verzijnak forrskdja s fejlesztkszlete.
Nhny v alatt a Java nyelv a programozk egyik legfontosabb eszkzv vlt. Ksznhet
mindez annak a lelkes kis csapatnak, amely megltta a platformfggetlensg irnti ignyt, s
az ebben rejl lehetsgeket.
2.2.
[14] A Java nyelv fejleszti hivatalos kiadvnyban (white paper) tettk kzre tervezsi
cljaikat s eredmnyeiket. Ez a kiadvny az albbi szavakkal jellemzi a Java nyelvet:
Egyszer (simple): A Java nyelv a C++ leegyszerstett vltozata. Leegyszersdtt a
szintaktika (eltntek a mutatk, automatikus lett a memria felszabadtsa). Java
programot rni vagy olvasni sokkal egyszerbb, mint egy C++ programot.
Objektum orientlt (object-oriented): Majdnem tiszta OO nyelv, egy kevsb hibrid
nyelv. Egy Java programot osztlyok ksztsvel s jrafelhasznlsval ptnk
ssze.
Elosztott (distributed): Egy Java program kpes az internet brmely pontjn tallhat,
URL-lel azonostott objektumot elrni s feldolgozni.
Robusztos (robust): Mskppen hibatr, megbzhat. A nyelv tervezi nagy gondot
fordtottak a hibk korai felismersre, mg a fordts idejn trtn kiszrsre.
Biztonsgos (secure): A Java nyelvet elssorban internetes krnyezetben val
mkdsre terveztk, ezrt biztonsgi korltokat kellett bevezetni, nehogy egy ilyen
program krt tehessen a msik felhasznl szmtgpben.
Architektra semleges (architecture neutral): A fordtprogram gptpustl fggetlen
bjtkdot (.class fjl) generl, s ez a kd a klnbz gpek processzorain futtathat,
ha biztostva van a megfelel futtat krnyezet (Java Virtual Machine, JVM). Az adott
gp a bjtkdot futs kzben rtelmezi a virtulis gp segtsgvel. A JVM ltal
vglegesre fordtott kd a natv kd, ez a kd mr tnylegesen fut az adott gpen.
Hordozhat (portable): A nyelvnek nincsenek implementci fgg elemei, azaz nem
fordulhat el olyan eset, hogy egy nyelvi elem vagy osztly az egyik krnyezetben
mskpp legyen specifiklva, mint a msikban.
Interpretlt (interpreted): A clgpen fut natv kdot az rtelmez hozza ltre
utastsonknt a bjtkd (.class fjl) rtelmezsvel. Ha a clgpen installlnak egy
Java rtelmezt, akkor brmilyen Java kdot rtelmezhet.
Nagy teljestmny (high performance): Ez most mg egy elrend cl, a fejlesztk
azon munklkodnak, hogy a jelenlegi fordts s futtats sorn jelen lv jelents
idignyt lervidtsk.
A Java programok osztlyokbl plnek fel. Java nyelven programot rni annyit jelent, mint
elkszteni az osztly programjt, illetve felhasznlni a rendelkezsre ll kszletbl (API1), a
feladat megoldshoz szksges osztlyt.
a programozs eszkzei
o programkd, programnyelv, kdols
o fejleszti krnyezet, fordts, szerkeszts
o utastsok, adatok, fggvnyek, eljrsok s objektumok
10
12. vfolyam:
pl tanmenetekben is.
3.3. Az emelt szint informatika rettsgi vizsga kvetelmnyei
A kzpfok oktats lezrst ad rettsgi vizsgnak vlaszthatan az informatika
tantrgy is rsze lehet. A programozs azonban csak az emelt szint rettsgi vizsgn
szerepel, ahol is pontszmban a gyakorlati feladatsor tbb mint egyharmad rszt adja. Az
rettsgi vizsga vizsgaszablyzata az informatika rettsgi vizsga rszeknt szintn rgzti
a programozsi ismeretek kvetelmnyrendszert [4]:
kzpiskolai
oktatsval
kapcsolatos
clokat
kvetelmnyeket,
amelyeket
az
11
(2)
(3)
(4)
TROL
SZEMLLTET
UTASTS
TANUL
VLASZOK
(6)
VISSZACSATOLT
ZENET
(7)
(5)
SZELEKTOR
VLASZ
12
13
SZMTGPKZPONT
Tananyag
Adatllomnyok
ISKOLA TANTEREM
Diafilmvett
Billentyzet
Szmtgp
Hallgati
Adatllomnyok
TANR
Kperny
TANUL
Billentyzet
1. bra
14
4.3.
Napjainkban
egyre-msra
rasztanak
el
bennnket
klnbz
oktat-bemutat
15
5. Az oktatprogram bemutatsa
5.1. Fejleszteszkzk
Az oktatprogram s a szakdolgozat elksztshez az albbi szoftvereket hasznltuk:
opercis rendszer:
weblapszerkeszt:
szvegszerkeszt:
webbngsz:
Java fejleszt:
Tesztgenertor:
5.2. Rendszerterv
Az oktatprogram ksztse sorn a bevezetben ismertetett megfontolsok vezettek
bennnket. Egy olyan segdeszkzt kvnunk a kzpiskols dikok kezbe adni, aminek a
hasznlatval elsajtthatjk a Java programok ksztsnek a menett, valamint kpesek
lesznek az emelt szint rettsgin a programozsi feladat megoldsra is.
A kvetelmnyek (3. fejezet) ttanulmnyozsa utn, valamint a korbbi vekben
szerzett szaktanri tapasztalatainkat (Pascal programozsi nyelv tantsa) figyelembe vve a
tananyagot 15 htre bontottuk, heti 4 tantsi ra keretben. gy ltjuk, hogy ez a megfelel
forma arra, hogy tadjuk az ismereteket, valamint kszsgszintre hozzuk az alapvet
programozstechnikai elemek elvgzst.
A tantsi egysgeket a kvetkezk szerint alaktottuk ki:
1. ht
A kezdetek
2. ht
Nyelvi alapelemek
3. ht
Nyelvi eszkzk
4. ht
16
5. ht
Karakteres adattpusok
6. ht
Elgaztat utastsok
7. ht
Ciklusszervez utastsok
8. ht
Tmbk
9. ht
Input-output mveletek
10. ht
11. ht
Az objektum-orientlt paradigma
12. ht
Osztly s csomag
13. ht
rklds
14. ht
Kivtelkezels
15. ht
17
18
A program nyitkpernyje:
19
A platformfggetlensg azt jelenti, hogy nemcsak UNIX-on, PC-n, ... stb, lehet futtatni
az adott programot, hanem brmilyen gptpuson. Ez annyiban sntt csupn, hogy
brmilyen gptpuson futtathat egy Java program, amely rendelkezik Java futtatval, az
n. Java Virtual Machine-nal (JVM), azaz egy virtulis, Java programot futtatni kpes
krnyezettel.
Az interneten keresztl trtn hasznlat azt jelenti, hogy a Web-bngszben
megjelen Weblapjainkrl indulhatnak n. Java appletek, amelyek azonos mdon fognak
megjelenni s futni, minden platformon fut Web-bngszben. A Java appletek a Java
programoktl abban klnbznek, hogy az appletnek korltozottak a kpessgei. Pldul nem
rhatja, olvashatja a helyi fjljainkat, mg egy Java programbl ugyangy beolvashatom,
rhatom mintha azt egy msik programozsi nyelven tettem volna meg.
A Java programozsi nyelv jellemzi:
egyszer
objektumorientlt
elfordtott
rtelmezett
robusztus
biztonsgos
semleges architektrj
hordozhat
nagy teljestmny
tbbszl
dinamikus
A Java fordtprogramos programnyelv, de a fordts folyamata az albbiak alapjn trtnik:
Elszr a forrsprogramot a Java-fordt (compiler) egy kzbls nyelvre fordtja
> Java bjtkdot kapunk eredmnyl (ez a bjtkd hordozhat)
Ezt a kdot rtelmezi s futtatja a JVM. A JVM teht egy interpreternek
tekinthet.
A Java programok ksztshez az albbiakra lesz szksgnk:
20
21
22
23
24
public
class
public static void
psvm + <TAB>
main(String[] args{})
sout + <TAB> System.out.println("");
25
, ahol ktfle
lehetsg kzl vlaszthatunk. (Build Main Project, Clean and Build Main Project)
Az Output ablakban kapunk tjkoztatst a fordts eredmnyrl, s az elfordul
hibkrl.
Futtats
A sikeresen lefordtott programot futtathatjuk.
A futs eredmnyt az Output ablakban tekinthetjk meg.
26
27
Pldk az azonostra:
Szablyos Java azonostk: Nem azonostk:
x
x+y
r
x*y+3
diak_kod
12 t
Nhny gyakorlati hasznos tancs az azonostk ksztshez:
Prbljunk meg jl olvashat, beszdes azonostkat vlasztani. (minSebesseg,
karakterekSzama)
Az osztlyok azonostjt nagybetvel kezdjk. (Szemly, Alakzat)
A vltozk s metdusok azonostjt kisbetvel kezdjk. (sebessg, darab)
A konstansokat csupa nagybetvel rjuk. (ALAPAR, NYUGDIJKORHATAR)
Az azonostkat gy tagoljuk, hogy az sszetett szavak kezdbetit nagybetvel, a
tbbit kisbetvel rjuk. (maxSebessegHatar)
5.3.2.2.2. Kulcssz
Olyan karaktersorozat, amelynek az adott nyelv tulajdont jelentst, s ez a jelents a
programoz ltal nem megvltoztathat.
A Java kulcsszavai a kvetkezk:
abstract
default
if
package
transient
boolean
do
implements private
try
break
double
import
protected
void
byte
else
instanceof public
volatile
case
extends
int
return
while
catch
final
interface
short
synchronized
char
finally
long
static
this
class
float
native
super
throw
continue
for
new
switch
throws
A const s a goto szintn foglalt sz, de nincs implementlva, egyik sem hasznlatos.
5.3.2.3. Cmke
A vgrehajthat utastsok megjellsre szolgl, brmely vgrehajthat utasts
megcmkzhet. Azrt alkalmazzuk, hogy a program egy msik pontjrl hivatkozni tudjunk
r.
A cmke egy azonost, az utasts eltt ll kettsponttal elvlasztva.
Szintaktika:
cimke: {
28
5.3.2.4. Megjegyzsek
A megjegyzs olyan programozsi eszkz, amely arra szolgl, hogy a program rja a kd
olvasjnak valamilyen informcit szolgltasson.
A megjegyzst a forrsszvegben hromfle mdon helyezhetjk el:
//-tl sorvgig megjegyzs.
/*
/**
29
5.3.2.5. Literlok
A literl olyan programozsi eszkz, amelynek segtsgvel fix, explicit rtkek pthetk be
a program szvegbe. Kt komponense van: tpus s rtk.
Fajti:
egsz: egy pozitv vagy negatv egsz szm, vagy nulla.(pl. +200, -3, 1256987)
vals: egy tizedesekkel lerhat szm. Kt formban adhat meg: tizedes forma s
lebegpontos forma (pl. 6.32, 100.0, 0.0006, 6.3E2, 5E-4)
logikai: kt logikai konstans ltezik, a true (igaz) s a false (hamis).
karakter: egy unicode karakter (szimpla aposztrfok kz tesszk). (pl. 'a', 'B')
szveg: akrmilyen hossz, unicode karakterekbl ll sorozat (idzjelek kz
tesszk). (pl. Szia)
null
5.3.2.6. Vltoz
A programok adatokon vgeznek klnfle manipulcikat, ezek az adatok a program futsa
alatt vltoztatjk rtkket. A kezdeti adatokat a program eltrolja a vltozkba, az rtkek az
algoritmusnak megfelelen mdosulnak a program futsa folyamn. Az algoritmus vgn a
vltoz a vgeredmny rtkvel rendelkezik. A vltoz olyan adatelem, amely azonostval
van elltva. Az egyik legfontosabb programozsi eszkznk.
A vltozkat hasznlat eltt deklarlni kell. Ez azt jelenti, hogy meg kell adni a
tpust, nevt, esetleg rtkt is. Amikor egy vltoznak kezdeti rtket adunk, akkor a
vltozt inicializljuk.
pl. byte a; int x = 0;
Egy vltozt a program tetszleges rszn deklarlhatunk.
A vltoz rvnyessgi tartomnya a programnak az a rsze, ahol a vltoz
hasznlhat. A vltozdeklarci helye hatrozza meg az rvnyessgi tartomnyt.
A vltoz lehet (a deklarls helytl fggen.):
30
A vltozt lehet vglegesen is deklarlni (konstans vltoz), a vgleges vltoz rtkt nem
lehet megvltoztatni az inicializls utn.
A vgleges vltozk deklarcinl a final kulcsszt kell hasznlni:
pl. final int aKonstans = 0;
5.3.3. NYELVI ESZKZK
5.3.3.1. Kifejezsek (operandusok s opertorok)
A kifejezsek szintaktikai eszkzk, arra valk, hogy a program egy adott pontjn ismert
rtkekbl j rtkeket hatrozzunk meg. Kt komponense van: tpus s rtk.
Ktfle feladata van: vgrehajtani a szmtsokat, s visszaadni a szmts
vgeredmnyt.
sszetevk:
Operandusok: Az rtket kpviselik. Lehet literl, nevestett konstans, vltoz
vagy fggvnyhvs az operandus.
Opertorok: Mveleti jelek (pl. *, /, +, -).
Kerek zrjelek: A mveletek vgrehajtsi sorrendjt befolysoljk.
31
Plda a kifejezsre:
sin(0)
Operandus
Opertor
Operandus
Attl fggen, hogy egy opertor hny operandussal vgez mveletet, beszlhetnk:
egyoperandus (unris pl. (+2)),
ktoperandus (binris pl. (2+3)) vagy
hromoperandus (ternris pl. (a*b*c)) opertorokrl.
5.3.3.1.1. Opertorok:
(Az operanduson hajtanak vgre egy mveletet.)
5.3.3.1.1.1. Aritmetikai opertorok: Alapvet matematikai mveletek vgzsre hasznljuk
ket.
+
(sszeads),
(kivons),
(szorzs),
(oszts),
(maradkkpzs).
32
Implicit konverzi: Amikor egy aritmetikai opertor egyik operandusa egsz, a msik
pedig lebegpontos, akkor az eredmny is lebegpontos lesz. Az egsz rtk implicit mdon
lebegpontoss konvertldik, mieltt a mvelet vgrehajtdna.
Plda: Egy egsz szmot osztunk egy vals szmmal, a vgeredmny automatikusan
vals lesz.
>>
eredmny: 1
(double) 6/4
>>
(nagyobb),
>=
<
(kisebb),
<=
==
(egyenl),
!=
(nem egyenl).
33
(logikai s),
||
(logikai vagy),
(logikai nem),
&
(bitenknti s),
(bitenknti vagy),
(bitenknti nem),
34
(op1 << op2; op1 bitjeit op2 rtkvel balra lpteti, jobbrl nullkkal tlti fel)
>>
(op1 >> op2; op1 bitjeit op2 rtkvel jobbra lpteti, balrl a legnagyobb helyrtk
bitet tlt fel)
>>>
(op1 >>> op2; op1 bitjeit op2 rtkvel jobbra lpteti, balrl nullkkal tlt fel)
rendeljnk.
Rvidtett rtkad opertorok:
+ =, - =, * =, / =, % =, & =, | =, ^ =, << =,
Feltteles opertor
[]
Tmbkpz opertor
Minstett hivatkozs
new
j objektum ltrehozsa
35
expr++ expr--
unris
multiplikatv
* / %
additv
+ -
lptets
relcis
egyenlsg
= = !=
bitenknti s
&
bitenknti vagy
logikai s
&&
logikai vagy
||
feltteles
?:
rtkads
36
a = b;)
37
Egy metdus lehet eljrs vagy fggvny aszerint, hogy van-e visszatrsi rtke.
5.3.3.3.1. Eljrs
Az eljrsnl nincsen visszatrsi rtk, egyszeren vgrehajtdik az eljrs nevre val
hivatkozssal. A vgrehajts utn a program azzal az utastssal folytatdik, amelyik az
eljrst meghv utastst kveti. Az eljrs visszatrsi tpusa void (semleges), ami azt
jelenti, hogy a visszatrsi tpus nincs definilva.
Plda az eljrsra:
(Az eljrs egy vonalat rajzol a kpernyre.)
5.3.3.3.2. Fggvny
A fggvnynl van visszatrsi rtk. Fggvnyt is egyszeren a nevre val hivatkozssal
hvunk meg, de visszaad egy rtket, melyet a fggvny neve kpvisel.
Plda a fggvnyre:
(A fggvny megduplzza az x vltoz rtkt.)
38
5.3.3.4. Blokk
A blokk nulla vagy tbb utasts kapcsos zrjelek kztt, amely hasznlhat brhol, ahol az
nll utastsok megengedettek.
Jellemzi:
{ } zrjelek kztt szerepel.
Cmkzhet.
Tetszleges mlysgben egymsba skatulyzhat.
A vltoz a blokk loklis vltozjaknt deklarlhat.
A blokkon bell tetszleges a deklarcis s vgrehajthat utastsok sorrendje.
5.3.4. NUMERIKUS- S EGYB ADATTPUSOK
A Java nyelvben az adattpusoknak kt fajtja van: primitv s referencia tpusok. A primitv
adattpusok egy egyszer rtket kpesek trolni: szmot, karaktert vagy logikai rtket.
Primitv tpusok:
Referencia tpusok:
Egsz tpus
Vals tpus
Karakter tpus
Logikai tpus
Tmb tpus
Osztly tpus
Interfsz tpus
Lers
bjt mret egsz
rvid egsz
int
egsz
long
hossz egsz
5.3.4.1.2.
Tpus
float
double
Mret / formtum
8 bit kettes komplemens (-128 - 127)
16 bit kettes komplemens (-32768 - 32767)
32 bit kettes komplemens (-2147483648 2147483647)
64 bit kettes komplemens
(-9223372036854775808 - 9223372036854775807)
Vals szmok
Lers
Mret / formtum
egyszeres pontossg
32 bit IEEE 754
lebegpontos
dupla pontossg lebegpontos 64 bit IEEE 754
39
Mret / formtum
16 bit Unicod karakter
true vagy false
40
abszolt rtk
A kapott paramter abszolt rtkvel tr vissza.
felfel kerekts
double ceil(double)
double floor(double)
double rint(double)
long round(double)
int round(float)
double min(double,
double)
float min(float, float) A kt paramter kzl a kisebbel tr vissza.
int min(int, int)
long min(long, long)
double max(double,
double)
float max(float, float) A kt paramter kzl a nagyobbal tr vissza.
int max(int, int)
long max(long, long)
A kvetkez program bemutatja a fenti tblzatban ismertetett metdusok hasznlatt:
41
42
random()
43
44
S z v e g ?
Az brn egy Szveg? objektum lthat, amely egy 7 karakter hossz szveg (String). Az
els bet az S indexe 0, a v bet indexe 3, a ? karakter pedig a 6.
Figyeljnk arra, hogy az indexels nullval kezddik!
5.3.5.2.3. A String osztly fontosabb konstruktorai, metdusai:
String()
String(String value)
int length()
char charAt(int index)
String toLowerCase()
String toUpperCase()
45
String toString()
StringBuffer(String str)
int capacity()
int length()
char charAt(int index)
StringBuffer append(<Type> value)
46
>>
Szveg hossza
Plda:
String str="Laci";
int hossz=str.length(); >>
>>
Plda:
String str="Laci";
char c=str.charAt(0);
>>
>>
Kisbets talakts
Plda:
String str="KICSI";
String kstr=str.toLowerCase();
String toUpperCase()
>>
>>
kicsi
Nagybets talakts
47
Plda:
String str="nagy";
String nstr=str.toUpperCase();
>>
NAGY
>>
Karakterek
>>
>>
inka
Pl
>>
Objektumok
Plda:
String str1="Laci";
String str2="Gizi";
str1.equals(str2); >>
str1.compareTo(str2)
false
>>
5
48
str1.indexOf(a);
>>
str1.indexOf(str2;0) >>
1
2
>>
Hozzfzs
Laci
5.3.5.4.6. Bvts:
StringBuffer append(<Type|type> value) >>
Bvts a vgn
Plda:
StringBuffer szoveg = new StringBuffer("rtk");
szoveg.append("12.3"); >>
rtk12.3
StringBuffer insert(int offset,<Type|type> value)
Bvts adott pozcitl.
Plda:
szoveg.insert(5, "=");
>>
>>
rtk=12.3
5.3.5.4.7. Trls:
StringBuffer deleteCharAt(int index)
>>
karakter trlse.
StringBuffer delete(int start, int end)
trlse.
Adott index
>>
Rszlnc
Plda:
StringBuffer szoveg = new StringBuffer("Labdargs");
szoveg.delete(5,10);
>>
Labda
szoveg.deleteCharAt(0) >>
abda
5.3.6. ELGAZTAT UTASTSOK
A program ksztse sorn addnak olyan helyzetek, ahol a folyamatos utasts vgrehajts
menett meg kell trnnk, felttelektl fgg elgazsokat kell a programba beptennk. gy
tudjuk megoldani azt a feladatot, hogy ez a programrsz csak akkor kerljn vgrehajtsra, ha
arra szksg van.
49
50
Szintaktika:
switch(<kifejezs>){
case <konstans kifejezs> : <utasts vagy blokk>
[case <konstans kifejezs> : <utasts vagy blokk>]
...
[default:<utasts v. {blokk}>]
}
Mkdsi elv:
Elszr kirtkeldik a kifejezs.
A kifejezs rtke a felrs sorrendjben sszehasonltsra kerl a case gak rtkeivel.
Ha van egyezs, akkor vgrehajtdik az adott gban megadott tevkenysg, majd
a program a kvetkez gakban megadott tevkenysgeket is vgrehajtja.
Ha nincs egyezs, akkor a default gban megadott tevkenysg hajtdik vgre.
Plda:
Output:
51
Plda:
Output:
5.3.6.2.2. else..if
Szintaktika:
if (<felttel1>)
<utasts . blokk>
else if (<felttel2>)
<utasts v. blokk>
...
else
<utasts v. blokk>
A mkdsi elvet az albbi plda szemllteti:
52
A kd helyesen strukturlva:
53
import
for
java.util.Scanner opcit:
54
55
56
A for fejnek tagjai hagyhatk resen is, de a pontosvesszket ki kell tenni. pl.
for(;;)...
5.3.7.3. Vgfeltteles ciklus: do..while
Szintaktika:
do
<utasts v. blokk>
while (felttel);
Mkdsi elv:
A ciklus magja egyszer mindenkppen vgrehajtdik, majd a ciklus vgn, egy
felttelvizsglat kvetkezik, amely eldnti, hogy bent maradunk-e a ciklusban, vagy nem. Ha
a felttel igaz, akkor a ciklusmag jbl vgrehajtsra kerl. Ez a folyamat addig folytatdik,
amg a felttel hamiss nem vlik (bennmaradsi felttel).
res ciklus a vgfeltteles ciklusnl nem fordulhat el, hiszen a ciklus magja legalbb
egyszer lefut.
Plda:
Az elz hrom ciklus mindegyike ugyanazt a feladatot oldotta meg, kirajzolt 6 db csillagot a
kpernyre.
5.3.7.4. Ciklusok egymsba gyazsa
A ciklusainkat egymsba is gyazhatjuk.
Nzznk meg egy egyszer pldt kt ciklus egymsba gyazsra!
Plda: (Jelentsk meg a konzolon kvetkez alakzatot:
********************
********************
********************)
57
Forrsprogram:
A program elemzse:
A csillagok egy 3 soros, 20 oszlopos tblzatot alkotnak. A kirajzolst gy tudjuk egyszeren
elkpzelni, mintha a tblzat celliba helyeznnk el a csillagokat.
A kls ciklusban megynk vgig a sorokon, a bels ciklusban pedig az oszlopokon.
Elszr az 1. sor elemeit jelentjk meg egyms utn, majd a 2. sor elemeit, s vgl a 3. sor
kvetkezik. Ha egy teljes sort megjelentettnk, akkor meg kell oldani a sorvlts
problmjt. Ezt egyszeren egy println("") utastssal is megtehetjk.
5.3.7.5. Alapvet algoritmusok
5.3.7.5.1. Megszmlls
Ezzel az algoritmussal egy sorozat, adott tulajdonsggal rendelkez elemeit szmoljuk meg.
Az algoritmus menete a kvetkez:
1. A szmllt nullra lltjuk.
2. Vgig lpkednk a sorozat elemein, s ha az aktulis elem tulajdonsga megegyezik az
adott tulajdonsggal, akkor a szmll rtkt eggyel megnveljk.
3. Megjelentjk a szmll rtkt, ez a szm adja az adott tulajdonsggal rendelkez
elemek szmt.
Plda: (Ma st a nap. sztringben megszmoljuk az 'a' karakterek szmt.)
58
59
5.3.8. TMBK
A tmb egy olyan vltoz, amely tbb azonos tpus adatot tartalmaz. A
tmb hossza a ltrehozskor dl el, s attl kezdve a tmb egy lland
mret adatszerkezet.
60
A tmbket egy fikos szekrnyhez lehetne hasonltani, amelyben az egyes fikokban egyegy adatot helyeznk el. A fikokra a sorszmukkal (a tmbben elfoglalt helye) hivatkozunk.
A sorszmozst nullval kezdjk! Ha valamelyik fik tartalmra szksgnk van, akkor
megadjuk, hogy hnyadik fikrl van sz, s kiolvassuk a tartalmt.
Plda: (Ha szksgnk van a 100-as szmra, akkor a 3-as index fikot kell kihzni!)
0
10
1
2
2 3 4
34 100 1
5
0
6
5
7 8 9
67 76 99
Lehetsgnk van arra is, hogy olyan tmbket hozzunk ltre, amelyek tmbket
tartalmaznak (tmbk tmbjei).
5.3.8.1. Tmbk deklarlsa, kezdrtkk belltsa
A tmb deklarlsa a tbbi vltozhoz hasonlan kt rszbl ll: meg kell adni a tmb
tpust s a tmb nevt.
Szintaktika:
<elemtpus>[] <tmbAzonost>; pl. int[] szamok;
A [ ] tmbkpz opertort a tmbAzonost utn is tehetjk.
<elemtpus> <tmbAzonost>[]; pl. int szamok[];
A deklarls sorn nem hoztuk mg ltre a tmbt, egyelre csak a referencinak
(memriacmnek) foglaltunk helyet. A tmbt a Javban kln ltre kell hozzuk a new
opertorral!
Szintaktika:
new elemtpus[<mret>];
pl. new int [10];//Itt egy olyan integer tpus adatelemeket tartalmaz tmbt hoztunk
ltre, amely 10 db elemet tartalmaz.
A deklarcit s a ltrehozst egy lpsben is elvgezhetjk.
Pldul:
int szamok[] = new int[10] ;
A deklarls sorn (inicializl blokkal) a tmb elemeinek kezdeti rtkek is adhatk.
Szintaktika:
<elemtpus>[] <tmbAzonost> = {<rtk0>, <rtk1>, ...};
pl. Ksztsnk egy String tpus tmbt, amely a ht napjait tartalmazza!
61
String[] napok =
{"Htf","Kedd","Szerda","Cstrtk","Pntek","Szombat",
"Vasrnap"};
5.3.8.2. Tmbelemek elrse
A tmb egyes elemeire az indexkkel hivatkozhatunk.
Szintaktika:
<tmbAzonost>[index];
pl. szamok[3] = 2; // A 4. fikba (3-as index) betettk a 2-es szmot.
5.3.8.3. Tmb mretnek meghatrozsa
Minden tmb objektumnak van egy length konstansa, amely megadja a tmb hosszt.
(Egyszeren azt, hogy hny adat helyezhet el benne?)
tmbAzonost.length
pl. (A napok tmbnl, amely a ht napjait tartalmazza.)
System.out.println(napok.length); >> 7
5.3.8.4. Objektumtmbk
A tmbkben trolhatunk referencia tpus elemeket is. A ltrehozsuk olyan, mint a primitv
tpus elemeket tartalmaz tmbk.
Nzznk meg egy egyszer pldt, ahol a tmbben hrom String objektumot trolunk:
62
Plda:
Megrett a meggy.
Csipkebokor vessz.
Te leszel a prom.
63
64
65
pldny
nextInt()
metdusa
ltal
megkapja
bert
szmot,
standard
Ebben az esetben a teljes input sort beolvassuk a sor nev stringbe, majd a osztly
segtsgvel a megadott hatroljel mentn adategysgekre (tokenekre) feldarabolva
feldolgozzuk azt. Nzznk egy programfutsi eredmnyt is:
megnyits
mveletek
lezrs
66
67
metdusa ll
68
69
BufferedInputStream (olvass)
BufferedOutputStream (rs)
PrintStream (rs)
String-szint osztlyok:
BufferedReader (olvass)
PrintWriter (rs)
Szmunkra most a stringek kezelse fontosabb, ezrt nzznk r egy egyszer pldt!
rjunk ki egy sima szveges llomnyba (text.txt) nhny UTF-8-as kdols sort, majd
az llomnyt visszaolvasva jelentsk meg azokat a kpernyn is! rs a PrintWriter
osztly println() metdusval:
70
Figyeljk meg, hogy a BufferedReader osztly nem tud egy fjlt kzvetlenl
megnyitni, hanem csak a FileReader osztly egy pldnyt. Az eredmny meggyz:
71
72
A kimenet utols sort az albbi kiegszts lltja el. A fjl minden tdik karaktert
cserljk le annak kisbets vltozatra, majd jelentsk meg a fjl sszes karaktert!
A betcsert vgrehajt ciklus minden tdik betre pozcionl, majd az ott tallhat
bet kdjhoz 32-t adva ri el, hogy kisbet lesz belle. A kiolvass eltolja az aktulis
pozcit, ezrt szksges visszalpni egyet. A betk kpernyn val megjelentst megelzi a
fjl kezdpozcijba ugrs, majd egy sima (fjlvgjel-figyelses) feldolgoz ciklus kirja a
karaktereket.
73
1. feladat:
Olvassuk be a meccs.txt fjlban tallhat adatokat! Trolsukra kt tmbt fogunk
hasznlni, mivel az adatok egy rsze egsz szmokat, msik rsze szveget tartalmaz.
Alkalmazzuk a tmb a tmbben mdszert, mivel adategysgenknt (az inputfjl egy-egy
sora) 5 szm- s 2 szvegadat trolsrl kell gondoskodnunk. A tmbket statikus
osztlyvltozkknt definiljuk, mivel a ksbbiekben egy sajt metdussal MaxMin()
fogunk hivatkozni rjuk.
74
75
5. feladat:
Az adott csapat ltal ltt s kapott glokat kell sszestve megjelenteni, teht a lekrdezs
szrfelttele a csapat neve. Ne feledjk, hogy egy csapat hazaiknt s vendgknt is
szerepelhet egy mrkzsen, s csak a mrkzsek vgeredmnyt kell sszesteni!
76
sszehasonltsokhoz.
6. feladat:
Feladatunk az adott csapatrl meghatrozni, hogy otthon melyik fordulban kapott ki elszr,
s ki volt a legyzje. Azt is jelezni kell, ha veretlen maradt.
77
78
5.3.10.2. Robot
Msodik feladatunk egy kis robot programozsrl szl. Ngy irnyba tud mozogni az
egybets gtjakat, mint irnyokat jell E, D, K s N parancsok hatsra. Feladataink az
ilyen utastsokbl ll programsorok feldolgozsval kapcsolatosak.
Most is szksgnk van az io s util osztlyokra, valamint egy szmrtk
formzott megjelentse miatt a DecimalFormat osztlyra is:
1. feladat:
Els lpsknt olvassuk be a Program.txt llomnyt! Els sora a programok szmt
tartalmazza, a tbbi sor pedig egy-egy programot. Utbbiakat egy egyszer string tpus P
tmbben troljuk.
2/a. feladat:
Az sszetett feladat egy utastssor szmnak bekrsvel kezddik, majd el kell dntennk
az adott sorrl, hogy egyszersthet-e. Akkor egyszersthet, ha kzvetlenl egyms utn
kt olyan lps van elrva, amelynek eredmnyekppen a robot egy helyben marad (pl. ED,
NK). A krdses betprok megtallshoz a string contains() metdust hasznljuk fel,
amely igaz rtket ad, ha betprok brhol elfordulnak a vizsglt stringben.
79
A c. pont arra kvncsi, hogy hny lps utn kerlnk a kiindulsi ponttl a
legtvolabbra, s ekkor mennyi ez a tvolsg. Utbbi meghatrozshoz a Pitagorasz-ttelt
hasznljuk fel, s az eredmnyt vals szmtpus vltozban troljuk.
80
3. feladat:
A
kis
robot
tevkenysgei
(elinduls,
lps,
irnyvlts)
klnfle
mrtk
81
Figyeljk meg, hogy minden program rendelkezik egy fix energiaignnyel, ami az
indulsbl s a megtett lpsek szmbl addik. Ezeken kvl mr csak az irnyvltsokat
kell figyelni, amit kt szomszdos utasts klnbzsgbl knnyen meghatrozhatunk. Az
utastssor egy-egy elemt a String osztly charAt() metdusval knnyen
meghatrozhatjuk. Mivel mindig az aktulis utasts kdjt hasonltjuk a sorban
kvetkezhz, gy a feldolgoz ciklus csak az utols eltti elemig fut!
4. feladat:
j formtumra kell alaktanunk s egy fjlba kirnunk az utastssorokat. A konverzi
lnyege az, hogy az egyms utn ismtld parancsokat azok szmval jellve rvidtsnk az
utastssoron. Pl. az EEEDKNNNN sorbl lltsuk el a 3EDK4N (hivatalos nevn
futshossz-tmrts) utastssort. Az egyedli utastsokat vltozatlanul kell lerni.
82
5. feladat:
A cl egy j formtum utasts visszaalaktsa a rgi formtumra. A visszakdoland
utastssort a felhasznltl krjk be, amelyet az uts vltozban helyeznk el. Figyelnnk
kell arra is, hogy az ismtldsek szma maximum 200 lehet, azaz akr 3 szmjegybl is
llhat! Ez a krlmny alapveten meghatrozza az talakt algoritmus felptst, ugyanis
az ismtldsszmot ad karaktereket is gyjtennk kell (ism_kar vltoz).
83
viselkedsi jellemzkkel (metdus, mdszer) pl. az aut sebessget vlt, fkez, ill.
az ember beszl, dolgozik
84
Minden osztlynak van legalbb egy konstruktora (neve ugyanaz, mint az osztly),
amelyet ha mgsem hozunk ltre, akkor a Java rendszer megteszi ezt helyettnk. Ez a
konstruktor viszont paramter nlkli lesz, gy a ltrejv objektumnak nem adhatunk
kzvetlenl kezdrtket. Egy osztlynak tbb konstruktora is lehet, amelyek azonban a
paramtereik szma ill. tpusa alapjn megklnbztethetknek kell lennik.
Az adattagok (vltozk) s a metdusok is lehetnek osztly- vagy pldnyszintek.
Pl. az autk szne klnbzik, teht pldnyvltozkban troljuk ket. De ha minden aut 5
sebessges, akkor ezt a jellemzt elg osztlyszinten definilni. Ilyen specilis osztlyszint
vltoz lehet az osztly ppen aktulis objektumpldnyainak szma is.
Azt, hogy egy objektumpldny egy adott osztlynak tagja-e, az instanceof
logikai rtket ad opertorral krdezhetjk le:
(aut1 instanceof Aut)
5.3.11.2. zenet, interfsz, bezrs s lthatsg
Egy Java program objektumai zenetkldssel kommuniklnak egymssal, amely sorn az
egyik egy konkrt feladat elvgzsre kri a msikat. Ez a megszltott objektum egy a
kezdemnyez ltal lthat, elrhet metdusnak meghvst jelenti. Egy objektum azon
metdusainak sszessgt, amelyeken keresztl meghvhat, az objektum interfsznek
nevezzk. Minden objektumnak van interfsze, egybknt nem lenne rtelme a ltezsnek.
Az objektumok tervrajzt ad osztlyok defincijnl gondoskodhatunk arrl, hogy a
majdan ltrejv objektumpldnyok mely adattagjai legyenek lthatk, ill. mely metdusai
s konstruktorai legyenek meghvhatk ms objektumok ltal, valamint melyek legyenek
csak az adott objektum ltal hozzfrhetk. Ezt az eszkzrendszert nevezzk bezrsnak.
A Java nyelvben a bezrsi szinteket n. lthatsgi mdostkkal llthatjuk be. Fajti:
publikus (public)
vdett (protected)
privt (private)
85
Osztly
Csomag
Leszrmazott
sszes osztly
public
protected
mdost nlkli
private
Az els oszlop (Osztly) azt mutatja, hogy maga az osztly elrheti-e az adott
mdostval megjellt adattagjait metdusait. Termszetesen minden esetben igen. A msodik
oszlop azt jelzi, az eredeti osztllyal azonos csomagban lv ms osztlyok (fggetlenl a
szli kapcsolatoktl) elrhetik-e a tagokat. A harmadik oszlop mutatja, hogy az adott osztly
leszrmazottai (fggetlenl attl, hogy mely csomagban vannak) ltjk-e tagokat. A negyedik
oszlopban az sszes tbbi osztly szmra biztostott elrhetsg lthat.
Az interfsz s a bezrs eszkzvel biztosthat az objektumok integritsa, vagyis
adattagjaik ellenrztt krlmnyek kztti megvltoztathatsga.
5.3.11.3. rklds s polimorfizmus
Egy osztly legegyszerbben adattagjainak s metdusainak felsorolsval hozhat ltre.
Azonban az objektum-orientlt paradigma lehetsget ad egy msik, hatkonyabb mdszerre
is, az rkldsre. Az rklds az jrafelhasznlhatsgot szem eltt tartva arra ad
lehetsget, hogy mr meglv (szl-, s-) osztlybl kiindulva hozzunk ltre j (gyermek-,
leszrmazott-, al-) osztlyt. Az rkls kt osztly kztt fennll olyan kapcsolat, amely
sorn a leszrmazott osztly rendelkezik a szl osztly sszes tulajdonsgval (adattagjait s
metdusait sajtjaknt kezeli), s ezeket jabbakkal egsztheti ki. Az gy ltrehozott osztly is
lehet ms osztlyok se, gy ezek az osztlyok egy rklsi hierarchiba szervezdnek. Attl
fggen, hogy egy osztlynak egy- vagy tbb se van, beszlnk egyszeres- ill. tbbszrs
rkldsrl. A Java az egyszeres rkldst tmogatja.
A Java-ban az osztlyhierarchia legfels eleme az Object osztly, amelybl minden
ms osztly (kzvetve vagy kzvetlenl) szrmazik.
86
87
csak
objektumok
egyttmkdsrl,
amely
kzttk
lv
egy
osztly
pldnyostsval
hozhatunk
ltre.
Ha
nem
ll
rendelkezsnkre megfelel osztly, akkor neknk kell definilni egyet. Azaz elszr a
tervrajzot kell elkszteni, majd az alapjn lehet objektumokat ltrehozni.
Az osztlydefinci ltalnos szintaxisa a kvetkez:
Osztly fej:
[mdostk] class <osztly_neve> [extends <szl_osztly_neve>]
[implements <interfszek_neve>]
Osztly trzs:
{
[adattag deklarcik];
[inicializl blokkok];
[konstruktor deklarcik];
[metdus deklarcik];
}
Az osztly fejrsznek mdosti nemcsak hozzfrsi szinteket takarhatnak, hanem
opcionlisan egyb attribtumokat is:
Osztly-fejrsz mdostk:
[hozzfrsi szint]: public | res (csomagszint)
[abstract]: nem pldnyosthat osztly, amely rklds kiindulpontjaknt
hasznlhat; legalbb egy absztrakt metdust tartalmaz osztly ktelez
minstje
[final]: vgleges osztly, metdusai nem mdosthatk, az rklds okafogyott
88
adattagok
deklarcija
az
osztlytrzsben,
brmilyen
konstruktor-
ill.
89
90
metdusokhoz
hasonlan
ha
egy
konstruktorban
olyan
vltoz-
vagy
91
be
this([<aktulis
paramterlista>])
osztlyon
belli
92
Egy konstruktorbl az osztly egy msik konstruktort, ill. a kzvetlen sosztly egy
konstruktort a this() ill. a super() kulcssz alkalmazsval rhetjk el.
5.3.12.5. Metdusok
Az osztlyokhoz tartoz objektumok viselkedst (vagyis az objektumokhoz kldhet
zeneteket) az osztly defincijban felsorolt metdusok hatrozzk meg. A metdus egy
olyan programrutin, amely egy objektum egy konkrt feladatnak algoritmust valstja meg.
A Java nyelvben a metdusoknak kt nagy csoportjt klnbztethetjk meg a
visszatrsi rtkknek megfelelen. Az egyik a visszatrsi rtkkel nem rendelkez
eljrsok, mg a msik az ezzel rendelkez fggvnyek csoportja. Fggvnyek esetn meg
kell adni a visszatrsi rtk tpust, mg a msik csoport esetn a void kulcssz helyettesti
azt.
A metdusdefinci ltalnos szintaxisa a kvetkez:
Metdus fej:
[mdostk] <tpus> <metdus_neve>([formlis paramterlista])
[throws <kivtelnvlista>]
Metdus trzs:
{
[loklis vltoz-deklarcik];
[utastsok];
[return[<kifejezs>]];
}
93
94
95
teljes csomag:
import <csomagnv>.*;
csomagon belli csomag: import <csomagnv>.<bels_csomagnv>.*;
csomag egy osztlya: import <csomagnv>.<Osztlynv>;
Az importl utastsok ktelezen a csomagdeklarcis sor utn kvetkeznek. Egy
utastsban csak egy osztly (vagy a .*-gal egy teljes csomag) importlhat. A Java fordt
minden csomaghoz automatikusan hozzfordtja az alapvet osztlyokat (pl. System,
String) tartalmaz java.lang csomagot, gy ezt nem szksges kln importlni. Az
importls mvelete nem rekurzv, teht egy teljes csomag importlsakor nem lesznek
elrhetk az alcsomagok osztlyainak defincii.
96
5.3.13. RKLDS
5.3.13.1. Az rklds
A 11. leckben mr volt sz az rklds elmleti alapjairl. Ezen eszkz segtsgvel ltez
sosztlybl
szrmaztathatunk
tetszleges
szm
leszrmazott
osztlyt,
annak
j adattag hozzadsval
j metdus hozzadsval
az se, amely a Java osztlyhierarchijnak cscsn ll, s minden Java-beli osztly kzs
se. Ezt kihasznlva olyan ltalnos programokat rhatunk, amelyek nem ktik ki, hogy
milyen osztly objektumokra van szksgk. Pl. implementlhatunk egy ltalnos
felhasznls verem adatszerkezetet, amely brmilyen objektumot tud kezelni. Az Object
osztly az egyetlen kln nem importland csomag, a java.lang csomag rsze.
Ha ltrehozand osztlyunk szmra nem megfelel (pl. tl ltalnos) az Object
osztly, akkor az extends kulcsszt hasznlva ms specifikusabb sosztlybl is
rkltethetjk az j osztlyunkat.
Az rklds deklarcija:
[mdostk] class <utdosztly_neve> extends <sosztly_neve>
[implements <interfszek_neve>];
97
98
Ebben az osztlyban a main metdus ltrehoz egy Macska pldnyt Tni nven,
majd ezt a pldnyt tpuskonverzival tteszi egy llat pldnyba llat (kisbetvel!) nven.
Utbbi pldnyra hvjuk meg mindkt metdust! Az eredmny:
99
Az
o_elrejt()
metdus
szlosztlybl
kerlt
meghvsra,
mg
p_fellr() a leszrmazottbl.
Osztlymetdushoz a futtatrendszer azt a metdust hvja meg, amely a hivatkozs
szerkesztsi idej tpusban van definilva. A pldban az llat pldny szerkesztsi idej
tpusa az llat. gy a futtatrendszer az llat-ban definilt, rejtett metdust hvja meg. A
pldnymetdusnl a futtatrendszer a hivatkozs futsidej tpusban meghatrozott
metdust hvja meg. A pldban az llat pldny futsidej tpusa a Macska, vagyis a
futtatrendszer a Macska osztlyban definilt fellr metdust hvja meg.
Fontos mg tudni, hogy egy pldnymetdus nem tud fellrni egy osztlymetdust, s
egy osztlymetdus nem tud elrejteni egy pldnymetdust.
5.3.13.4. A super() kulcssz hasznlata
Az rklds sorn csak az adattagok s a metdusok kerlnek t a leszrmazott osztlyba, a
konstruktorok nem. Mgis van lehetsg a leszrmazott osztly konstruktorbl az sosztly
egy konstruktort meghvni. Ezt a super() kulcsszval tehetjk meg. A super() egy
hivatkozs az sosztlyra, mkdse hasonl a this() kulcsszhoz. Segtsgvel az
sosztly egy konstruktorra vagy egy felldefinilt metdusra hivatkozhatunk. Ha nem
runk konstruktort, akkor a fordt automatikusan beilleszt egy paramter nlklit, amelynek
els sora a super() konstruktorhivatkozs. Ezrt ha az sosztlyunk nem rendelkezik
paramter nlkli konstruktorral, hibazenetet kapunk. Ilyen esetben rnunk kell egy
konstruktort, amelyben meg kell adnunk, hogy melyik skonstruktort szeretnnk hasznlni, s
milyen paramterekkel.
Az elz lecke Bankbett osztlybl rkltetjk a KamatosBett osztlyt,
majd az j osztlyt bvtjk egy j adattaggal, amely a kamatsszeget trolja:
100
Figyeljk meg a this minst hasznlatt is! A sima kamat azonost a konstruktor
loklis vltozjt jelenti, viszont a this.kamat az j osztly adattagjt hivatkozza.
5.3.13.5. Az Object osztly toString()s equals() metdusa
Van az Object osztlynak kt olyan alapvet metdusa, amelyeket a leszrmazott osztlyok
pldnyain sokszor alkalmazunk. rdemes s hasznos minden j osztly defincija sorn
fellrni ket, hogy a toString() megfelel rtkeket reprezentlhasson, ill. a sajt
ignyeinknek megfelel mdon tudjunk az equals() segtsgvel objektumokat
sszehasonltani, hogy egyenlk-e.
5.3.13.5.1. A toString() metdus
Gyakori eset, hogy tjkoztatst kvnunk kapni egy objektum pillanatnyi llapotrl,
amelyet az adattagjai reprezentlnak. Erre a Java-ban a toString() nvtelen metdus
szolgl. Azonban ez a metdus alapesetben nem azt jelenti meg, amit vrnnk. Nzzk, mi
lesz a System.out.println(b1) utasts eredmnye:
101
102
103
5.3.14. KIVTELKEZELS
5.3.14.1. A Java kivtelkezelse
A Java kivtelkezelsnek clja a programfuts sorn keletkezett hibk kiszrse s megfelel
kezelse. Az ilyen hibkat a Java platformon Exception-nek (kivtelnek) nevezik. Kt f
csoportjuk van: a futsi idben s a nem futsi idben keletkezett kivtelek.
Futsidej kivtelek az aritmetikai (pl. nullval val oszts), az indexelssel
kapcsolatos (pl. tmb nem ltez elemhez val hozzfrs), s a referencival kapcsolatos
(pl. objektumokra val hivatkozs) kivtelek. Ezeket a kivteleket nem ktelez
implementlni, de ersen ajnlott. Nem futsidej kivtelek a Java rendszern kvl
keletkeznek. Ilyenek az I/O mveletek sorn keletkez hibk (pl. a fjl nem tallhat).
Utbbiakat ktelez lekezelni.
A felmerl hibk sokflesgnek kezelst a Java az objektum-orientlt paradigma
lehetsgeinek felhasznlsval oldja meg: a kivteleket osztlyok (ill. objektumaik)
reprezentljk. Minden beptett vagy ltalunk ltrehozott kivtel kzs sosztlya a
Throwable osztly.
Amikor egy metdus futsa sorn valamilyen hiba lp fel (pl. nullval val oszts,
veremtlcsorduls, indexhatr tllpse, vagy a httrtrol megtelik, stb.), akkor egy
kivtelobjektum (egy kivtelosztly pldnya) jn ltre. Ez az objektum olyan informcikat
tartalmaz a kivtel fajtjrl s a program aktulis llapotrl, amelyeket a kivtel
lekezelsekor felhasznlhatunk. A kivtelobjektum ltrehozst s a futtatrendszer ltal
trtn lekezelst kivteldobsnak hvjuk. Ezeket ellenrztt kivteleknek is nevezzk. Az
ellenrztt kivteleket ktelez lekezelni, amit a fordt mr fordtsi idben ellenriz is.
Nzznk egy egyszer pldt a nullval val oszts kivtelkezelsre! Az albbi
program alaphelyzetben semmifle ellenrzst nem vgez az oszt rtkre vonatkozan:
104
105
IndexOutOfBoundsException (indextlcsorduls)
106
107
by
hibazenete. Ebben a pldban a finally gra nincs is igazn szksg, gy ezt elhagyva s
a hibazenetet trva egyszersthet a program.
108
A kimenet is bartsgosabb:
109
110
111
Az eredmny:
112
Insert
113
.
Figyeljk meg, hogy az adattagok nevei nmagukban mint paramterek jelennek meg,
az osztly igazi adattagjaira a this kulcsszval hivatkozhatunk!
2. feladat: rjuk meg az adattagok lekrdez s bellt metdusait!
Ismt hasznlhat a helyi men, ahol a metdusokat a Getter (lekrdez) s a Setter
(bellt) menpontok generljk le.
A ltrejv kdrszletek:
114
4. feladat: Definiljuk fell az equals() metdust gy, hogy kt szmtgp akkor legyen
egyenl, ha a processzoruk neve megegyezik, s a sebessg- s kapacits-paramtereik
pronknt maximum 10%-kal trnek el egymstl!
Ennek a metdusnak is generljuk a vzt, majd a Math osztly abs() metdust
felhasznlva s a kdot jelentsen trva ellltjuk az sszetett felttelt. Az
automatikusan generld hashCode() metdus tdefinilsra most nincs szksg, akr
trlhet is.
Figyeljk meg, hogy null (res) s nem szmtgp objektum esetn nincs
tdefinils!
5. feladat: Egsztsk ki a Szmtgp osztly defincijt gy, hogy az objektumai
processzoruk
sebessge
alapjn
sszehasonlthatk
legyenek!
Implementljuk
115
7. feladat: Egsztsk ki a Notebook osztlyt egy olyan konstruktorral is, amely a RAM
mrett 2048 MB-ra lltja be, a tbbi adattag rtkt pedig paramterek hatrozzk meg!
A Notebook osztly j konstruktorban a ram adattag nem szerepel paramterknt,
mert konkrt rtket kap, amit a super() metdus meghvsakor lltunk be.
116
9. feladat: Ksztsnk egy main nev osztlyt, amely a fprogramot tartalmazza. Hozzunk
ltre kt-kt Szmtgp tpus objektumot az albbi adatokkal, majd rassuk ki ket a
kpernyre!
117
10. feladat: Hozzunk ltre kt Notebook objektumot is! Az els minden adattagjt
paramterknt kapja, a msodik viszont 2048 MB-os memrival jjjn ltre. Adatok:
Notebook nb1: AMD Turion X2, 1.8 GHz, 3072 MB, 250 GB, 3.55 ra
118
119
6. A tovbbfejleszts lehetsgei
A tananyagot mr jelenlegi llapotban is tantsra alkalmasnak vljk, de ez nem jelenti azt,
hogy nyugodtan lhetnk a babrjainkon. A puding prbja az evs! Egyrszt hinyzik egy
teljes tantsi ciklus tapasztalata, amely minden oktatsi anyag hasznlhatsgnak alapvet
mrcje. Olyan krdsekre kell mg keresnnk a vlaszt, hogy j-e a tanegysgek sorrendje,
egyltaln azok tartalma, s a tanulk szmra rthet-e a Java nyelv fogalomrendszere?
Vagy ott van az objektum-orientlt programozsi szemlletmd s annak eszkzrendszere,
amely elgg komplex ahhoz, hogy ne legynk biztosak abban: egy kzpiskolai tanulnak
mindez knnyen megrthet.
gy rezzk, hogy a tesztkrdsek s a gyakorl feladatok kre bvtsre szorul,
jelenlegi mennyisgket rdemes s szksges is nvelni. Hinyzik a tanuli nrtkels s
tanri rtkels rendszere is. A tesztkrdsekre adott vlaszok azonnali kirtkelse
nmagban hasznos, de komplex rtkelsre nem ad mdot.
A tovbbfejleszts msik terlete a mai szmtgpes oktatsi technolgik
ismeretben szinte tlcn knlja magt. Oktatprogramunk j genercij eTananyag
platformra val tltetse minsgi ugrst jelentene. E rendszerekben mr nem a tanr van a
kzpontban, hanem a tanul. A tanuli passzivitst (csak olvass), felvltja az aktivits
(olvass-rs). Ez az j szemlletmd egyni elrehaladst, aktv kzremkdst, gyjt- s
csoportmunkt, valamint a teljestmny egyni mrst s rtkelst is lehetv teszi.
Termszetesen ekkor sem maradhat el a tanri kzremkds, a tanuls folyamatnak
felgyelete elengedhetetlen. A tanulmnyaink sorn megismert Moodle ingyenes virtulis
oktatsi krnyezet ilyen felletet knl. Tananyagunk felptse s webes formja miatt
knnyen tltethet lenne, s a tesztkrdsek is olyan szoftverrel kszltek, amely
kompatibilis a Moodle-lel.
Oktatsi anyagot kszteni nem knny. Magabiztos szakmai felkszltsget,
szintetizl-kpessget, specilis elektronikus krnyezetben hasznlhat mdszertani
ismereteket, az lland tovbbfejlesztshez kitart motivcit, s nem utolssorban sok idt
s munkt ignyel. De a tanulifjsg elrehaladsrt mindezt rdemes felvllalni!
120
7. sszefoglals
Az oktatprogram ksztse sorn a bevezetben emltett clok vezettek bennnket.
Munknkkal egy olyan oktatprogram ksztst cloztuk meg, amely segtsget nyjt a
tanulknak, kollgknak, s a tma irnt rdekldknek a Java programozsi nyelv alapjainak
elsajttshoz, valamint az objektum-orientlt szemlletmd kialaktshoz.
ttanulmnyoztuk a NAT, az informatika kzponti kerettanterve s az emelt szint
informatika rettsgi programozsra vonatkoz elrsait. A kvetelmnyeket szem eltt
tartva lltottuk ssze az elsajttand tananyagot. A tananyag rszekre bontsnl heti
ciklusokban gondolkodunk, heti 4 tantsi ra keretben. A 15 lecke elsajttsa kb. egy
flves, kzs tanr-dik munka eredmnye lehet. A tananyag kszsgszintre trtn emelst
kveten, az emelt szint informatika rettsgin btran llhatnak a dikok a programozsi
feladat elksztse el.
Mind a ketten gyakorl pedaggusok vagyunk, veken t a Pascal ill. a Delphi
programozsi nyelv rejtelmeit prbltuk a dikokkal megszerettetni. Az itt szerzett gyakorlati
tapasztalatainkat is beptettk az oktatprogramba.
A sikeres rettsgi vizsgn tl, a tananyag elsajttsa kell alapot biztost szakirny
tovbbtanuls esetn (pl. mszaki informatikus, mrnk informatikus, informatikatanr, stb.)
az egyetemen, fiskoln oktatott programozs tantrgy sikeres teljestshez. A felsoktatsi
intzmnyekben a C++ programozsi nyelv mellett egyre tbb helyen alkalmazzk
laborgyakorlatokon a Java programozsi nyelvet.
Termszetesen az oktats nem fejezdik be a tantsi rn, szksg van a tanul
otthoni egyni munkjra is. Egy programozsi nyelvet elsajttani csak minl tbb feladat
nll elksztsvel, a programok futtatsval, tesztelsvel lehet. A tananyag elrhet az
interneten, gy a dikok az esetleges lemarads esetn akr otthon is beptolhatjk a
hinyossgokat. A leckk vgn tallhat feladatokat a dikok nllan, otthon ksztik el. A
megoldsok is elrhetk a neten, amennyiben gondjuk akadna a program elksztse sorn,
vagy szeretnk ellenrizni az elgondolsuk helyessgt.
Az oktatprogram lehetv teszi a tananyag egyni tempban trtn elsajttst, a
tesztek segtsgvel elmlyti a megszerzett ismereteket, felhvja a figyelmet a
hinyossgokra. A feladatok elvgzsvel begyakoroljk a dikok a klnbz programozsi
121
hasznlatban.
A program termszetesen magban hordozza a tovbbfejleszts ignyt, melyeket az
elz fejezetben rszleteztnk.
A kvetkez 2010/2011-es tanvben azt tervezzk, hogy az eddig iskolnkban oktatott
Free Pascal ill. Delphi programozsi nyelvet lecserljk, s ttrnk a Java programozsi
nyelv tantsra. Az elksztett oktatprogram segtsgvel fogjuk a dikokat a Java nyelv
rejtelmeibe bevezetni.
122
8. Irodalomjegyzk
[1] Nemzeti Alaptanterv:
http://www.okm.gov.hu/letolt/kozokt/nat_070926.pdf (2010. prilis)
[2] Kerettanterv a gimnzium 9-12. vfolyamra:
http://www.okm.gov.hu/letolt/kozokt/kerettanterv/melleklet1/3_gimnazium/08_inform
atika.rtf (2010. prilis)
[3] Szakkzpiskolai szakmacsoportos alapoz oktats kerettanterve:
https://www.nive.hu/fejlesztes/kerettantervek/Mk28tart/Mk028-2-200.pdf
(2010. prilis)
[4] Az rettsgi vizsga vizsgaszablyzata:
http://net.jogtar.hu/jr/gen/getdoc.cgi?docid=99700100.kor (2010 prilis)
[5] Ksa Mrk: Adatszerkezetek s algoritmusok jegyzet (a verem s a sor):
https://infotech.inf.unideb.hu/honlap/adatszerk?action=AttachFile&do=view&target=a
datszerkezetek-05-20090326.pdf (2010. prilis)
[6] Juhsz Istvn: Programozs 1. jegyzet:
http://www.inf.unideb.hu/~panovics/programozas12009.pdf (2010. prilis)
[7] Juhsz Istvn: Programozs 2. jegyzet:
http://www.inf.unideb.hu/~panovics/Programozas220040330.pdf (2010. prilis)
[8] Debreceni Egyetem, IK: Programozs 1. s 2. kurzusok rai jegyzetei
[9] Java 6 online dokumentci: http://java.sun.com/javase/6/docs/api/ (2010. prilis)
[10] Java vizsgafeladat-sorok:
http://www.inf.unideb.hu/~panovics/beugrok.pdf (2010. prilis)
[11] Java Basics: http://leepoint.net/JavaBasics/index.html (2010. prilis)
[12] Java Programming Notes: http://leepoint.net/notes-java/index.html (2010. prilis)
[13] Nagy Gusztv: Java programozs v1.3 (Creative Commons licence):
http://nagygusztav.hu/sites/default/files/Java_programozas_1.3_0.pdf (2010. prilis)
[14] Angster Erzsbet: Objektum-orientlt tervezs s programozs, Java els ktet
4KR Bt., 2003
[15] Ills Lajosn: Szmtgpek a pedaggiban, Tanknyvkiad, Budapest, 1972
[16] Mricz Attila: Java programozsi nyelv, Alapismeretek, LSI Oktatkzpont, 1997
123
9. Fggelk
9.1. Feladatok
1.1. Tltsd le, teleptsd, s ismerkedjl a fejlesztkrnyezettel!
2.1. Jelentsd meg a konzolon a Holnap j leszek! szveget!
2.2. Rajzolj egy vzszintes vonalat a konzolra!
2.3. Mi lesz a kvetkez program outputja?
124
4.3. Kszts programot, amely 10-tl 20-ig generl kt vletlen egsz szmot! Majd kirja a
kt szm sszegt, valamint szorzatt.
4.4. A kvetkez sorok kzl melyik fog hiba nlkl lefordulni?
a) byte a=256;
b) int i=10,
c) char c="a";
d) double d=1.33;
4.5. Kszts programot, ami ha megadunk kt nem negatv szmot sztring formtumban,
akkor a kisebbik ngyzetgykt kirja a kpernyre.
5.1. Kszts programot, amely az Indul a grg aludni sztring tartalmt megfordtja s
kirja!
5.2. Kszts programot, amely kt adott sztringet megjelent, az egyiket kisbets, a msikat
nagybets formban! A msodik sztringben tallhat sszes 'e' karaktert kicserli az els
sztring msodik karaktervel.
5.3. Mi lesz a kvetkez program outputja:
125
6.2. Kszts programot, amely bekr kt szmot s kirja, hogy melyik a nagyobb illetve ha
egyenlk, akkor azt.
6.3. Kszts programot, ami generl kt vletlen egsz szmot [0; 100] intervallumban. A
nagyobbik szmbl vonja ki a kisebbet, s rja ki a vgeredmnyt.
6.4. Kszts programot, ami egy szmformtumban megadott rdemjegyet szvegesen jelent
meg! Az rdemjegyet a billentyzeten kell bevinni! (pl. 1 = elgtelen; 2 = elgsges; stb.)
6.5. Kszts programot, ami bekri egy bankbett sszegt, valamint azt, hogy hny hnapig
lesz lektve az sszeg. Majd megjelenti, hogy mennyi lesz a bett sszege a lekts
vgn, ha a kamat vi 12%!
7.1. Kszts programot, amely egyms al hsszor kirja a J napot kvnok! szveget!
7.2. Kszts programot, amely 1-tl 10-ig kirja egymsmell, vesszvel elvlasztva a szmok
ngyzett!
7.3. rjl programot, ami 50 db kockadobst szimull, s kirja a dobsokat egyms mell,
szkzzel elvlasztva!
7.4. rjuk ki az 1-200 kztti szmok kzl azokat az 5-tel oszthatakat, amelyek nem
oszthatk 25-tel!
7.5. Krd be n rtkt s ksztsd el az albbi n soros hromszget!
1
1 2
1 2 3
...
1 2 3 n
8.1. rjl programot, amely a kvetkez tartalm tmbt hozza ltre, majd ki is rja a
kpernyre!
0
3
0
1
4
0
2
4
0
8.2. Kszts programot, amely egy 20 elem tmbt feltlt 'a' karakterekkel, majd a tmb
minden 2. elemt kicserli 'b' karakterre, majd kirja egymsmell az elemeket, szkzzel
elvlasztva!
8.3. Kszts programot, amely feltlt 1-tl 10-ig vletlen vals szmokkal egy 6x6-os tmbt,
majd megjelenti a tmb tartalmt! rja ki a program a szmok tlagt is!
8.4. rjl programot, amely az 5x5-s egysgmtrixot hozza ltre! (Az egysgmtrixban a
ftlbeli elemek 1-t, mg az ezen kvli elemek 0-t tartalmaznak.)
126
Minta:
8.5. Kszts programot, amely bekr a billentyzetrl 5 db szmot s elhelyezi egy megfelel
tmbben! A program rja is ki a tmb tartalmt a kpernyre, valamint jelenjen meg
kln a legkisebb szm is.
9.1. Krjnk be kt egsz szmot a billentyzetrl, s rjuk ki a kpernyre a szorzatukat!
9.2. A FileWriter s a FileReader osztlyok segtsgvel rjuk ki az abc.txt fljba
az angol abc kisbetit! Utna olvassuk be a fjlt, s az abc-t nagybetsre alaktva
rjuk ki a kpernyre!
9.3. A PrintWriter s a BufferedReader osztlyokat felhasznlva rjuk ki a ht
napjait soronknt a napok.txt szveges fjlba! Ezutn olvassuk be a fjlt, s a napokat
egy sorban, vesszvel elvlasztva jelentsk meg a kpernyn!
9.4. A RandomAccessFile osztly metdusai segtsgvel cserljk le az abc.txt fjl
minden 3. betjt nagybetsre, majd a teljes fjlt rjuk ki a kpernyre!
10.1. Jelentsk meg a kpernyn vesszvel elvlasztva a Fibonacci szmok els 20 elemt
ciklussal s a 21-30. elemt rekurzival! (A Fibonacci-szmok els kt eleme a 0 s az
1, a kvetkez elemek pedig az elz elemek sszege, teht 0, 1, 1, 2, 3, 5, 8, ...)
10.2. Ksztsk el a Vigenere tblt! Ez a 26*26-os tbla az angol abc betit tartalmazza a
kvetkez elrendezsben:
127
11.2. Hozzunk ltre az osztlyunkhoz egy olyan paramteres konstruktort, amely segtsgvel
a pldnyosts sorn minden adattagnak kezdrtket adhatunk!
11.3. Pldnyostsuk az elz osztlyunkat! Hozzuk ltre az albbi objektumokat, majd a
megadott kdrszletet beszrva rassuk ki ket a kpernyre!
Kovcs Pter, 1966, igazgat, 500000, nem
Nagy rpd, 1954, ports, 100000, igen
Kiss P. Eszter, 1980, felad, 250000, nem
Beszrand kdrszlet:
128
129
Pda p1: Samsung, 0.4 GHz, 512 MB, 64 GB, 3 ra, 125 g
130
>1
>=1024
>=120
>=3
>0.3
>=128
>=16
>=2.5
<150
131
9.2. Fogalomtr
Absztrakt osztly: Olyan osztly, amely nem pldnyosthat, mert van olyan metdusa,
amely nincs az adott osztlyban implementlva. Az implementls szrmaztats utn a
utdosztlyban trtnik meg.
Adatmez: Lsd adattag!
Adattag (attribtum, adatmez): Az osztlydefinci rsze, az osztly objektumainak
(pldnyainak) egyedi jellemzit, tulajdonsgait trol adattpus. Lehetnek pldnyszintek s
osztlyszintek is.
Aktulis paramterlista: Kifejezsek vesszvel elltott felsorolsa. Paramtertadsnl az
aktulis paramterek tpusnak rendre teht megfelel sorrendben, pronknt meg kell
egyeznie a formlis paramterlistban megadottakkal.
Attribtum: Lsd adattag!
Destruktor: A konstruktor ltal lefoglalt erforrsok felszabadtst vgzi. A Java-ban
automatikusan is megtrtnik, ha egy objektumra minden hivatkozs megsznik.
Dinamikus (ksi) kts: A hvott metdus futsidej hozzrendelse az objektumhoz.
Egysgbezrs: Adattagok s metdusok osztlyba trtn sszezrst jelenti. Egy
objektum (pldny) llapott (adattagjait) csak metdusai ltal mdosthatjuk.
Eljrs: Olyan metdus, amelynek nincs visszatrsi rtke.
Formlis paramterlista: Tpusokbl s szintaktikailag loklis vltoznak minsl
adattagokbl ll prosok, amelyek az aktulis paramterlista felptst meghatrozzk.
Fggvny: Olyan metdus, amelynek van visszatrsi rtke.
Kivtelkezels: A program futsa sorn keletkez hibk kiszrst megvalst olyan
programszerkezet, amelyben a tevkenysgeket vgz programkd hatrozottan elklnl az
azokban elfordul hibk lekezelst vgz programkdtl.
Konstruktor: Egy osztly olyan specilis metdusa, amely a pldnyostst vgzi. Egy
osztlynak tbb szigoran azonos nev konstruktora is lehet.
Metdus (mdszer): Az osztlydefinci rsze, az osztly objektumainak viselkedst ler
programrutin. Lsd mg osztlyszint metdus!
Metdus fellrsa: Azonos nev, de klnbz formlis paramterlistval rendelkez
metdusok. Dinamikus ktssel jn ltre.
Metdus tlterhelse: Azonos nev, de klnbz formlis paramterlistval rendelkez
metdusok. Statikus ktssel jn ltre.
Mdszer: Lsd metdus!
132
Objektum: Olyan programozsi eszkz, amelynek neve, adattagjai ltal reprezentlt llapota,
s metdusaival jellemzett viselkedse van. Egy osztly konstruktor ltali pldnyostsa
sorn jn ltre.
Objektum-orientlt programozs: Olyan programozsi paradigma, amely a programot
objektumokbl pti fel. Az objektumok viselkedse adja a program mkdst.
Osztly: Olyan felhasznli tpus (tervrajz), amely alapjn objektumok (pldnyok) hozhatk
ltre. Legfontosabb rszei a neve, adattagjainak s metdusainak defincija.
Osztlyszint adattag: Olyan adattag, amely egy osztlyon bell csak egyszer ltezik, s
maghoz az osztlyhoz kapcsoldik. Lsd mg pldnyszint adattag!
Osztlyszint metdus: Olyan metdus, amely kzvetlenl az osztlyhoz kapcsoldik, nem
pedig a pldnyokhoz. Az osztlymetdust az objektumok kzsen hasznlhatjk.
Osztlyvltoz: Lsd osztlyszint adattag!
rklds: Az jrafelhasznls eszkze. Leszrmazott (gyermek-, al-) osztly ltrehozsa
mr meglv (szl-, s-) osztlybl, amely sorn a leszrazott osztly rkli az sosztly
adattagjait s metdusait.
Paradigma: Szemlet- s gondolkodsmd, egy tudomnyos kzssg tagjai ltal elfogadott
rtkek s mdszerek sszessge.
Pldny: Lsd objektum!
Pldnyosts: Egy osztly objektumnak ellltsa konstruktor segtsgvel.
Pldnyszint adattag: Olyan adattag, amely egy osztly minden pldnyban egyedileg
ltezik, teht a pldnyhoz kapcsoldik. Lsd mg osztlyszint adattag!
Pldnyvltoz: Lsd adattag, pldnyszint adattag!
Polimorfizmus: Egyrszt jelenti a metdusok fellrst (dinamikus polimorfizmus,
jraimplementls), amely sorn egy leszrmazott osztlyban fellrjuk (mdostjuk) az
sosztly egy metdust, msrszt jelenti a metdusok tlterhelst (statikus polimorfizmus,
tbbalaksg), amikor egy osztlyon bell ugyanolyan nven tbb metdus is ltezik, s csak
formlis paramterlistjuk alapjn klnbztethetk meg. Statikus polimorfizmust valstanak
meg az osztlyok konstruktorai is.
Statikus (korai) kts: A hvott metdus fordtsidej hozzrendelse az objektumhoz.
zenet: Egy objektum metdusnak msik objektum ltal trtn meghvst jelenti. A
megszltott objektum a krs vgrehajtsval vlaszol az zenetre.
Vgleges osztly: Olyan osztly, amelynek metdusai nem definilhatk fell, gy az
rkltetsk sem valsthat meg.
133
10. Ksznetnyilvnts
Ksznetet mondunk mindazoknak, akik munknkat segtettk, s tancsokkal lttak el
bennnket.
Ksznjk csaldtagjainknak mindazt a megrtst s trelmet, amit a dolgozat
ksztse sorn tanstottak.
134