Professional Documents
Culture Documents
Szoftverfejlesztes Kezirat PDF
Szoftverfejlesztes Kezirat PDF
4
1.1 A forrskd feldolgozsa ............................................................................... 4
1.2 Fordtk .......................................................................................................... 4
1.2.1 rtelmezk (interpreter):............................................................................. 4
1.2.2 Kztes nyelvek (intermediate languages) .................................................. 5
1.2.3 Kztes rendszerek a gyakorlatban: Java s .NET ...................................... 5
1.3 Az Objektumorientlt programozs (OOP) elve............................................ 7
2 A Visual Studio 2005. fejlsztkrnyezet................................................................ 9
2.1 A Visual Studio 2005. letltse s teleptse ................................................. 9
2.1.1 Letlts ....................................................................................................... 9
2.1.2 Telepts ..................................................................................................... 9
2.2 A Visual Studio 2005. fejlesztkrnyezet hasznlata .................................. 10
2.2.1 j projekt ltrehozsa............................................................................... 10
2.2.2 Az rlapszerkeszt s a toolbox ............................................................... 11
2.2.3 A Properites ablak .................................................................................... 11
2.2.4 Kdszerkeszt .......................................................................................... 13
2.2.5 Trspontok s nyomkvets ................................................................... 14
2.3 Alapvet komponensek hasznlata s specilis vezrlk ............................ 15
2.3.1 A gomb (Button) ...................................................................................... 18
2.3.2 Szvegdoboz (TextBox)........................................................................... 18
2.3.3 Jellngyzet (CheckBox) ....................................................................... 18
2.3.4 Rdigomb (RadioButton) ....................................................................... 19
2.3.5 Legrdl doboz (ComboBox) ................................................................ 19
2.3.6 Jellngyzet lista .................................................................................... 20
2.3.7 Listadoboz (ListBox)................................................................................ 20
2.3.8 Men pts a ToolStrip komponenssel ................................................... 21
2.3.9 Trolk (Containers) ................................................................................ 22
2.3.10 Fjlkezel prbeszdablakok (FileOpenDialog, FileSaveDialog) ......... 23
2.3.11 Idzt (Timer) ....................................................................................... 24
3 Nyelvi elemek (kulcsszavak, vltozk, literlok, konstansok, nvterek)............. 26
3.1 Kulcsszavak.................................................................................................. 26
3.2 Vltozk, azonostk.................................................................................... 26
3.3 Literlok, konstansok ................................................................................... 28
3.3.1 Szm literlok........................................................................................... 28
3.3.2 Logikai literlok ....................................................................................... 29
3.3.3 Karakter, karakterlnc literlok................................................................ 29
3.3.4 Konstansok ............................................................................................... 29
3.4 Nvterek ....................................................................................................... 29
3.5 A kifejezsek ................................................................................................ 31
3.6 Mveletek (operandusok, opertorok) ......................................................... 32
3.6.1 rtkad mveletek.................................................................................. 32
3.6.2 Matematikai mveletek ............................................................................ 33
3.6.3 sszetett matematikai mveletek............................................................. 33
3.6.4 Egyoperandus mvelet ........................................................................... 34
3.6.5 Ktoperandus mveletek ........................................................................ 34
3.6.6 Hromoperandus mvelet ...................................................................... 34
4 Feltteles utastsok - szelekci ........................................................................... 35
4.1 Relcis opertorok...................................................................................... 35
4.2 Feltteles mveletek..................................................................................... 35
4.3 Feltteles utastsok...................................................................................... 37
-1-
4.3.1 Egyg szelekci...................................................................................... 37
4.3.2 Ktg szelekci ...................................................................................... 37
4.3.3 Tbbg szelekci.................................................................................... 38
4.4 Plda: Feltteles elgazsokat tartalmaz alkalmazs ksztse .................. 39
5 Stringek kezelse.................................................................................................. 42
5.1 Deklarls..................................................................................................... 42
5.2 A string-ek fontosabb metdusai .............................................................. 42
5.2.1 A string-ek mint vektorok..................................................................... 44
5.3 Plda: String mveletek gyakorlsa ............................................................. 45
6 Iterci.................................................................................................................. 49
6.1 Elrt lpsszm ciklusok........................................................................... 49
6.2 Feltteles ciklusok ........................................................................................ 50
6.3 Plda: Prmszm vizsglat............................................................................ 54
7 Sajt metdusok ltrehozsa ................................................................................ 56
7.1 Plda: Kt szm legnagyobb kzs osztjnak a meghatrozsa ................ 56
8 Objektumosztlyok s objektumok ltrehozsa ................................................... 59
8.1 A programok szerkezete (osztly, adattag, metdus)................................... 59
8.1.1 A program sszetevi............................................................................... 59
8.1.2 Az osztly deklarlsa.............................................................................. 59
8.1.3 Adattagok deklarlsa .............................................................................. 59
8.1.4 Metdusok deklarlsa............................................................................. 60
8.1.5 Metdusok paramterezse ...................................................................... 61
8.1.6 Adatok s metdusok lthatsga ............................................................ 62
8.1.7 A property-k ............................................................................................. 63
9 Grafika.................................................................................................................. 65
9.1 A Graphics osztly ....................................................................................... 65
9.2 A sznek (Color) ........................................................................................... 66
9.3 A toll (Pen) ................................................................................................... 66
9.4 Az ecset (Brush) ........................................................................................... 67
9.4.1 Mints ecset s toll (TexturedPen) ........................................................... 67
9.5 Szveg rajzolsa........................................................................................... 68
9.6 lland grafikk ltrehozsa az rlapon...................................................... 68
10 Tbbablakos alkalmazsok ksztse ................................................................... 70
10.1 zenetablakok.............................................................................................. 70
10.2 Plda: Ktablakos alkalmazs ...................................................................... 72
11 Kivtelkezels ...................................................................................................... 76
11.1 Hibakezels .................................................................................................. 76
11.2 A try s catch................................................................................................ 76
11.3 A finally blokk ............................................................................................. 78
11.4 Kivtelek feldobsa ...................................................................................... 78
11.5 Checked s unkchecked ............................................................................... 79
11.6 Plda: Hibakezels a msodfok egyismeretlenes egyenlet kapcsn........... 80
12 llomnykezels .................................................................................................. 83
12.1 Szveges llomnyok kezelse .................................................................... 83
12.1.1 Szveges s binris fjlok rsa, bvtse, olvassa ............................... 83
12.1.2 Binris fjlok rsa, olvassa .................................................................. 84
12.2 Plda: Vletlen szmok generlsa lottszmokhoz, szvegfjlba.............. 86
12.3 Knyvtrkezelsi utastsok......................................................................... 88
12.3.1 Knyvtr mveletek ............................................................................... 88
12.3.2 Plda: Knyvtr mveletek hasznlata................................................... 89
-2-
12.3.3 llomnymveletek ............................................................................... 91
13 XML alapok s XML fjlok kezelse .................................................................. 94
13.1 Az XML nyelv ............................................................................................. 94
13.1.1 Az XML dokumentum szintaktikja ...................................................... 95
13.1.2 Az XML dokumentum rvnyessge ..................................................... 96
13.1.3 Az XML elnyei..................................................................................... 96
13.2 XML fjlok feldolgozsa C# krnyezetben ................................................. 97
13.2.1 XML fjl betltse.................................................................................. 97
13.2.2 A fa gai, mveletek node-okkal............................................................ 97
13.2.3 j node beszrsa s a fjl mentse. ...................................................... 98
13.2.4 Node trlse a fbl................................................................................ 98
13.3 Plda XML fjl feldolgozsra .................................................................... 99
14 Az UML nyelv s fontosabb diagramtpusai...................................................... 104
14.1 Hasznlati esetek ........................................................................................ 108
14.2 Tevkenysgdiagram.................................................................................. 112
14.3 Objektumok s osztlyok ........................................................................... 113
14.3.1 Kapcsolatok .......................................................................................... 115
14.3.2 Szekvenciadiagram............................................................................... 122
14.3.3 Kommunikcidiagram ........................................................................ 124
15 Az alkalmazsfejleszts folyamata, szoftver-letciklus modellek ..................... 128
15.1 A rendszerfejleszts folyamatmodelljei ..................................................... 133
15.1.1 A vzess modell .................................................................................. 134
15.1.2 A V modell ........................................................................................... 136
15.1.3 Prototpusok alkalmazsa ..................................................................... 137
15.1.4 A spirl modell ..................................................................................... 140
16 Fggelk ............................................................................................................. 148
16.1 A C# kulcsszavai........................................................................................ 148
-3-
1 Alkalmazsfejleszts s a C#
1.2 Fordtk
Az adott nyelven (forrsnyelv) megrt programot egy fordtprogram (compiler) lefordtja egy
msik nyelvre, a clnyelvre. A clnyelvi program futtatshoz ezutn sem a forrsnyelv
programra, sem a fordtprogramra nincs szksg. A clnyelv ltalban a processzor gpi
nyelve.
Elny:
gyorsan fut programot ad
A fordts egyirny utca, azaz a lefordtott programbl nem llthat vissza a
forrskd. Hiba tesszk kzz a lefordtott programot, az a forrskd nlkl
gyakorlatilag nem mdosthat.
Htrnyok:
A lefordtott program nem hordozhat nem futtathat ms processzoron illetve ms
opercis rendszer alatt.
A forrsnyelven megrt programot ebben az esetben nem fordtjuk le. A program futtatshoz
egy interpreter (rtelmezprogram) szksges, mely utastsonknt olvassa, majd rtelmezi a
forrsnyelven megrt programot. Az rtelmezett utastst azonnal vgre is hajtja, majd
megkeresi a vgrehajtsban kvetkez utastst.
Elnyk:
Ha ms opercis rendszerre, illetve ms processzorra is ltezik rtelmez,
programunkat ott is futtathatjuk. (Megvalsul a platformfggetlensg elve.)
Ha a program, futs kzben hibval lell, a futtats a hiba kijavtsa utn folytathat.
Htrnyok:
-4-
rtelmezvel a futtats lnyegesen lassabb, mint ha fordtt hasznlnnk, hiszen
minden utastst futtats kzben rtelmeznk. Minden utastst minden egyes
vgrehajtsnl rtelmezni kell.
Ha programunkat kzz tesszk, a forrskdot tesszk kzz, gy azt msok is fel
tudjk hasznlni.
1. Egy fordtprogram a forrskdot egy kztes nyelvre fordtja le. A kztes nyelvre
lefordtott programot tesszk kzz.
2. A kztes nyelvre lefordtott programot egy rtelmez program hajtja vgre
lpsenknt.
A kztes nyelvre lefordtott program futtatshoz szksg van a futtat krnyezetre, vagyis az
rtelmez programra.
Elnyk:
Megvalsthat a platformfggetlensg. Amelyik rendszerhez ltezik futtat
krnyezet, kpes futtatni a kztes nyelvre lefordtott programot.
Ha programunknak a kztes nyelvre fordtott kdjt tesszk kzz, megrizhetjk a
forrskdot.
Htrnyok:
Sajnos a platformfggetlensgrt nagy rat kell fizetnnk. A kztes nyelvre lefordtott
program futtatsa jelentsen lassbb, mint a gpi kdra fordtott program futtatsa.
Az opercis rendszerek ltalban nem tartalmazzk a szksges futtatkrnyezetet,
ezrt azt kln kell telepteni.
Java
A Java technolgit a Sun Microsystems fejlsztette ki. A cl egy olyan rendszer megalkotsa
volt, melyre rvnyes az, hogy az al kszlt programok brmely krnyezetben platform-
fggetlenl futtathatk.
-5-
A Java fordt a forrskdot egy kztes nyelvre, az gynevezett byte-kd-ra fordtja, melyet
egy kpzeletbeli szmtgp, a Java Virtual Machine tud futtatni. A kpzeletbeli Java gpet
emull programnak, a Java Runtime Enviroment-nek jelen kell lennie gpnkn a Java
alkalmazsok futtatshoz.
.NET framework
A .NET keretrendszer (framework) szintn kztes nyelv hasznlatn alapul. A .NET rendszer
kztes nyelvt CIL-nek hvjk (Common Intermediate Language), melyet a CLR (Common
Language Runtime) nvre keresztelt virtulis gp kpes futtatni.
A .NET programok futtatshoz szksges krnyezet 2-es verzija 2005 oktberben jelent
meg, gy nem rsze a Windows teleptkszleteknek. A 22.5 MB-os teleptkszlet
ingyenesen letlthet a Microsoft honlapjrl. A .NET framework-nek ltezik egy compact
vltozata is, mely mobil eszkzkn teszi lehetv alkalmazsaink futtatst.
A .NET technolgia a Microsoft Java verzijbl alakult ki. A kt technolgia kzti egyik
alapvet klnbsg, hogy Java krnyezethez csak Java nyelven rhatunk programokat, .NET
krnyezet al tbb fle nyelbl ltezik fordt.
Common
Intermediate
Language
.NET
framework
-6-
1.3 Az Objektumorientlt programozs (OOP) elve
Az osztlynak lehetnek:
Adattagjai (data members-s), melyek lerjk az adott osztly
tulajdonsgait.
Metdusai (methods), melyek meghatrozzk az osztly viselkesst.
-7-
private : Az osztly pldnyai s az osztlybl szrmaztatott osztlyok
nem frhetnek hozz az itt felsorolt tulajdonsgokhoz, illetve
metdusokhoz.
protected : Az ide soroltakhoz a szrmaztatott osztlyok hozzfrnek, de a
konkrt objektumok nem.
public: Ezekhez a tulajdonsgokhoz s metdusokhoz mindenki
hozzfrhet.
-8-
2 A Visual Studio 2005. fejlsztkrnyezet
2.1.1 Letlts
http://www.tisztaszoftver.hu/
2.1.2 Telepts
Sajnos a Visual Studio 2005 teleptprogramjba hiba kerlt. Az els CD teleptse kzben a
gp egy rejtlyes ENU 1 nev CD-t kr - ilyen lemez nincs a teleptkszletben. A hibt az
okozza, hogy az _15780_RTL_x86_enu_NETCF_v2.0.cab fjlt a telept az els CD-n
keresi, pedig a msodik CD-n van. A sikeres teleptshez egy apr trkkt kell alkalmaznunk:
-9-
2.2 A Visual Studio 2005. fejlesztkrnyezet hasznlata
Forrskd szerkeszt
Grafikus felhasznli fellet tervez
Fordt vagy rtelmez program
Debugger (Hibakeres)
A fejlesztkrnyezet hasznlatt egy klasszikus pldn keresztl mutatjuk be: ksztnk egy
programot, mely gombnyomsra megjelenti a Hello feliratot egy szvegdobozban.
1. Indtsuk el a fejlesztkrnyezetet!
2. A Recent projects ablakban vlasszuk a Create Project lehetsget. Ksbb innen
tudjuk megnyitni a mr ltez projekteket.
3. A Visual Studio ltal tmogatott programozsi nyelvek kzl vlasszuk a C#-ot, a
felknlt sablonok (templates) kzl a Windows Application-t! Nevezzk el a
projektet s lltsuk be a ments helyt. A Windows Application sablon
vlasztsval olyan projektet hozunk ltre, mely mr tartalmaz egy ablakot.
- 10 -
2.2.2 Az rlapszerkeszt s a toolbox
A toolbox-ot az ablak bal oldaln tallhat flre kattintva nyithatjuk fel. Ha szeretnnk az
ablakba dokkolni, kattintsunk az ablakfejlc gombost ikonjra ( )!
- 11 -
Tulajdonsgok (properties) belltsa
Gyakorlat:
- 12 -
6. Vlasszuk ki a szvegdobozt s nevezzk el Szoveg-nek!
Esemnyek (events)
Gyakorlat:
2.2.4 Kdszerkeszt
- 13 -
nem dolgozunk. Az sszetartoz kdrszleteket vonal kti ssze, mely segt az
eligazodsban.
Auto Code Formating (Automatikus kdformzs): Az egymsba gyazott
programstruktrkat automatikusan egyms al igaztja. (Edit / Advanced / Format
document )
Gyakorlat:
Szoveg.Text = "Hello";
- 14 -
Vltozk rtknek kvetse:
Egy gyakorlott programoz tudsnak egyre kisebb rszt teszi ki a programozsi nyelv
ismerete. Egyre nagyobb slyt kap a fejleszteszkz ltal knlt, elre elksztett
komponensek ismerete. Jegyzetnk nem referenciaknyv, nem tartalmazhatja az sszes
- 15 -
komponens lerst. Egy ilyen kiadvny terjedelme tbb-ezer oldal lenne, ami egyrszt
megfizethetetlen, msrszt kezelhetetlen. A mostani fejlesztkrnyezetek referenciaknyvei
mr csak elektronikus formban rhetk el.
- 16 -
Text A vezrlhz rendelt szveg
TextAllign A szveg helyzett lltja a vezrln bell.
Font A vezrl szvegnek bettpusa.
ForeColor A vezrl eltrsznt lltja.
BackColor A vezrl httrsznt lltja.
Cursor Az egrkurzor alakja a vezrl felett.
AutoSize A vezrl mrett automatikusan gy
lltja be, hogy a vezrl szvege elfrjen.
UseMnemonic Mnemonic-ok (emlkeztetk)
hasznlatnak engedlyezse.
Menmonic:
Ha gombok vagy menpontok feliratban
& karaktert helyeznk el, az &
karakter utni bet alhzva jelenik meg.
Az alhzott bet Alt billentyvel egytt
letve kattints esemnyt vlt ki.
Pl: &Ok -> Ok
Esemnyek
Click Kattintskor kvetkezik be. A kattints
trtnhet egrrel, vagy bizonyos
vezrlknl az Enter billentyvel.
TextChanged Akkor kvetkezik be, ha a vezrl Text
tulajdonsga (szvege) megvltozik.
Enter Akkor kvetkezik be, amikor a vezrl
megkapja a fkuszt. (Kivlasztjuk egrrel
vagy a Tab billentyvel)
Leave Akkor kvetkezik be, ha a vezrl elveszti
a fkuszt.
MouseClick Egrkattintskor kvetkezik be.
MouseDown Akkor kvetkezik be, ha a komponens
fltt lenyomjuk az egrgombot.
MouseUp Akkor kvetkezik be, ha a komponens
fltt felengedjk az egrgombot.
MouseEnter Akkor kvetkezik be, amikor az egr a
komponens lthat rsze fl r.
MouseLeave Akkor kvetkezik be, amikor az egr
elhagyja a komponens lthat rszt.
MouseMove A komponens fltt megmozdul egr
vltja ki.
MouseHover Akkor kvetkezik be, amikor az egr mr
- 17 -
eltlttt egy bizonyos idt a komponens
fltt.
Tulajdonsgok (Properties)
Text A gomb felirata.
Image A gombon lev kp.
ImageAlign A kp elhelyezkedse a gombon bell.
Esemnyek (Events)
Click A gomb megnyomsakor kvetkezik be.
Tulajdonsgok (Properties)
Text A szvegdoboz szvege ezen a
tulajdonsgon keresztl llthat be s
olvashat ki.
Multiline Ha rtke igaz, a szvegdobozba tbb
sornyi szveget is rhatunk.
UseSystemPasswordChar Ha rtke igaz (true), a begpelt szveg
helyn egy meghatrozott karakter jelenik
meg, gy a jelszavakat nem lehet leolvasni
a kpernyrl.
Esemnyek (Events)
TextChanged Akkor kvetkezik be, ha a szvegdoboz
szvege megvltozik.
Tulajdonsgok (Properties)
- 18 -
Checked Jelzi, hogy a doboz bejellt llapotban van-
e.
CheckedState A jellngyzet hrom llapotban lehet:
- bejellt (checked)
- jelletlen (unchecked)
- kztes (intermediate)
Esemnyek (Events)
CheckStateChanged Jelzi, ha a jellngyzet llapota
megvltozott
Tulajdonsgok (Properties)
Checked Jelzi, hogy a gomb benyomott llapotban
van-e.
Esemnyek (Events)
CheckedChanged Jelzi, hogy a gomb llapota megvltozott.
Tulajdonsgok (Properties)
Items Az items gyjtemny tartalmazza a
lerdl lista elemeit.
Sorted Jelli, hogy a lista elemei abc sorrendben
jelenjenek-e meg.
Esemnyek (Events)
TextUpdate Akkor kvetkezik be, ha a legrdl lista
szvege megvltozik.
SelectedIndexChanged Akkor kvetkezik be, ha a kivlasztott
elem sorszma megvltozik.
- 19 -
A legrdl doboz elemeinek feltltse trtnhet programbl is:
comboBox1.Items.Add("Els elem");
comboBox1.Items.Add("Msodik elem");
comboBox1.Items.Add("Harmadik elem");
Tulajdonsgok (Properties)
Items Az items gyjtemny tartalmazza a
lerdl lista elemeit.
CheckedItems Ez a gyjtemny tartalmazza azokat az
elemeket, melyeket a felhasznl
kivlasztott.
Sorted Jelli, hogy a lista elemei abc sorrendben
jelenjenek-e meg.
Esemnyek (Events)
SelectedIndexChanged Akkor kvetkezik be, ha a kivlasztott
elem sorszma megvltozik.
- 20 -
Tulajdonsgok (Properties)
Nodes (collection) A nodes gyjtemny tartalmazza a fa
elemeit.
CheckBoxes Ha rkt igaz-ra lltjuk, a fa minden
eleme eltt jellngyzet jelenik meg.
FullPath Terveznzetben nem elrhet tulajdonsg.
A felhasznl ltal kivlasztott elemek
tvonalt adja vissza a fban.
Esemnyek (Events)
AfterCheck Akkor kvetkezik be, ha egy jellngyzet
llapott megvltoztatja a felhasznl
- 21 -
2.3.9 Trolk (Containers)
2.3.9.2 Panel
- 22 -
A panel vezrlre is helyezhetnk tovbbi vezrlket. Ha ezek tlnylnak a panel terletn
grgetsvok jelennek meg a panel szlein. Nagymret kpek megjelentshez is
hasznlhatunk panelt: Helyezzk a kpet (PictureBox) a panelbe. Ha a kp nem fr be a panel
terletre, a megjelen grgetsvok segtsgvel mozgathatjuk.
Tulajdonsgok (Properties)
BorderStyle A kt panel keretnek stlusa.
Orientation rtke lehet horizontal vagy vertical. A
paneleket elvlaszt sv irnyt lltja be.
Panel1Collapsed Ha rtke igaz, az 1-es panel eltnik, a
vezrl teljes terlett a 2-es panel tlti ki.
Panel1MinSize Az 1-es panel minimlis mrete.
Panel2Collapsed Ha rtke igaz, a 2-es panel tnik el.
Panel2MinSize A 2-es panel minimlis mrete.
SplitterWidth A kzps elvlaszt sv szlessge.
Mkdsket egyszer pldval mutatjuk be. Helyezznk el az rlapon egy gombot (Button)
s egy OpenFileDialog komponenst. A gomb kattintshoz rendeljnk esemnyt:
- 23 -
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter =
"Szvegfjlok (*.txt)|*.txt|Mindenki (*.*)|*.*";
openFileDialog1.FileName = "";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(openFileDialog1.FileName);
}
else
{
MessageBox.Show("Nem vlasztott fjlt");
}
}
}
Tulajdonsgok (Properties)
Enabled Ezzel a tulajdonsggal tudjuk engedlyezni
illetve letiltani az idztt.
Interval A kt esemny kztt eltelt id
ezredmsodpercben megadva.
Esemnyek (Events)
Tick Az esemny akkor kvetkezik be, ha a
szmll lejrt.
Plda:
- 24 -
Helyezznk el egy szvegdobozt (TextBox) az rlapon, Text tulajdonsghoz rjunk egy 1-
est, nevt hagyjuk vltozatlanul. Helyezznk el egy idztt (Timer) is az rlapon. A
szmllt engedlyezzk, az esemnyek kztt eltelt idt (Interval) lltsuk 1000 ms-ra.
Kezeljk le a Tick esemnyt:
A Timer pontos idmrsre nem alkalmas. Ha kt esemny kztt eltelt idre vagyunk
kvncsiak, hasznljuk a rendszerrt.
- 25 -
3 Nyelvi elemek (kulcsszavak, vltozk, literlok, konstansok,
nvterek)
3.1 Kulcsszavak
Brmilyen programot rjunk is minden esetben szksg van arra, hogy a felhasznltl a
program futsa sorn n. input rtke(ke)t krjnk be, illetve a szmtsaink sorn keletkez
eredmnyeket (output) meg tudjuk jelenteni a kpernyn. Az alapvet input- output,
mveletek trgyalshoz mindenkppen meg kell ismerkednnk a C# nyelvben hasznlatos
vltoz tpusokkal. Az olyan trhelyet, amelynek tartalma vltozhat a program futsa kzben,
vltoznak nevezzk.
Minden vltoznak rendelkeznie kell nvvel vagy ms nven azonostval, ezen kvl
tpussal, s tartalommal, vagyis aktulis rtkkel. Az elzekben emltetteken kvl
rendelkeznie kell lettartammal s hatskrrel. Az lettartam azt jelenti, hogy az adott vltoz
a program futsa sorn mikor s meddig, a hatkr pedig azt adja meg, hogy a program mely
rszeiben hasznlhat. A vltozk nevnek, azonostinak kivlasztsa sorn gyelnnk kell a
nyelv szintaktikai szablyainak betartsra.
- 26 -
betk, szmok vagy alhzs jelek kvetkezhetnek. Itt kell megjegyeznnk, hogy ms
nyelvektl eltren a C# nyelvben elmletileg az kezetes betket is hasznlhatjuk nvadsra.
Br ez a lehetsg adott mgsem javasoljuk, hogy a programozk ljenek ezzel a
lehetsggel!
A programban hasznlt kulcsszavakat nem hasznlhatjuk azonostknt. rdekessgknt
megemlthetjk viszont, hogy a kulcsszavak a @ bevezet jellel mr hasznlhatk akr
azonostknt is (pldul: @int). Ezt a lehetsget a programok hordozhatsga illetve
tjrhatsga miatt vezettk be. A @ perfix szimblumok neve valjban @ nlkl kerlnek
fordtsra. gy attl fggetlenl, hogy egy msik nyelv nem tartalmazza pldul a sealed
kulcsszt, s egy programban azonostknt hasznljk, a C# nyelvben lehetsg van az
azonost kzvetlen hasznlatra.
A kulcsszavakbl, vltozkbl, literlokbl s azonostkbl kifejezseket, utastsokat
lltunk ssze, amelyek sszessgbl ll ssze a forrsprogram. A C# nyelvben az
utastsokat pontosvesszvel zrjuk.
A vltozkat a programban be kell vezetni, azaz kzlni kell a fordtprogrammal, hogy
milyen nvvel s milyen tpus vltozt kvnunk hasznlni a programban. Ezt nevezzk
deklarcinak.
tpus vltoznv;
tpus vltoznv=kezdrtk;
Gyakran elfordul hiba, hogy a deklarci sorn nem adunk nevet vagy tpust a vltoznak,
vagy egyltaln nem deklarljuk, de a programban mgis megprblunk hivatkozni r. Ekkor
a .NET fordt a futtatskor hibt jelez. Az is elfordulhat, hogy nem megfelel tpus
kezdrtkkel ltjuk el a vltoznkat. Ebben az esetben klnbz hibazenetek jelenhetnek
meg a kpernyn.
- 27 -
Azonos vltoznevek hasznlata esetn is hibazenetet kapunk. Gyakori hiba az is, hogy az
osztly, vagyis a class neve egyezik meg az egyik vltoz nevvel.
Bizonyos esetekben, amikor nem hiba (Error), hanem figyelmeztet (Warning) tpus
hibazenetet kapunk, a fordt olyan hibt tall, amitl a programunk mg mkdkpes, de
hatkonysgt cskkenti. Ilyen hiba lehet pldul, ha egy vltozt deklarlunk, de nem
hasznljuk fel programunkban.
int adat1=10;
int adat2=(adat1+5)*4;
A vltozk egy rdekes tpusa a literl, akkor hasznljuk ket, amikor programunkban egy
konkrt rtket szeretnnk hasznlni. A literlok teht egyszer, rgztett rtkek,
tulajdonkppen konstansok. Jelentsk mindenesetben az aktulis tartalmukkal egyezik meg.
- 28 -
3.3.2 Logikai literlok
3.3.4 Konstansok
3.4 Nvterek
- 29 -
o A System.Data nvtr szolgltatja az adatbzis-kezelshez szksges
komponenseket.
Adat beolvassakor azonban nem csak erre a kt tpusra lehet szksgnk, ezrt az input
adatokat konvertlnunk kell a megfelel konverzis eljrsokkal.
A System hivatkozs elhagyhat a metdusok hvsakor, amennyiben azt a program elejn,
a using bejegyzs utn felvesszk. Ezt a mveletet nvtr importlsnak nevezzk. Abban
az esetben, ha eltekintnk a nvtr importlstl, akkor az adott metdus teljes vagy ms
nven minstett.
using System;
- 30 -
Mivel konzolrl val beolvass sorn az adatainkat string tpus vltozba olvassuk be
(Console.ReadLine()), gy szksg van az adat pldul szmm trtn konvertlsra. Ezeket
a konverzis lehetsgeket a C# nyelvben a Convert osztly metdusai (pl. ToInt32)
knljk.
Nhny fontosabb konverzis metdus, korntsem a teljessg ignyvel. Akit a rszletek is
rdekelnek, tanulmnyozza t a Convert osztly tovbbi metdusait.
Convert.ToInt32
Convert.ToChar
Convert.ToString
Convert.ToBoolean
Convert.ToDateTime
3.5 A kifejezsek
- 31 -
9. XOR ^
10. OR |
11. Feltteles AND &&
12. Feltteles OR ||
13. Feltteles mvelet ?:
14. rtkads =, *=, /=, %=, +=, -=, <<=,
>>=, &=, ^=, |=
a=kifejezs;
A mvelet jobb oldaln csak olyan kifejezs szerepelhet, melynek eredmnye kzvetlenl
megfelel az a vltoz tpusnak vagy kzvetlenl konvertlhat az a vltoz tpusra.
A C# nyelv lehetsgei adottak arra, hogy egyszerre tbb azonos tpus vltoznak adhassunk
rtket.
a=b=kifejezs;
- 32 -
Elszr kiszmtsra kerl a kifejezs rtke, majd az bekerl a b vltozba s ezt felveszi
az a vltoz is.
- 33 -
3.6.4 Egyoperandus mvelet
A nvels s cskkents viszont nem ugyangy zajlik le az egyik illetve a msik esetben. A
prefixes alak esetben a nvels vagy cskkents elzetes mveletknt hajtdik vgre s ezt
kveten trtnnek a tovbbi mveletek (pl. rtkads). A postfixes alak esetben a nvels
vagy cskkents utlagos mveletknt hajtdik vgre s ezt megelzen trtnnek a tovbbi
mveletek (pl. rtkads). Az eredmny szempontjbl teht abszolt nem mindegy melyik
alakot hasznljuk.
- 34 -
4 Feltteles utastsok - szelekci
Logikai mveletek alatt a szoksos NOT, AND, OR s XOR mveleteket rtjk. A NOT
mvelet opertora a ! jel, a XOR mvelet a ^ jel. A tbbi mvelet esetben azonban
megklnbztetnk feltteles s felttel nlkli AND vagy OR mveletet.
- 35 -
A feltteles mveletek s kirtkelsk:
AND (csak akkor igaz, ha mindegyik rszfelttel igaz)
OR (csak akkor igaz, ha legalbb egy rszfelttel igaz)
NOT (a megadott logikai kifejezs rtkt az ellenkezjre vltoztatja)
XOR (ha kt rszfelttel ellenttes rtk pl.TRUE s FALSE -, akkor TRUE)
A kvetkezkben a teljessg s a gyakorlati hasznlhatsg kedvrt nzzk meg a logikai
mveletek igazsgtblit.
6. tblzat Az AND opertor igazsgtblja
- 36 -
4.3 Feltteles utastsok
if (felttel) utasts;
A if else ktg elgazsnl a felttel hamis esetre is adunk meg vgrehajtand kdot,
amit az else kulcssz utn adunk meg. Szintaxisa a kvetkez:
if (felttel)
utasts1;
else
utasts2;
ebben az esetben is az utasts helyn utastsblokk is llhat.
Elfordulhat, hogy egy if utasts valamelyik gn bell egy msik felttel alapjn jabb
elgazst pthetnk be.
Az egymsba gyazott feltteles utastsok helyett tbb esetben sszetett logikai kifejezst is
alkalmazhatunk. A kvetkez utasts csak akkor hajtdik vgre ha mindkt felttel
egyidejleg teljesl.
- 37 -
A felttelek egymsba gyazsnl arra rdemes odafigyelnnk, hogy ezzel ne rontsuk
kdunk tlthatsgt illetve hatkonysgt. Ilyen esetben hasznljunk inkbb tbbg
szelekcit.
switch kifejezs of
{
case rtk1:
case rtk2:
case rtk3:
utasts1;
break;
case rtk2:
utasts2;
break;
default:
utastsN;
break;
}
A switch utastsok case vezrlinl az sbyte, byte, short, ushort, int, uint, long, ulong,
char, string, enum tpus kifejezseket hasznlhatjuk.
- 38 -
4.4 Plda: Feltteles elgazsokat tartalmaz alkalmazs ksztse
Ha az illet letkora
1 - 3 v: csecsem
4 - 6 v: vods
7 - 14 v: ltalnos iskols
15 -18 v: kzpiskols
19 - 23 v: egyetemista
egyb esetben: tanulmnyait befejezte
A kilps gombra kattintva az alkalmazsunk fejezze be a program futtatst!
- 39 -
Eletkor.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Eletkor
{
public partial class frmEletkor : Form
{
public frmEletkor()
{
InitializeComponent();
}
- 40 -
default:
MessageBox.Show("Tanulmnyait
befejezte!");
break;
}
}
}
}
}
- 41 -
5 Stringek kezelse
5.1 Deklarls
A C# nyelvben is, mint minden magas szint nyelv esetben ltezik a string tpus.
ltalnossgban azt mondhatjuk, hogy az objektumorientlt nyelvek esetn a stringeket
osztlyknt kezeljk. Tehetjk ezt azrt, mert vannak metdusaik, tulajdonsgaik valamint
paramtereik, ahogy ezt mr az osztlyoknl megszoktuk. Persze a gyakorlatban gy
dolgozunk velk, mint a tbbi programozsi nyelv string tpusval. Mivel a C# is tpusos
nyelv, gy a tbbi vltozhoz hasonlan deklarlni kell ket, st ezzel egyidben kezdrtket
is adhatunk nekik.
string szoveg=Hello;
Amennyiben gy deklarlunk egy stringet hogy nem adunk neki kezdrtket, akkor
kezdetben null rtke van.
string szoveg;
lblString.Text=szoveg;
const szoveg_string="konstans";
string1.CompareTo(string2)
- 42 -
TrimStart(karakter) metdus eltvoltja a szveg elejrl a paramter listjban
megadott karakter sszes elfordulst.
string szoveg=bbbbbele;
szoveg.TrinEnd(b) bele
string szoveg=vegggggg;
szoveg.TrinEnd(g) ve
A metdusok kztt fontos szerepet tlt be a keress. Ennek a metdusnak IndexOf() a neve.
A. fggvny -1-et ad vissza, abban az esetben ha a paramter listjban megadott karakter,
- 43 -
vagy karaktersorozat nem szerepel a string-ben, ha szerepel 0-t vagy pozitv rtket. Azt
mr korbban lttuk, hogy a string-ek 0- tl kezdve vannak indexelve, gy tallat eseten 0-
tl a string hosszig kaphatunk visszatrsi rtket, ami a tallat helyt, azaz a kezd
indext jelenti a keresett karakternek, vagy karakterlncnak.
Igaz hogy a + jel nem metdus, de mint mvelet rtelmezett a string-ekre, sszefzst
jelent. Az albbi pldban egy vezetknevet s egy keresztnevet fznk ssze, gyelve arra,
hogy a kt rsz kz elvlaszt SPACE karaktert is tegynk, majd kiratjuk egy cmke
felirataknt.
string vezeteknev=Nemecsek;
string keresztnev=Ern;
nev=vezeteknev+ +keresztnev;
lblNev.Text=nev;
A string-ek kezelhetk vektorknt is, ami azzal az elnnyel jr, hogy hivatkozhatunk r
elemenknt, mint a karaktereket tartalmaz tmbkre.
string szoveg1=txtSzoveg1.Text;
int darab=0;
for (int i = 0; i < szoveg1.Length; i++)
{
darab++;
}
MessageBox.Show(txtSzoveg1.Text+" sz "+ Convert.ToString(darab)+"
karakterbl ll");
A string tpusrl nyugodtan kijelenthetjk, hogy nlkle nem ltezik komolyabb program.
A leggyakrabb elfordulsa taln a fjlkezel programokhoz kthet. A string-eket
felhasznlhatjuk mg pldul szmrendszerek kztti tvltsok eredmnyeinek trolsakor,
- 44 -
vagy olyan nagy szmok sszeadsra, szorzsra, amelyekhez nem tallunk megfelel
mret vltozkat.
Sajnos nem minden programozsi nyelv tartalmazza a string tpust, s viszonylag kevs olyan
nyelv van, amelyben osztlyknt hasznlhatjuk ket, de ahol igen s szerencsre a C# nyelv
ilyen, ljnk a lehetsggel, mert sok esetben nagyban megknnyti illetve meggyorstja a
programozsi munknkat.
- 45 -
3. Az rlapon szerepl komponensek tulajdonsgait lltsuk be az albbiak szerint:
- 46 -
TextBox beszr txtMit
Button Szmol btnSzamol
Button sszehasonlt btnHasonlit
Button Nagybetsre btnNagybetus
alakt
Button Kisbetsre btnKisbetus
alakt
Button Szvegrsz btnResz
Button Karakter btnKeres
keress
Button Szveghossz btnHossz
Button Szvegbe btnBeszur
beszrs
Button Kilps btnKilepes
4. String.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace String
{
public partial class frmString : Form
{
public frmString()
{
InitializeComponent();
}
- 47 -
MessageBox.Show("Els szveg nagybets alakja=" +
txtSzoveg1.Text.ToUpper());
else
MessageBox.Show("res a szveg mez!!!");
}
szoveg1=szoveg1.Insert(Convert.ToInt32(txtMelyiktol.Text),txtMit.Text);
MessageBox.Show("Az j szveg a beszrs utn="+szoveg1);
}
}
}
- 48 -
6 Iterci
A for ciklust, akkor hasznljuk, ha pontosan meg tudjuk mondani, hogy egy adott
tevkenysget hnyszor kell ismtelni. Szintaxisa:
A for utasts a ciklus feje, ahol megadjuk a ciklusvltozt, annak kezdrtkt, a vgrtk
vizsglatt illetve a lptets mrtkt.
A ciklusvltoz, a kezdrtk s a vgrtk csak sorszmozott tpus lehet. Itt kell
megjegyeznnk, hogy az utasts helyn sszetett utasts is llhat, ebben az esetben
hasznljuk a korbban megismert {} utasts prt.
Az albbi pldban 1 s 3 kztti egsz szmokat jelentnk meg szvegdobozokban
egymsutn.
A ciklus fejben ltrehozott vltozk csak a ciklus blokkjban rvnyesek, azaz azon kvl
nem rhetk el. Abban az esetben, ha ezeket a vltozkat illetve azok rtkeit a cikluson kvl
is fel akarjuk hasznlni, akkor a cikluson kvli vltozban kell eltrolni az rtkeiket vagy
pedig msik tpus ciklust kell hasznlni.
A foreach ciklus a for ciklus egy specilis esetre mdostott vltozata. A gyakorlatban
akkor hasznljuk, ha valamilyen sszetett adattpus (pl. tmb) elemeit egytl egyig fel akarjuk
dolgozni.
string[] nevek;
nevek = new string[3];
nevek[0] = "ELS";
nevek[1] = "MSODIK";
nevek[2] = "HARMADIK";
foreach (string nev in nevek)
MessageBox.Show(nev.ToUpper());
- 49 -
A fenti pldban egy neveket tartalmaz tmb (nevek) elemeit nagybets formban kvnjuk
megjelenteni, kln-kln zenetablakokban.
while (felttel)
{
utasts(ok);
}
3. bra
Az elltesztel ciklus mkdse
Ha a felttel a ciklusba val belps eltt hamiss vlik, akkor a ciklus magja egyszer sem
hajtdik vgre.
- 50 -
A htultesztel ciklus szintaxisa a kvetkez:
do
{
utasts(ok);
}while (felttel)
4. bra
A htultesztel ciklus mkdse
int i = 1;
do
{
MessageBox.Show(Convert.ToString(i));
i++;
} while (i < 4);
A gyakorlatban elfordulhat az az eset is, amikor egy itercibl hamarabb kell kilpni,
minthogy az vgigfutott volna vagy a vgrehajtst valamilyen ok miatt a ciklus belsejbl a
ciklusfejre kell lptetni azonnal. Ezekre a break s a continue utasts szolgl a C#
programozsi nyelvben. A break hatsra a program az itercit kvet utastson
folytatdik, mg a continue hatsra nem lpnk ki a ciklusbl, a vgrehajts a ciklusfejre
kerl vissza.
Plda: Szrs szmtsa
Ksztsnk programot, mely meghatrozza egy szmsorozat szrst!
- 51 -
Az adatok szrdsrl a legpontosabb kpet gy kaphatjuk, ha az sszes adatot s azoknak
az tlagtl val eltrst figyelembe vesszk. Ennek leggyakrabban hasznlt mdszere
szrsngyzet (s2) meghatrozsa. Ennek ngyzetgyke a szrs (s):
( x1 x ) 2 + ( x 2 x ) 2 + ... + ( x n x ) 2
s2 =
n
( x1 x ) 2 + ( x 2 x ) 2 + ... + ( x n x ) 2
s=
n
x i
x= i =1
n
Az tlagtl val eltrsek ngyzetnek kiszmtsa, valamint ngyzetsszeg kpzse.
n
eno = ( x n x ) 2
i =1
(x n x)2
eno
s= i =1
=
n n
A kiszmolt szrs megjelentse a msik szvegdobozban.
- 52 -
Button btSzamitas Szrs
TextBox tbSzamsor Multiline=True
TextBox tbSzoras
Label label1 Szmsorozat:
Label label2 Szrs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace szoras
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
- 53 -
//Az az tlagtl val ngyzetes eltrsek
//tlagbl gykt vonva megkapjuk a szrst.
//System.Math.Sqrt() fggvny segtsgvel vonunk gykt.
double szoras = System.Math.Sqrt(eno / n);
tbSzoras.Text = szoras.ToString();
}
}
}
Ksztsnk programot, mely egy szmrl eldnti, hogy prmszm-e. A vizsglat eredmnyt
felugr ablakban jelentsk meg.
Annak eldntsre, hogy egy szm prmszm-e, tbb algoritmus is ltezik. Vlasszuk az
egyik legegyszerbb mdszert:
Felttelezzk a szmrl, hogy prm
[2 ; szm/2[ tartomnyba es sszes egsz szmmal megksreljk az osztst. Ha
tallunk olyan szmot, melynl az osztsi maradk 0, a szm nem prm. (A
vizsgland szm felnl nagyobb szmokkal felesleges prblkozni, biztos, hogy
kzttnk nem tallunk egsz osztt.)
Ha a fenti tartomnybl egyetlen szm sem ad 0-t osztsi maradkknt, a szm prm.
A C# nyelvben osztsi maradk kpzsre a % opertor szolgl.
1. Ksztsk el az rlapot
- 54 -
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace primszam
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
//Az eredmnytl fggen megjelentjk az zenetet.
if (prim_e == true)
{
MessageBox.Show("Prim");
}
else
{
MessageBox.Show("Nem prim");
}
}
}
}
- 55 -
7 Sajt metdusok ltrehozsa
- 56 -
TextBox 12 txtMasik
Button Szmol btnSzamol
Button Kilps btnKilepes
A programunkban ltrehozunk Lnko nven (int Lnko(int a, int b)) egy fggvny tpus
metdust, amely kt egsz szmot vr paramterknt s a legnagyobb kzs osztjukat adja
vissza eredmnyknt. A metduson bell ellenrzst vgznk, ha a felhasznl negatv rtket
ad meg, akkor veszi annak abszolt rtkt s azzal szmol. A kt megadott szmot
sszehasonltja s amennyiben az els kisebb, gy felcserli ket, a knnyebb szmolhatsg
kedvrt. A % opertor az oszts maradkt adja vissza.
6. Lnko.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Lnko
{
public partial class frmLnko : Form
{
public frmLnko()
{
InitializeComponent();
}
- 57 -
MessageBox.Show("A kt szm legnagyobb kzs
osztja: "+stroszto);
}
- 58 -
8 Objektumosztlyok s objektumok ltrehozsa
class Osztly
{
adatok deklarlsa;
metdusok deklarlsa;
}
Az elbbi pldbl jl lthat, hogy az osztlydefinci egy blokkot alkot, a blokk kezdett s
vgt a {} zrjelpr jelzi. Az osztly minden adattagjt s metdust a blokkon, azaz a
zrjel-pron bell kell megadni.
- 59 -
Az adattagok deklarlsakor ktfle mdostt lehet hasznlni, a static s a const
kulcsszavakat. A static mdostval az osztlyszint adattagot hozhatjuk ltre. Az gy
deklarlt statikus adattag rtke nem az osztly alapjn ltrehozott objektumban, hanem az
osztlyban kerl trolsra, gy bellthat illetve lekrdezhet az objektum ltrehozsa nlkl
is.
Fggvny-metdus esetn
- 60 -
utastst, azaz egyetlen felttel esetn sem lphetnk ki gy a metdusbl, hogy ne adna
vissza rtket.
A metdusok nem csak osztlyaik vagy sajt bels adattagjaikkal dolgoznak, hanem kvlrl
is kaphatnak adatokat. Minden metdus rendelkezhet paramterekkel, amelyeket a fejlcben
definilunk, mint formlis paramterlista.
A paramterek az adatok tadsa szempontjbl lehetnek rtk vagy cm szerinti paramterek.
rtk szerinti paramtertadsnl a bejv adat csak felhasznlhat. Az albbi pldban egy
metdus a kapott adatokkal szmol.
class Param1
{
public static void Main()
{
Account haszon = new Account();
haszon.Count("Alma",152,3.5,15);
}
}
class Param2
{
public static void Main()
{
double netto = 0;
double brutto = 0;
Account haszon = new Account();
haszon.Count(152,3.5,15,ref netto, ref brutto);
}
}
- 61 -
A fenti pldbl jl lthat, hogy a cmszerinti paramtertadsnl a ref direktvt
alkalmaztuk mind az aktulis, mind pedig a formlis paramtereknl. szre kell venni, hogy
br a netto s brutto vltozkat adatvisszaadsra hasznljuk, a metdushvs eltt
valamilyen rtket kell kapniuk, ami jelen esetben 0.
A most bemutatand msik pldban a netto s brutto rtkek esetben deklarljuk, hogy
ezek a vltozk kifejezetten csak visszatr adatok (out).
class Param3
{
public static void Main()
{
double netto;
double brutto;
Account haszon = new Account();
haszon.Count(152,3.5,15,out netto,out brutto);
}
}
- 62 -
protected c = Karakterlanc
private void Atlag()
.
}
8.1.7 A property-k
Osztaly.Ev = 2004;
x = Osztaly.Ev;
Ez utbbi esetben a get metdus hajtdik vgre, visszaadva (esetleg talaktva, feldolgozva)
az v rtkt. Ha szveges formban is (kettezerngy) meg szeretnnk kapni az vszmot,
kszthetnk mg egy property-t:
- 63 -
return Szoveg(ev);
}
}
A SzovegesEv property-n keresztl csak lekrdezhetjk az vet, mivel nincs set metdus.
Az eredmnyt viszont most szvegknt kapjuk meg, abban az esetben, ha ltezik a Szoveg
fggvny, amely az vszmot szvegg konvertlja.
A property-k azrt hasznosak, mert hasznlatukkal
bellthatjuk, hogy a bels adatok rhatk s olvashatk, csak olvashatk vagy csak
rhatk legyenek,
a get s set metdusok ellenrz, talakt, feldolgoz kdok beiktatst is
lehetv teszik,
adatknt lekrdezhetnk olyan adattagokat, amelyek bels adattagknt esetleg nem is
lteznek,
a get metdus vgl is brmilyen szmtsi, feldolgozsi mvelet eredmnyt
visszaadhatja.
- 64 -
9 Grafika
Mieltt elkezdennk rajzolni, ltre kell hoznunk egy Graphics objektumot. Szerencsre
minden grafikus windows vezrl automatikusan rkli a CreateGraphics() metdust,
melyen keresztl hozz tudunk frni a vezrl grafikus rszhez.
Graphics grafika;
grafika = this.CreateGraphics();
grafika.DrawImage(kep,0,0);
}
1. Az els kt sor ltrehozz a Bitmap osztly egy pldnyt kep nven, majd a
konstruktornak paramterknt tadjuk a betltend kp elrsi tvonalt.
2. Ezutn hozzuk lte a Graphics osztly egy pldnyt grafika nven. Grafika nev
objektumunkhoz most rendeljk hozz az aktulis rlap (this) fellett. Itt az rlap
helyett vlaszthatnnk brmely vezrlt az rlapon pl:
grafika = this.TextBox1.CreateGraphics();
- 65 -
3. Ezutn mr csak a kp felrajzolsa marad htra a DrawImage() metduson keresztl a
(0,0) koordintj ponttl. A koordintarendszer origja a bal fels sarokban van, a
tengelyek jobbra, illetve lefel mutatnak.
Pl: Color.Orange
Pl: SystemColors.WindowText
Mg graphics osztly biztostja szmunkra a felletet, amire rajzolhatunk, szksgnk van egy
eszkzre, amivel rajzolunk. Hozzuk ltre a Pen osztly egy pldnyt, s lltsuk be tollunk
jellemzit: adjuk meg a vonal sznt, vastagsgt s stlust! A Pen konstruktornak els
paramtere a vonal szne, ezutn kvetkezik a vonal vastagsga.
- 66 -
Pen toll;
toll = new Pen(Color.DarkBlue, 3);
toll.DashStyle =
System.Drawing.Drawing2D.DashStyle.Dot;
rtk Lers
Dash ------
DashDot ----
DashDotDot ---
Dot
Solid Folytonos
Custom Egyedi. A Pen osztly rendelkezik olyan
tulajdonsgokkal, melyeken keresztl
egyedi vonalstlus is kialakthat. A
rszletekre itt nem trnk ki.
A rajzoljunk egy vonalat, ellipszist s egy tglalapot! A DrawEllipse() metdus utols ngy
paramtere az ellipszist befoglal tglalap bal-fels sarknak x s y koordintja, valamint a
tglalap szlessge s magassga:
Pen toll;
toll = new Pen(Color.DarkBlue, 3);
toll.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
Brush ecset;
ecset = new System.Drawing.SolidBrush(Color.DarkBlue);
grafika.FillEllipse(ecset,10,10,100,100);
Ltrehozhatunk olyan ecsetet, illetve tollat is, mely egy kpbl nyert mintval rajzol:
- 67 -
Bitmap kep;
kep = new Bitmap(@"c:\kp.jpg");
Brush mintasEcset;
mintasEcset = new System.Drawing.TextureBrush(kep);
Szveg rajzolshoz kt objektumot is ltre kell hozni: egy bettpust s egy ecsetet:
Font betu;
betu = new System.Drawing.Font("Arial", 30);
Brush ecset;
ecset = new System.Drawing.SolidBrush(Color.Black);
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication5
{
public partial class Form1 : Form
{
Bitmap rajzFelulet;
public Form1()
{
InitializeComponent();
- 68 -
//melyen keresztl rajzolhatunk a rajzfelletre
Graphics grafika;
grafika = Graphics.FromImage(rajzFelulet);
Brush ecset;
ecset = new System.Drawing.SolidBrush(Color.DarkBlue);
}
}
}
- 69 -
10 Tbbablakos alkalmazsok ksztse
10.1 zenetablakok
Ha csak egyetlen szveges paramtert adunk t, a megadott szveg s egy Ok gomb jelenik
meg:
MessageBox.Show("zenet.");
- 70 -
YesNo Igen s Nem
YesNoCancel Igen, Nem, Mgse
Asterisk
Error
Exclamation
Hand
Information
Question
Stop
Warning
DialogResult valasz;
valasz = MessageBox.Show("Folytassuk?", "A folytats",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (valasz == DialogResult.Yes)
{
MessageBox.Show("J, folytatjuk");
}
else
{
MessageBox.Show("Akkor abbahagyjuk...");
}
- 71 -
10.2 Plda: Ktablakos alkalmazs
- 72 -
Komponens Text Name Properties
Label j szak neve
TextBox Modifiers: public
Button Ok btnOk DialogResult: OK
Button Mgsem btnMegsem DialogResult: Cancel
Form j szak UjSzak AcceptButton: btnOk
CancelButton: btnMegsem
FormBorderStyle:
FixedDialog
MaximizeBox: False
MinimizeBox: False
ShowInTaskbar: False
UjSzak.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication2
{
public partial class UjSzak : Form
{
public UjSzak()
{
InitializeComponent();
}
- 73 -
}
}
10. A szaklista rlap gombjhoz rendeljnk esemnyt, mely megnyitja az UjSzak rlapot.
Ha a felhasznl az Ok gombbal zrta be a felugr ablakot, adjuk hozz a legrdl
doboz tartalmhoz az j szakot!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Szaklista()
{
InitializeComponent();
}
}
}
- 74 -
A Form osztlynak ltezik egy Show() metdusa is, mely nem modal ablakknt jelenti meg
az rlapot, s azonnal visszatr. Ezrt visszatrsi rtkbl nem derl ki, hogy melyik
gombbal zrtuk be az ablakot.
- 75 -
11 Kivtelkezels
11.1 Hibakezels
A fordtprogram ltal szlelt hibkat szintaktikai hibknak nevezzk. Egy program addig
nem futtathat, amg szintaktikai hibt tartalmaz.
Elfordulhat olyan eset is, amikor a fordt csak valamilyen figyelmeztetst kld a
programr szmra. A figyelmeztetsek olyan hibra hvjk fel a programr figyelmt,
amelyek nem akadlyozzk meg a program futtatst, de esetleg rontjk programunk
hatkonysgt vagy esetleg csak rontjk a forrsprogram ttekinthetsgt (pl. deklarlunk
egy vltozt, de azt sehol nem hasznljuk a programunkban, azaz felesleges trhelyet
foglalunk!).
A program futsa sorn fellp (nem kls okbl szrmaz) hibkat szemantikai hibnak
nevezzk. Megelzskrl a programkdban kell megfelel ellenrz, hibakezel
utastsokkal gondoskodni.
- 76 -
A catch parancs segtsgvel azokat a kivteleket tudjuk elfogni, amelyek a try blokkban
keletkeznek. Itt lehet meghatrozni, milyen utastsok kerljenek vgrehajtsra, s hogyan
kezeljk a felmerl hibkat A catch segtsgvel klnbz hibk egyidej kezelst is
meg lehet valstani.
int oszto=0;
double hanyados;
try
{
hanyados=10/oszto;
}
catch (ArithmeticException ar)
{
MessageBox.Show(Convert.ToString(ar));
}
A fenti programrszletben a try utn kapcsos zrjelek kzt adjuk meg a hibt okozhat
programrszletet. A hiba abban az esetben lp fel, ha az oszto rtke 0. A catch
hibakezel utastsait is kapcsos zrjelek kz tesszk, ezzel jelezve a fordtnak, hogy hol
kezddik s hol vgzdik a hibakezels.
- 77 -
jobb megoldsnak szmt, ha megllaptjuk a hiba okt, majd pedig a megfelel hibakezels
aktivizlsval meg is szntetjk azt, anlkl hogy a felhasznlt nehz helyzetbe hoznnk.
A programunk rsa sorn elfordulhat olyan eset is, hogy egy programrszlet hibs s
hibtlan mkds esetn is mindenkppen lefusson. A leggyakrabban a fjlkezelsnl tallunk
erre pldt, mivel a megnyitott fjlt hiba esetn is mindenkppen le kell zrni. Gondoljunk
bele milyen hibt okozhatna, ha a fjl bezrsa nlkl prblnnk jra megnyitni a fjlt. Az
ilyen tpus problmkra nyjthat megoldst a finally parancs.
A finally blokkban elhelyezett kd teht minden esetben lefut kivve, ha a program
vgzetes hibval ll meg - , fggetlenl az eltte keletkezett hibktl. A kvetkez pldban a
matematikai mveleteknl gyakran fellp nullval val oszts esett mutatjuk be a finally
blokk hasznlatval:
int oszto=0;
double hanyados;
try
{
hanyados=10/oszto;
}
catch (ArithmeticException ar)
{
MessageBox.Show(Convert.ToString(ar));
}
finally
{
MessageBox.Show("A program ezen rsze mindenkppen lefut");
}
throw (exception);
throw exception;
- 78 -
A program brmely szintjn dobhatunk a kivtelt a throw parancs segtsgvel, s egy
tetszleges catch blokkal el is tudjuk kapni. Amennyiben nem kapjuk el sehol a
programunkban, akkor az a Main() fggvny szintjn is megjelenik, majd vgl az opercis
rendszer lekezeli a sajt hibakezel eljrsval, ami persze a legtbbszr a programunk
lellsval jr.
unchecked
{
byte a=300;
}
A fenti pldban a byte tpus vltoz maximum 255-ig tud rtket trolni. Az rtkads
ennek ellenre megtrtnik, s a vltozba bekerl a csonktott rtk, persze csak akkora,
amekkora mg elfr benne.
- 79 -
hogy programunk nem ll le vgzetes hibval s nem kesertik sem a programoz, sem pedig
a felhasznlk lett.
- 80 -
egytthatjt!
Label Krem a lblKonstans
konstanstag
egytthatjt!
TextBox 3 txtMasodfoku
TextBox 6 txtElsofoku
TextBox 12 txtKonstans
Button Megolds btnMegold
Button Kilps btnKilepes
Amennyiben a gyknk eredmnye vgtelen, ami 0-val val oszts esetn lp fel, akkor
kivtelt dobunk throw new DivideByZeroException(), melyet a catch() rszben
kapunk el s kezelnk le. A felhasznlt zenetablakban tjkoztatjuk a nullval val oszts
kvetkeztben fellp hibrl!
4. Masodfoku.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Masodfoku
{
public partial class frmMasodfoku : Form
{
public frmMasodfoku()
{
InitializeComponent();
}
- 81 -
Gyk2=" + gyok2);
}
catch (DivideByZeroException divex)
{
MessageBox.Show("A msodfok tag
egytthatja=0");
}
}
}
}
- 82 -
12 llomnykezels
- 83 -
sw.WriteLine("Szia!"); //Hello szveg rsa a fjlba
sw.WriteLine("n vagyok az"); //And szveg rsa a fjlba
sw.WriteLine("Megismersz?"); //Welcome szveg rsa a fjlba
}
}
- 84 -
BinaryWriter bw = new BinaryWriter(File);
for (int i = 0; i < 10; i++)
{
bw.Write(i);
}
bw.Close();
File.Close();
A FileStream objektumot ltrehozsa utn azonnal fel kell ksztennk a binris adatok
fogadsra. Ezt gy tudjuk megoldani, hogy a BinaryWriter tpust kapcsoljuk az
objektumhoz.
- 85 -
tudjuk felhasznlni. A BinaryReader osztly rendelkezik a ReadInt32-hz hasonl
tagfggvnyekkel a tbbi egyszer adattpushoz is.
- 86 -
RadioButton Skandinv lott rgHetes
ComboBox cmbSzamok
Button Generl btnGeneral
Button Fjlba r btnFile
Button Kilps btnKilepes
saveFileDialog1 saveFileDialog1
Fel kell hvni a figyelmet mg arra is, hogy fjlkezels sorn az llomny elejre be kell
szrnunk a kvetkez sort, mert csak ezutn lesz kpes programunk a fjlok kezelsre.
using System.IO;
8. Veletlenfajlba.cs:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Veletlenfajlba
{
public partial class frmLotto : Form
{
public frmLotto()
{
InitializeComponent();
}
- 87 -
}
}
j knyvtr ltrehozsa:
System.IO.Directory.CreateDirectory (string)
Alknyvtr ltrehozsa:
System.IO.DirectoryInfo.CreateSubdirectory (string)
- 89 -
11. Az rlapon szerepl komponensek tulajdonsgait lltsuk be az albbiak szerint:
Fel kell hvni a figyelmet mg arra is, hogy llomnykezels sorn az llomny elejre be kell
szrnunk a kvetkez sort, mert csak ezutn lesz kpes programunk a fjlok kezelsre.
using System.IO;
12. Konyvtarak.cs:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Globalization;
using System.IO;
namespace DirectoryTest
{
public class frmKonyvtar : System.Windows.Forms.Form
{
public frmKonyvtar()
{
InitializeComponent();
}
- 90 -
if (Directory.Exists("c:\\proba"))
MessageBox.Show("c:\\proba knyvtr mr ltezik");
else
MessageBox.Show("c:\\proba knyvtr mg nem ltezik");
}
}
}
12.3.3 llomnymveletek
- 91 -
A kvetkez metdus a fjl attribtumt mdostja s a vltozsokat lltja be:
File.SetAttributes(path1, File.GetAttributes(path1) Or
FileAttributes.Hidden)
Nzznk meg egy kdrszletet arra, hogyan lehet egy llomnyt egy msik knyvtrba
mozgatni illetve msolni, kzben az llomny trlse is bemutatsra kerl, abban azt esetben
ha abban a knyvtrban ltezik ilyen nev llomny:
Move(f1,f2) az adott knyvtrban lv f1 fjl mozgatsa f2-be
Delete(f1) az adott knyvtrban lv f1 fjl trlse
Copy(f1,f2)- az adott knyvtrban lv f1 fjl msolsa f2-be
CopyTo(f1,f2) az adott knyvtrban lv f1 fjl msolsa f2-be, de nem
engedi meg az ott lv ugyanilyen nev fjl fellrst
Exists(f1) megvizsglja, hogy az adott knyvtrban ltezik-e az f1 fjl
- 92 -
A kvetkez kdrszletben kiratjuk egy adott knyvtrban tallhat llomnyok neveit s
mreteit:
GetFiles() az adott knyvtrban lv fjlok listjt lltja el
Name az adott knyvtrban lv fjlok nevei
Length - az adott knyvtrban lv fjlok mretei
- 93 -
13 XML alapok s XML fjlok kezelse
Az Extensible Markup Language (XML, kiterjeszthet ler nyelv) ltalnos cl ler nyelv
specilis cl ler nyelvek ltrehozsra. A ler nyelvek adatok strukturlt lersra
szolglnak, nem programozsi nyelvek. Strukturlt adatok alatt olyan dolgokat rtnk, mint
tblzatok, cmjegyzkek, 2D vagy 3D rajzok, stb.
Az XML nem hatrozza meg a nyelv jellelem kszlett, ez teljes mrtkben kiterjeszthet -
innen ered a neve is. A jellelem kszlet meghatrozsval kialakthatjuk sajt
adatstruktrnk lersra alkalmas XML alap ler nyelvnket.
Ahhoz, hogy egy XML dokumentum helyes legyen, kt kvetelmnynek kell megfelelnie:
- 94 -
1. Helyes szintaktika
2. rvnyessg
3. A nyit tag egy nv, melyet < > jelek kz ruk. Pl: <Recept>. A tag nv nem
tartalmazhat szkzt, a nyelv klnbsget tesz a kis s a nagy betk kztt. A zr
tag egy / jelbl s a nyit tag-ben is szerepl nvbl ll, pl: </Recept>
- 95 -
9. Ha a dokumentum nem helyesen formzott, az XML rtelmeznek meg kell tagadnia
a feldolgozst.
A fentiekbl kvetkezik, hogy minden nyit tag-et le kell zrni egy zr tag-el. A tag-ek fa-
szeren egymsba gyazhatk, de tfeds nem lehet kzttk.
helytelen:
<Plda1><Plda2></Plda1><Plda2>
helyes:
<Plda1>
<Plda2>
</Plda2>
</Plda1>
Azon tl hogy az XML dokumentum formailag helyes, meg kell feleljen egy adott smnak.
Ez azt jelenti, hogy csak olyan tag-eket s attribtumokat tartalmazhat, melyeket az XML fjlt
feldolgoz program felismer. Ez lehet szabvnyostott XML alap formtum, mint pldul a
vektorgrafikk lersra alkalmas SVG (Scalable Vector Graphics) nyelv, de lehet ltalunk
meghatrozott formtum is.
- 96 -
13.2 XML fjlok feldolgozsa C# krnyezetben
XML fjlok feldolgozsra tbbfle lehetsg van, terjedelmi okok miatt ezek kzl egyet
mutatunk be.
Az egyes node-ok elrsre nzznk nhny egyszer pldt! (Az els elemre mindig nulls
indexel hivatkozunk.)
textBox1.Text = peldaXML.DocumentElement.InnerXml;
textBox2.Text = peldaXML.DocumentElement.ChildNodes[0].InnerXml;
textBox3.Text=
peldaXML.DocumentElement.ChildNodes[0].ChildNodes[1].InnerXml;
- 97 -
A plda futtatsa utn a szvegdobzokban a kvetkez jelenik meg:
XmlElement ujElem;
ujElem = peldaXML.CreateElement("unoka3");
ujElem.InnerText = "Legkisebb unoka :)";
ujElem.SetAttribute("neve", "Anna");
peldaXML.DocumentElement.ChildNodes[0].AppendChild(ujElem);
peldaXML.Save("pelda.xml");
- 98 -
13.3 Plda XML fjl feldolgozsra
A szak trlse gomb mindig az ppen kivlasztott szakot trli. A vltozs azonnal mentsre
kerl az XML fjlba.
- 99 -
<szak>Spanyol</szak>
</szakok>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
- 100 -
}
public Form1()
{
InitializeComponent();
XmlNodeList lstSzakok =
szakokXML.DocumentElement.GetElementsByTagName("szak");
- 101 -
CancelButton: btnMegsem
FormBorderStyle:
FixedDialog
MaximizeBox: False
MinimizeBox: False
ShowInTaskbar: False
6. UjSzak.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication2
{
public partial class UjSzak : Form
{
public UjSzak()
{
InitializeComponent();
}
}
}
- 102 -
o A ShowDialog() metdus hvsval az rlapot modal ablakknt jelentjk
meg. Ha ShowDialog() metdus OK rtkkel tr vissza, bvtsk a lista elemei
s az XML fjlt.
if (frmUjSzak.ShowDialog() == DialogResult.OK)
{
//Bvtsk a legrdl doboz elemeit az j szakkal!
cboSzakok.Items.Add(frmUjSzak.tbSzak.Text);
XmlElement ujElemXML =
szakokXML.CreateElement("szak");
ujElemXML.InnerText = frmUjSzak.tbSzak.Text;
szakokXML.DocumentElement.AppendChild(ujElemXML);
- 103 -
14 Az UML nyelv s fontosabb diagramtpusai
1996-ben jelent meg az UML 0.9, majd 1997-ben az 1.1 verzi. Ez utbbi megszletsnl
mr egy szleskr ipari konzorcium bbskodott, amelynek tagjai kztt volt az IBM, a HP,
a Microsoft, az Oracle, a DEC, a Texas Instruments s az Unisys, vagyis az informatikai piac
ht legbefolysosabb szereplje. Az els teljes vltozat, az UML 1.3 tnylegesen ipari
szabvnny vlt. Mr vek ta az UML 2.0 verzit hasznljk, de 2006-ban vrhat a 2.1
vltozat megjelense. A 2.0 verziban a diagramok szma 9-rl 13-ra ntt, s ms tekintetben
is jelents vltozsok jelentek meg.
Az UML teht egy ltalnos cl vizulis modellez nyelv, s nem egy programozsi nyelv.
Nem tudunk programot rni UML-ben, br sok CASE eszkz kpes UML diagramokbl Java,
C++ vagy C# kdot generlni. Br az UML maga nem egy szoftverfejleszt folyamat,
szorosan kapcsoldik az USDPhez (Unified Software Development Process), amely viszont
mr alkalmas rendszerek fejlesztsre. Az USDP is a Booch - Jacobson Rumbaugh tri
munkja, s gyakran RUP knt (Rational Unified Process) emlegetik. Az elnevezsben
szerepl Rational egy informatikai cg neve, ahol veken t egyttdolgozott az emltett
hrmas. A Rational cg termke a CASE eszkzk kztt piacvezet szerepet betlt
Rational Rose is. Magt a cget 2003-ban felvsrolta az IBM, de a mrkanv megmaradt.
Az UML nem ktdik egyetlen meghatrozott mdszertanhoz, hanem brmelyik ltez
mdszertannal (pl. OPEN) egytt hasznlhat. Egyebek mellett ez teszi az UML-t klnsen
npszerv a rendszerfejlesztk krben.
- 104 -
osztly (class)
objektum (object)
komponens (component)
csomag (package) vagy alrendszer
sszettel (composite structure) diagramok
telepts (deployment)
tevkenysg (activity)
hasznlati eset (use case)
llapotgp (state machine, korbbi verzikban state transition vagy state chart)
illetve
klcsnhats (interaction) diagramok.
szekvencia
kommunikci
klcsnhats-ttekints (interaction overview)
id (timing).
- 105 -
implementci nzpontjbl rjk le a rendszert. Klnsen abbl a szempontbl hasznosak,
hogy lehetv teszik a terveznek annak vgiggondolst, vajon az alkalmazs valban
rendelkezik-e a szksges funkcionalitssal, azaz vgrehajtja-e mindazt, amit a megrendel
elvr tle. A komponensdiagramokat elszeretettel hasznljk a rendszer nagybani
architektrjt egyeztet megbeszlseken, ahol a projekt kulcsfiguri kztti trgyals
legfontosabb segdeszkzv vl(hat)nak. A komponensdiagramok tulajdonkppen lgi
felvtelknt funkcionlnak, s a rendszer egsznek szerkezett mutatjk. A felvtel felbontsa
alapveten attl fgg, pontosan mit is szeretnnk megmutatni.
- 106 -
kommunikcidiagramok stb. A folyamatok ttekintseknt foghatk fel, s a rszleteket csak
elnagyoltan tartalmazzk.
Az llapotgp-diagram (state machine, az UML korbbi verziiban state chart vagy state
transition) egy rendszer lehetsges llapotait rja le, s az llapotok kztti tmeneteket. Ezt a
diagramtpust mr vtizedek ta hasznljk az informatikban. Lnyegben egy irnytott
grfot jelentenek, kezd s vgponttal, s megengedjk, hogy folyamatok sztvljanak s jra
egyesljenek. Szoros az llapotgpek s a (Mealy s Moore) automatk kapcsolata.
Az UML iddiagramja entitsok idbeli viselkedst rja le. Egszen pontosan azt, hogy a
vizsglt entits milyen hosszan marad egy adott llapotban. Az UML 2.0 verziban jelent
csak meg. Klnsen vals-idej rendszerek s begyazott szoftverek tervezsre hasznljk.
tevkenysg-,
szekvencia-,
osztlydiagramok,
msodlagosan pedig a
hasznlati eset,
llapot-,
kommunikci-,
- 107 -
komponens-,
telepts
Fontos megjegyezni, hogy a szereplk mindig kvl esnek a rendszer hatrain. Azonban az
elfordulhat, hogy a kls szereplknek ltezik valamilyen reprezentcija a rendszeren bell
is, pldul egy adatbzis, amely az gyfelek adatait tartalmazza. Az gyfl maga egy kls
aktor, de a lista mr egy bels adattrol.
Szereplk
- 108 -
Kik a rendszer hasznli?
Ki szolgltat adatot a rendszernek?
Ki kap informcit a rendszertl?
Ki tartja karban a rendszert?
Milyen ms rendszerek llnak kapcsolatban a vizsglt rendszerrel?
Hasznlati esetek
Sok esetben egy felhasznlt, egy felhasznli viselkedst egynl tbb szereplvel, aktorral
jellemezhetnk.
Hasznlati esetek kztt hromfle kapcsolatot definilhatunk. Az els egy rklsi vagy
mskpp generalizcis / specializcis kapcsolat. A hasznlati esetek egyike az utd, a
msik a szl szerept fogja jtszani, s az ket sszekt (nem szaggatott, hanem
folyamatos) vonal vgn lv nyl a specilistl (utd) az ltalnos (szl) fel mutat. E
kapcsolat jelentse az, hogy az utd hasznlati eset teljes egszben rkli a szl hasznlati
esetet, de azon mdosthat. Az ltalnos hasznlati esetet trhatja, a rsztevkenysgeken
egyszersthet, vagy azokhoz jabb rsztevkenysgeket adhat hozz. Egy szl hasznlati
esetnek lehet tbb utda, s elvben egy utdnak is lehet tbb szlje. ltalban arra ltunk
pldt, hogy felfel a kapcsolat egyrtelm, azaz egy utdhoz csak egy szl tartozik.
- 109 -
A msodik lehetsges kapcsolati forma kt hasznlati eset kztt az <<extend>> (UML-ben
foglalt) szcskval rhat le. Itt is az egyik hasznlati esetet alapnak, a msikat pedig
kiterjesztsnek fogjuk hvni. A kt hasznlati esetet szaggatott nyl kti ssze, amely az alap
hasznlati eset fel mutat, s a nylra rjuk r az <<extend>> szcskt. Az alapeset a
kiterjesztsek nlkl is vgrehajthat, azaz nmagban is teljes. A kiterjeszts nhny olyan
rsztevkenysget tartalmazhat, amely nem tallhat meg az alapesetben. A kiterjesztsek
ltalban nem teljes rtk hasznlati esetek.
Tegyk fel a plda kedvrt, hogy egy knyvtri rendszert modelleznk, ahol az egyik
hasznlati eset a knyvek visszaadsnak folyamatt rja le. Ez lesz az alapeset, amely az
albbi tevkenysgeket tartalmazza:
Ebben a hasznlati esetben figyelmen kvl hagytuk annak megvizsglst, hogy a knyvet
vajon lejrati id eltt vagy az utn hoztk vissza. Egy lehetsges kiterjeszts hasznlati eset
az lenne, hogy a ksedelmes visszahozs miatt bntetst fizet a beiratkozott olvas. Jellje a
kiterjesztsi pontot <ksKnyv>:
- 110 -
7. tveszi a behozott knyvet.
ltalban azt mondhatjuk, hogy amennyiben tbb hasznlati eset viselkedsben ltezik
valami kzs, ezt a kzs rszt jelenthetjk meg egy kln hasznlati esetknt. Az
elmondottakbl kvetkezen csak akkor clszer az <<include>> kapcsolatot hasznlni, ha
rtelmesen megadhat ez az nmagban is megll kzs rsz. Az <<include>> kapcsolat egy
kicsit a fggvnyhvsra s a szubrutinok hasznlatra emlkeztet. A kliens hasznlati eset
futsa egy adott pontnl megll, a vezrls taddik a szolgltat hasznlati esetnek, majd
annak lefutsa utn ismt visszakerl a klienshez. Az <<include>> kapcsolat lehetv teszi,
hogy a szolgltat hasznlati eset tevkenysgeit bekeljk a kliens munkafolyamba.
Alapvet klnbsg az <<extend>> s az <<include>> kapcsolat kztt az, hogy mg az
<<include>> kapcsolatban a kliens hasznlati eset nem teljes a szolgltat hasznlati eset
nlkl, addig az <<extend>> kapcsolatban az.
- 111 -
14.2 Tevkenysgdiagram
- 112 -
1.5. bra: Sztvls s egyests a tevkenysgdiagramon
- 113 -
Ha az Olvas valamennyire jrtas az adatbzisok elmletben, akkor az albbi prhuzam segt
megrteni, mi a logikai kapcsolat az osztlyok s az objektumok kztt. Tegyk fel, adott egy
bank adatbzisban kt tbla (mskppen relci), az egyik az gyfelek tbla, s ebben
troljk az gyfelek nevt, cmt s szemlyi szmt, a msik tbla pedig a Szmlk, amely
tbla trolja az egyes szmlk szmlaszmt, egyenlegt s a szmlatulajdonos szemlyi
szmt. Ha objektum-orientlt szemlletben kzeltnk a krdshez, akkor mindkt tblnak
egy-egy osztly felel meg, a tblkban szerepl rekordoknak pedig egy-egy objektum Azaz
gy tekintnk az objektumokra, mint egyedi rekordokra. Az objektumoknak mezi vannak,
amelyekben rtkek szerepelnek. Egy rekordbeli adatelemet tulajdonsgnak vagy
attribtumnak neveznk. Ezek egyttesen jellemzik, karakterizljk az objektumot.
Programozsi nzpontbl az attribtum egy loklis vltoz, amely csak az adott
objektumhoz tartozik.
Osztlynv
Tulajdonsgok, jellemzk, attribtumok felsorolsa
Mveletek, metdusok felsorolsa
(Az UML megengedi tovbbi rekeszek hasznlatt is, de ezekre most nem trnk ki.)
Szmla
-szmlaSzm : int
-szmll : int = 0
+ltrehoz(szszm : int)
+krSzm : int
-nvel()
+krSzmll() : int
- 114 -
A harmadik rekeszben szerepl metdusok ltalnos alakja
A lthatsg lehet publikus (+), privt (-) vagy vdett (#). (Ezekrl rszletesebben a C# nyelv
bemutatsakor lesz sz.)
14.3.1 Kapcsolatok
Az asszocici egy strukturlis kapcsolat kt osztly (vagy hasznlati eset) kztt. brzolsa
vkony folytonos vonallal trtnik. (AS1 s AS2)
- 115 -
egy j szmtgppel tovbb hasznlhatjuk. Kicserlhetjk a perifrikat, a szmtgp ettl
meg hasznlhat marad. brzolsa vkony folytonos vonallal trtnik, amelynek egyik
vgn egy nyl, a msik vgn pedig egy res rombusz tallhat, a logikailag bvebb
(egsz) entitshoz kapcsoldva. (AG1 s AG2)
Az absztrakci tpus kapcsolat a fggsg azon esete, amikor a kliens elem sokkal
rszletesebb, mint a szolgltat, vagyis az absztrakci klnbz szintjein tallhatk. (RE1 s
RE2)
14.3.1.1 Asszocici
Formailag a kt osztlyt reprezentl tglalapot egy egyenes vonallal ktjk ssze. A vonal
fl egy ige (birtokol) kerlhet, al pedig egy igei szkapcsolat (birtokban van). Az ige utn
tehetnk egy jobbra mutat nylvget (), az igei szkapcsolat el pedig balra mutat
nylvget (), de ennek hasznlata nem ktelez.
- 116 -
A tglalapokhoz illeszkeden szerepeltet(het)jk a kapcsolat szmossgt. A fenti pldban
egy szemlynek lehet, hogy nincs gpkocsija, lehet, hogy egy van neki, s lehet, hogy tbb.
Megfordtva, egy gpkocsinak lehet egy tulajdonosa, de lehet tbb is. Ezrt szerepel a
Szemly osztly mellett 1..* , s a Gpkocsi osztly mellett 0..* szmossg.
ltalnosan, szmossg lehet
Az asszocicis kapcsolat lehet reflexv, azaz ugyanazt az osztlyt trstja sajt maghoz. Egy
szmtgp tetszleges szm szmtgppel kthet ssze.
- 117 -
1.9. bra: Plda asszocicira
Trsulsi kapcsolat nem csak kt, hanem hrom vagy tbb osztly kztt is lehetsges.
Tegyk fel, hogy iparosok dolgoznak egy csaldi hz ptkezsn. Az albbi tblzat mutatja,
hogy melyik iparos melyik helyisgben milyen munkt vgez.
- 118 -
1.11 bra: Hrom osztly asszocicija
A diagramon lthat nylvgi kis rombusz lehet res vagy teli. Az elbbi esetben gyenge vagy
osztott aggreglsrl, az utbbiban ers vagy sszetett aggreglsrl beszlhetnk. Gyenge
tpus aggregls esetn az objektum tbb egszhez is tartozhat, mg ers tpus
aggreglskor csak egyhez. Az elbbi esetben ha az egszt trljk, annak
kvetkezmnyeknt a rszek nem trldnek, mg ers tpus aggregls esetn igen. Ha egy
sportklub megsznik (FC Barcelona), akkor megsznnek a klub keretben mkd csapatok
(labdargs, kosrlabda, teke stb.) is, de ha a kosrlabda csapat megsznik, attl egy jtkos
mg jtszhat tovbb a tekecsapatban, hiszen egy jtkos egyszerre tbb csapatnak is tagja
lehet.
A virg a szirmok kompozcijaknt foghat fel. Egy virgon lehet, hogy nincs szirom
egyltaln, s lehet, hogy tbb is van. Egy adott szirom azonban csak egyetlen egy virghoz
tartozhat. Ezt msknt gy fogalmazhatjuk meg, hogy az sszetett aggreglsban a rszek az
- 119 -
egszben lnek. Az egsz oldalon a szmossg lehet 0 vagy 1, a rsz oldalon viszont
tetszleges intervallum.
A grafikus felhasznli fellet (GUI) sokfle ment, gombot, ikont s listt tartalmazhat.
14.3.1.4 ltalnosts
- 120 -
A plda azt mutatja, hogy a Gpjrm osztly a Kzlekedsi eszkz osztly alosztlya, s a
Teheraut osztly szuperosztlya. Az ltalnosts lehetv teszi a hierarchikus osztlyozst,
ami az UML modellezs egyik lnyeges eleme.
Gyakran ltezik valamilyen hasonlsg egy modell klnbz osztlyai kztt, kt vagy tbb
osztlynak lehetnek kzs attribtumai s/vagy mveletei, metdusai. Mivel felmerl az a
termszetes igny, hogy ne kelljen tbbszr is ugyanazt a programrszletet megrni, ezrt
kihasznlhatjuk az rkls mechanizmust. Amikor az A osztly rkl a B osztlytl, azt
mondjuk, hogy az A osztly a B osztly egy alosztlya, megfordtva, B az A szuperosztlya.
Az UML nyelvben az rkls jellsre a zrt vg res nylhegyet hasznljuk, s a nyl az
alosztlytl a szuperosztly fel mutat. Tegyk fel pldaknt, hogy a modellnkben van egy
Hallgat osztly s egy Tanr osztly. Az elbbi attribtumai kztt szerepel a
nv
telefonszm
email cm
hallgati azonost
vfolyam
utols flvi tlag
nv
telefonszm
email cm
beoszts
iroda
fogadra.
nv
telefonszm
email cm
- 121 -
14.3.1.5 Betokozs
Mint azt a korbbi fejezetben trgyaltuk, a betokozs vagy bezrs (encapsulation) egy
nagyon fontos tervezsi elv az objektum-orientlt alkalmazsfejlesztsben. A betokozs
fogalma leegyszerstve azt jelenti: nem szksges tudnunk, hogy valami miknt van
implementlva ahhoz, hogy kpesek legynk azt hasznlni. Ha ezt az elvet kvetjk, akkor a
fejleszts sorn brmikor megvltoztathatjuk egy komponens implementcijt anlkl, hogy
ez a rendszer ms komponenseit zavarlag rinten, feltve, hogy a szksges s a biztostott
interfszek vltozatlanok maradnak. A rszletek elrejtsnek elve s gyakorlata a mindennapi
let szmos terletn megfigyelhet. gy nem minden bankkrtya-tulajdonos tudja pontosan,
hogyan is mkdik egy krtyaautomata, de bzik abban, hogy az kiszolgltatja neki azt a
pnzmennyisget, amire aktulisan szksge van. Feltve persze, hogy rendelkezik azzal az
sszeggel a szmljn. A bank brmikor vltoztathat a krtyaautomata programjn,
tszervezheti az adatbzisait stb., de ez magt a szolgltatst nem fogja, pontosabban nem
szabad befolysolnia.
Egy osztlyt azrt zrunk be, mert biztostani akarjuk, hogy annak objektumai csak az
osztllyal egytt definilt mveleteken keresztl vltozhassanak. Ms szavakkal, a betokozs
megakadlyozza az objektumokhoz val kls hozzfrst, s azt, hogy az objektumokat meg
lehessen vltoztatni az osztly megalkotjnak szndka ellenben. Csak az osztly metdusai
mdosthatjk az osztlybeli objektumokat kzvetlenl.
A betokozs elve az egyik garancija annak, hogy nagymret szoftverrendszereket lehessen
ltrehozni, amelyekben viszonylag kevs hiba van. Ha ugyanis ez az elv nem rvnyeslne, s
a szoftver klnbz rszei kztt nagyfok kapcsolds llna fenn, akkor egy kicsi
vltoztats valamelyik modulban megkveteln a vltoztatsok tvezetst sok msik
modulban is, ami gyakorlatilag lehetetlenn tenn ezek nyomon kvetst.
14.3.2 Szekvenciadiagram
- 122 -
Tovbbi lehetsgek:
- 123 -
1.16 bra: Szekvenciadiagram egy knyvrendelsre
1. Vev
2. Bolt
3. Keresett knyv.
14.3.3 Kommunikcidiagram
- 124 -
megszerkesztse, s fordtva is igaz ez az llts. Arra a krdsre, mikor rdemes
szekvenciadiagramot, illetve kommunikcidiagramot hasznlni, azt vlaszolhatjuk, hogy az
elbbit akkor, ha csak az zenetek sorrendje az rdekes, mg az utbbit akkor, ha inkbb a
kommunikci mibenltt szeretnnk megrteni.
- 125 -
Az 1.17. brn szmokkal elltott zenetek a kvetkezk:
llapotgp-diagramok
Illusztrci gyannt tekintsnk egy igazn egyszer rendszert, egy villanykapcsolt. Ennek
kt llapota ltezik: a leoltott s a felgyjtott llapot, rviden LE s FEL. Azzal a logikus
feltevssel lnk, hogy a rendszer brmely idpillanatban e kt lehetsges llapot egyikben
tallhat. Ktfle ingert, esemnyt (esetnkben cselekvst) klnbztethetnk meg, amelyek
- 126 -
llapotvltozst idznek el a rendszerben, ez a leolts s a felgyjts esemnye. Klnsen
bonyolultabb rendszerek esetn clszer tblzatba rendezni a rendszerllapotokat, az
ingereket (esmnyeket) s az tmeneteket.
A diagramok msik eleme az tmenet, amely kt rendszerllapot kztt ltezik. Ezek egyikt
forrs-, msikt clllapotnak nevezzk. Az tmenetet jell nylra nem csak az esemnyt,
hanem annak logikai felttelt is rrhatjuk. gy az tmenet csak akkor kvetkezik be, ha a
logikai felttel rtke igaz.
Tegyk fel a plda kedvrt, hogy egy DVD-lejtsz a modellezend rendszer. Hrom
llapotot klnbztethetnk meg: lejtszs, sznet s lells. Az llapottblzat az albbi lesz:
Knnyen belthat, hogy Lells Lejtszs tmenet csak abban az esetben valsul meg, ha
van lemez a lejtszban.
- 127 -
15 Az alkalmazsfejleszts folyamata, szoftver-letciklus
modellek
- 128 -
A projektindts fzisa a gyakorlatban j pr lpst fog ssze. Ide tartozik minden olyan
tevkenysg, amely elkszti a tnyleges informatikai fejlesztst, ami a rendszerelemzssel
indul. A projektek elindtsnak tlete tbbflekppen merlhet fel. Taln leggyakrabban az a
motivcija egy informatikai fejleszts kezdemnyezsnek, hogy a felhasznlk
elgedetlenek a mkd rendszerrel ami lehet teljesen vagy csak rszben automatizlt
esetleg teljesen manulis , s javasoljk akr a rgi rendszer lnyeges mdostst, akr egy j
rendszer kiptst. A projektek elkezdsnek msik gyakori oka j zleti lehetsgek
felmerlse, amelynek rvn a vllalat versenyelnyre kpes szert tenni. Erre taln a legjobb
plda az e-business terlete.
Projektjavaslatok rsa
Projektek tervezse s temezse
Projektkockzatok azonostsa, elemzse s figyelse
Projektkltsgek figyelemmel ksrse
Projektek fellvizsglsa
Rsztvevk kivlasztsa s teljestmnyk rtkelse
Beszmoljelentsek rsa s prezentcik ksztse
(Ha tegyk fel egy feladat elvgzsnek emberi erforrs ignye 2000 ember - nap, akkor ez
azt jelenti, hogy pldul 20 fnek 5 hnapig, 100 fnek 4 htig, 400 fnek pedig egy htig
kellene dolgoznia a megoldson. Termszetesen a valsgban a feladat termszete, a
rszfeladatok egymsra plse kizrhat bizonyos kombincikat.)
- 129 -
Ezek a becslsek leggyakrabban a korbbi projektek tapasztalataira ptenek. Viszonylag
egyszer a helyzet, ha az j projekt a rendeltetst s mrett illeten hasonlt korbbi
fejlesztsekre. Br kt egyforma projekt nincs, mgis valszn, hogy az j vllalkozs
nagysgrendileg ugyanannyi erforrst fog a ignyelni, mint a korbbiak. A helyzet
lnyegesen bonyolultabb, ha olyan projekt beindtst tervezik, amelyhez hasonlt (legalbbis
a projekt rsztvevi) nem ismernek. Ilyenkor azt a taktikt szoktk alkalmazni, hogy
megksrlik a fejleszts vrhat folyamatt egszen apr rszekre bontani, s e rszekre kln-
kln ksztenek becslst mltbeli tapasztalatok felhasznlsval s klnfle
szoftvermrtkek alkalmazsval.
Legalbb ngy okot tudunk megnevezni, ami miatt a szoftvertervezk munkja nem olyan
jelleg, mint a hagyomnyos mrnkk:
1. A szoftver nem egy kzzelfoghat termk. Ha egy toronyhz ptse csszik, mind a
kivitelezk, mind a megrendelk ltjk az elmaradst. A szoftverprojekt csszst
sokkal nehezebb felismerni. Ezrt szoktak a projektek megrendeli ragaszkodni
ahhoz, hogy idrl-idre valamilyen kzbens termk (deliverable) tadsra kerljn,
br ez nem oldja meg teljesen a problmt.
2. A szoftver egyedlllan rugalmas termk. Ha egy pletet eredetileg krhznak
terveztek, menetkzben nehz azt mondjuk sportstadionn tpteni.
Szoftverprojektekben ilyen mret irnyvlts gyakran elfordul.
3. A szoftverprojektek jelentsen klnbzhetnek a korbbiaktl. Br a mrnki
tudomnyok fejldse is gyors, az mg sem kzelti meg az informatika fejldsi
temt. A gyakori technolgiai vltsok a korbbi projekttapasztalatokat rendkvl
hamar elavultt teszik.
- 130 -
4. Nehz megjsolni mikor fog egy szoftverprojekt fejlesztsi problmkba botlani. Az
informatikban mg nem rtk el azt a szintet, hogy a termktpusok s az ket
elllt szoftverfolyamatok kapcsolatt tkletesen megrtsk.
- 131 -
szoftverrendszer a megrendel, az gyfl, a vev valdi elvrsainak. A klnbsg tisztn
kivehet.
A telepts fzisban kerl sor egyebek mellett a rendszer tadsra amely lps meglepen
sokflekppen trtnhet , a vgleges dokumentci elksztsre s a felhasznlk
betantsra.
- 132 -
15.1 A rendszerfejleszts folyamatmodelljei
Meg kell itt jegyeznnk, hogy a fzisok szmt, illetve azok elnevezst illeten sokfle
konvenci van forgalomban. Az letciklus tagolst, az alkot fzisok szmt illeten az
informatikusok vlemnye eltr. Valjban nincs nagy jelentsge annak, hogy 5, 6 vagy 7
tevkenysget klnbztetnk-e meg. Ezt a krdst teht rugalmasan kell kezelni. Idnknt
tbb fzist ssze fogunk vonni, illetve egy-egy fzist tovbbi rszfzisokra fogunk bontani.
- 133 -
A tervezs fzisban az elzekben megfogalmazott kvetelmnyeket, problmkat kell
hardver/szoftver megoldss talaktani. Az informatikban a terv a megolds
specifiklst, egzakt lerst jelenti, az implementls pedig a rendszer fizikai meg-
valstst, kivitelezst, tesztelst s tadst. A megvalsts trtnhet a szksges
szoftver
megrsval vagy
megvsrlsval, esetleg
lzingelsvel.
- 134 -
modulteszt,
integrcis teszt,
rendszerteszt,
elfogadsi teszt;
installci,
dokumentci,
betants s trning.
1. PROJEKTINDTS
2. ELEMZS
3. RENDSZER- S
PROGRAMTERVEZS
4. PROGRAMRS
5. TESZTELS
6. TADS
7. ZEMELTETS
A vzess modell egy szigoran dokumentumvezrelt folyamat. Ez azt jelenti, hogy egyik
fzisbl a soron kvetkez fzisba csak a fzis teljes befejezse s a befejezst igazol
dokumentum elkszlte utn lehet tmenni. E modellben a lpsek sorrendje elre rgztett.
Az egsz folyamat a legaprbb rszletekig bezrlag szablyozott. Ez a tny, br lnyegesen
megnyjtja a fejleszts idtartamt, egyttal ltalban garancia is a minsgi munkra. A
tradcionlis vzess modellt (tovbbfejlesztseivel egytt) elssorban nagy mret s hossz
lettartam rendszerek fejlesztsre hasznljk. A szigor elrsok garantljk a j
minsg, br lass fejlesztst.
A klasszikus vzess modellt gyakran hasonltjk egy olyan bevsrlshoz, ahol a vevnek
mr az zletbe lpve pontosan meg kell mondania, mit hajt vsrolni, anlkl, hogy idt
- 135 -
hagynnak neki az alapos krbenzsre, az rak sszehasonltsra. Ebben a helyzetben nincs
md, pontosabban nagyon csekly lehetsg van csak arra, hogy menet kzben mdostsunk
eredeti elkpzelseinken.
15.1.2 A V modell
- 136 -
1 9
validci
2 8
verifikci II.
3 7
verifikci I.
4 6
Mint azt korbban tisztztuk, a validci annyit jelent, hogy meggyzdnk arrl, vajon a
helyes, azaz a megfelel rendszert ptjk-e, a verifikci pedig azt jelenti, hogy
meggyzdnk arrl, helyesen ptjk-e a rendszert. Az elfogadsi tesztels sorn gyzdik
meg a megrendel, hogy a szmra elksztett informatikai rendszer rendelkezik-e mindazon
funkcionlis s nem-funkcionlis tulajdonsgokkal s jellemzkkel, amelyeket tle elvrnak.
Ha nem rendelkezik ezekkel, akkor vissza kell trni az elemzs fzishoz, s azt jra el kell
vgezni.
- 137 -
valamely nagyobb befektetst ignyl dnts tmogatsra a lehetsges megold-
sokkal val ksrletezssel.
- 138 -
PROJEKTINDTS
ELEMZS
TERVEZS RENDSZERTERVEZS
MEGVALSTS MEGVALSTS
TESZTELS TESZTELS
ZEMELTETS
Ltezik a prototpusok hasznlatnak egy msik mdja is, melyre kt dolog jellemz:
lnyegben nincs elemz fzis,
a kezdeti prototpus alakul t, fejldik az itercik, az evolci sorn a vgtermkk.
- 139 -
A folytonos vltoztatsok miatt a rendszer szerkezete ltalban kevsb tlthat s
kvetkezetes. (Az egyetlen termk a programkd.)
A specifikci hinya a karbantartst igen megneheztheti s megdrgtja. (Ezrt az
gy fejlesztett rendszerek lettartama viszonylag rvid.)
Fontos nemfunkcionlis rendszerjellemzket, mint pldul a teljestmnyt,
biztonsgot, megbzhatsgot felldozzk a gyorsasg miatt, ami nehzkess teszi
ezen nem-funkcionlis kvetelmnyek utlagos teljestst.
Nem kszl komoly rendszerdokumentci, hiszen annak idignyessge lehetetlenn
tenn a vltoztatsok gyors realizlst.
A fenti problmk s htrnyok azonban nem jelentik azt, hogy az evolcis prototpusok
hasznlata bizonyos krlmnyek kztt ne lenne ajnlhat. Pldul szakrti rendszereket
vagy felsvezeti informatikai rendszereket ltalban ezzel a technikval fejlesztenek.
Lthat azonban, hogy igazn nagy mret s hossz lettartam rendszerek fejlesztsre ez a
technika nem alkalmas.
- 140 -
4. rtkels.
Cl lehet pldul a szoftverminsg radiklis javtsa, korltozs pedig, hogy e clt nagyobb
tkebefektets s komolyabb szervezeti vltoztatsok nlkl szeretnk elrni. A folytatsrl
meghozott dnts lehet az, hogy tovbbi 10 hnapig folytatjk a finanszrozst.
- 141 -
Alternatvk Kockzat-
tervezse (AT) elemzs (KE)
4. AT 4. KE
3. AT 3. KE
2. AT 2. KE
1. AT 1. KE
Kezds
Mkdsi Rszletes
terv terv
Elemzs
Tervezs
Program-
rs
V&V
Kvetkez
fzisok
megterve-
zse
V&V Tesztels
Elfogads
Fejleszts
rtkels V&V
- 142 -
alaposan tesztelt s sikeresen felhasznlt szoftverrszeket, komponenseket ksbbi hasonl
projektekben jra hasznostsk, s ebbl a clbl egy jl katalogizlt specilis
komponensknyvtrat hozzanak ltre. A tudomnyos szmtsokban mr a hatvanas vek
eleje ta hasznlnak n. szoftverknyvtrakat (NAG, IMSL), amelyek a leggyakrabban
alkalmazott numerikus matematikai eljrsok valamilyen programnyelvben (FORTRAN,
Pascal, C++) megrt s jrafelhasznlsra alkalmass tett forrskdjait tartalmazzk. A
kilencvenes vekre azonban ez ltalnos gyakorlatt kezdett vlni az zleti letben is, a
szoftver jrahasznlat (software reusability) pedig az egyik leginkbb kutatott informatikai
terlett lett.
A szoftver jrafelhasznlsa nem felttlenl jelenti azt, hogy az egyes rszeket vltoztats
nlkl alkalmazzk az elkvetkez projektekben, hanem inkbb arrl van sz, hogy megsznt
a semmibl jat teremts gyakorlata. Ehelyett korbbi rendszerek komponenseit vizsgljk
meg, vajon azok adaptlhatk-e, vagy ami mg szerencssebb, vltoztats nlkl
jrafelhasznlhatk-e a fejleszts sorn. Fontos megjegyezni, hogy ezt akkor is rdemes s
clszer megnzni, ha az j informatikai projekt egsze lnyegesen klnbznek is tnik a
korbbiakhoz kpest. (Az angol nyelv informatikai irodalomban a mdosts nlkli
jrafelhasznlsra szoks a black-boksz reuse, az adaptcit magban foglal vltozatra pedig
a white-box reuse kifejezsek hasznlata.)
- 143 -
az adott szitucira legalkalmasabb komponenst megtallni a nagy szm lehetsg kzl.
Tekintettel arra, hogy a knyvtrba egyre tbb ttel kerl, a kikeress gyorsasga elsrenden
fontos. Az egyik lehetsges megolds ahhoz hasonlt, amit a hagyomnyos knyvtrakban
alkalmaznak az ETO-szm (Egyetemes Tizedes Osztlyozs) bevezetsvel.
Egy tovbbi lehetsg az, hogy a komponensknyvtrban minden egyes ttelrl kszl egy
kttt lers, amelybl kiderl, hogy az adott programrszlet
milyen alkalmazsi terleten,
melyik programozsi nyelvben,
melyik opercis rendszerhez,
milyen objektumrl,
milyen funkcihoz
kszlt. Ehhez trsulhat egy rvid szveges lers a komponensrl szerzett tapasztalatokrl, a
megbzhatsgrl, a fejlesztkrl stb.
Egy tovbbi elvrs a visszakeres rendszerrel szemben az, hogy amennyiben tl sokan
keresnek eredmnytelenl egy szoftverkomponenst, akkor jelezze az ignyt a komponens
kifejlesztsre.
- 144 -
teszi. Ezek az adatok, mg ha nagy szrst is mutatnak, jl jelzik, hogy milyen elnykkel s
milyen extrakltsgekkel jr a szoftverkomponensek jrafelhasznlsa.
Elnyk
Kisebb kockzat kisebb a bizonytalansgi tnyez a fejlesztsi kltsgekben
Fokozott megbzhatsg mkd rendszerekben mr kiprblt s alaposan tesztelt
komponensek
Gyorsabb fejleszts s cskken kltsgek szignifikns javuls rhet el
Szabvnyoknak val megfelels szabvnyok implementlsa szabvnyos
jrafelhasznlhat komponensekben
Szakemberek hatkonyabb alkalmazsa komponensek s nem a szakemberek
jrafelhasznlsa kvnatos
Problmk
Nvekv karbantartsi kltsgek a rendszer vltoztatatsval az jrafelhasznlt
elemek inkompatibiliss vlhatnak
Az eszkztmogats hinya a CASE-eszkzkszletek nem tmogatjk az
jrafelhasznlson alapul szoftverfejlesztst
Komponensknyvtrak karbantartsa magas kltsggel jr a katalogizlsra s a
visszakeressre szolgl technikk hasznlata
Komponensek megtallsa s adaptlsa komoly jrtassg kell hozz
- 145 -
ugyangy felismerhetk a ksz alkalmazsi programcsomagokkal trtn fejleszts esetn is.
Tves az a vlekeds, hogy egy ksz alkalmazsi programcsomag megvsrlsa feleslegess
teszi az letciklus modellt, br ktsgtelenl jelentsen lervidtheti a fejleszts idtartamt.
Az installls lpse lnyegben abbl ll, hogy el kell dnteni, a programcsomag ltal knlt
opcikbl melyekre tartunk ignyt. Ez trtnhet pldul gy, hogy megadjuk, milyen
paramterekkel kvnjuk a rendszert hasznlni.
- 146 -
A szoftver nem teljesen illeszkedik a vllalat ltez zleti folyamataihoz, ezrt
gyakran kompromisszumokat kell ktni, s mdostani kell a folyamatokon.
Krlmnyes a programcsomagok adaptlsa j helyzetekhez, mivel pldul a
forrskd alig hozzfrhet.
Gyakran kell j hardvert, szoftvert vsrolni, mivel a meglvk nem illeszkednek a
vsrolt rendszerhez, vagy nem kompatibilisek azzal.
Br a ksz alkalmazsi szoftverek tbbfunkcisak, gyakran az egyes modulok ki-
dolgozottsga igen eltr sznvonal, s nhny esetben jelentsen gyengbb, mint a
sajt fejlesztsek.
Br a szoftverek eladsi ra viszonylag nem tl magas, legalbb is a sajt fejleszts
kltsgvel sszehasonltva, szmos rejtett kltsg jelentkezik az installlsnl. Egy
viszonylag friss felmrs szerint az installci teljes kltsge akr a tzszerese is lehet
a vtelrnak, klnsen akkor, ha a rendszernek nagyon sok kls illesztse van.
- 147 -
16 Fggelk
16.1 A C# kulcsszavai
Kulcssz Jelents
abstract Mdost, amely arra utal, hogy egy osztlyt csak egy msik
osztly seknt hasznlhatjuk.
as Tpusknyszerts.
base Az sosztly rtkeit s tpusait teszi elrhetv.
bool A logikai adattpus kulcsszava.
break Ciklus, feltteles utasts vagy esetsztvlaszts elhagysa.
byte A byte adattpus kulcsszava.
case Esetsztvlasztson bell egy eset (felttel).
catch A try-catch kivtelkezels rsze. A catch blokk segtsgvel
elkaphatjuk a kivteleket, s meghatrozott hibakezel
mveleteket futtathatunk le.
char A karakter adattpus kulcsszava.
checked Ellenrztt kdrszt azonost kulcssz.
class Osztlydefinci kulcsszava.
const Adattaghoz vagy vltozhoz kapcsold mdost, amely azt jelzi,
hogy a krdses adat tartalma nem vltoztathat.
continue Ugrs a kvetkez ciklusfordulra.
decimal A decimal adattpus kulcsszava.
default Cmke a switch esetsztvlaszt utastsban. Itt folytatdik a
vgrehajts, ha egyik case felttel sem teljesl.
delegate Referencia tpus, amely meghatrozott formj tagfggvnyeket
tartalmazhat.
do Ciklusszervez utasts.
double A double adattpus kulcsszava.
else Az if feltteles utasts msklnben gt jelzi.
enum Adattpus, amely elre meghatrozott lland rtkeket tartalmaz.
event Esemnyek, esemnykezelk definilsra szolgl kulcssz.
explicit A felhasznl ltal ltrehozott adattpusok talaktst jelz
kulcssz.
extern Programunkon kvl lev fggvny jelzse.
false Logikai hamis rtk.
finally A try-catch utasts rsze, a try blokk utn hajtdik vgre
fggetlenl attl, hogy a vgrehajts sorn fellpett-e hiba vagy
sem.
fixed Kezeletlen kdban ezzel a kulcsszval zrolhatjuk a
memriahivatkozsokat, hogy az automatikus szemtgyjt ne
szabadtsa fel azokat.
- 148 -
float A float lebegpontos adattpus kulcsszava.
for Ciklusszervez utasts.
foreach Ciklusszervez utasts.
goto A program egy adott cmkvel elltott utastsra lehet ugrani vele.
if A feltteles utasts kulcsszava.
implicit Kulcssz, amely automatikusan vgrehajthat tpustalaktst r le.
in A foreach kulcsszval egytt hasznland; Az in kulcssz
azonostja a gyjtemnyt vagy tmbt, amit a ciklus vgigjr.
int Az int adattpus kulcsszava.
interface Olyan hivatkozst definilunk vele, amely jelzi tagmetdusait, de
nem rja le azokat.
internal Hozzfrs mdost. Lehetv teszi, hogy az adott adattpust csak
az azonos gyjtemnyben lv fjlokbl rhessk el.
is Objektum tpusvizsglathoz hasznlt kulcssz.
lock Kritikus kdrszek jellse. Az ilyen kdrsz egyszerre csak egy
szl szmra lesz elrhet.
long A long adattpus kulcsszava.
namespace Kulcssz, amellyel tpusainkat csoportosthatjuk. Segt a
nvtkzs elkerlsben.
new Objektum ltrehozsa.
null rtk, amely azt jelzi, hogy a hivatkozs nem mutat semmire.
object A .NET keretrendszer System.Object osztlyn alapul tpus. A
C#-ban minden ms adattpus ebbl szrmazik.
operator Az osztlyok s struktrk mveleteinek ltrehozsra vagy
tlterhelsre szolgl kulcssz.
out Csak kimen metdus-paramter jelzse.
override Virtulis metdus felvltst elidz felldefinilsa a
leszrmazott osztlyban.
params Vltoz tagltszm paramterlista(rsz) jelzse.
private Lthatsg mdost.
protected Lthatsg mdost.
public Lthatsg mdost.
readonly Adattag mdost. Azt jelzi, hogy a kezdeti rtkads utn a tag
tartalma mr nem vltoztathat.
ref Cm szerinti paramtertads jelzje a formlis paramternl.
return Kilps a fggvnybl s a visszatrsi rtk megadsa.
sbyte Az sbyte adattpus kulcsszava.
sealed Osztlymdost, amely meggtolja, hogy az osztlybl tovbbi
osztlyokat szrmaztassanak.
short A short adattpus kulcsszava.
sizeof Adattpus mretnek meghatrozsa.
stackalloc Kulcssz, amellyel memrit foglalhatunk a veremben. A
visszakapott mutat nem tartozik az automatikus szemtgyjts
hatkrbe.
static Lthatsg mdost.
- 149 -
string A string adattpus kulcsszava.
struct Adattpus, amely adatokat s tagfggvnyeket egyarnt
tartalmazhat.
switch Az esetsztvlaszt utasts kulcsszava.
this Az aktulis struktrt vagy objektum-pldnyt jelli.
throw Kivtelt generl utasts.
true Logikai igaz.
try A kivtelkezel blokk vdett utastsait tartalmaz blokkjt jelz
kulcssz.
typeof Objektum tpust adja vissza, .NET formtumban.
uint Az uint adattpus kulcsszava.
ulong Az ulong adattpus kulcsszava.
unchecked Azt jelzi, hogy a hatskrbe utalt egsz tpus mveleteknl
mellzni kell a tlcsorduls-vizsglatot.
unsafe Olyan kdrszletet jell, amelyez a kezelt (managed) krnyezetben
nem biztonsgos vgrehajtani (pl. mutatk hasznlatnl).
ushort Az ushort adattpus kulcsszava.
using lnevek ltrehozsa nvterekhez.
virtual Virtulis metdus jellse.
void Metdusoknl jelzi, hogy nincs visszatrsi rtkk.
while Ciklusszervez utasts.
- 150 -