Tartalomjegyzék Elsõ hét 1. nap
Ismerkedés a C#-tel
Mi is az a C#? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 A programozás elõkészületei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 A programfejlesztési folyamat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 A forráskód elkészítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 A szerkesztõ használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 A forrásfájlok elnevezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 A C# program végrehajtásáról . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 A C# forráskód fordítása köztes nyelvre . . . . . . . . . . . . . . . . . . . . . . . . 9 A fejlesztési folyamat utolsó lépése . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Elsõ C# programunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 A Hello.cs beírása és lefordítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 A fordítási hibákról . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Az elvi hibákról . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 A C# programok típusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Elsõ ablakos alkalmazásunk elkészítése . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Miért éppen a C#? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 A C# objektumközpontú . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 A C# moduláris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 A C# népszerûsége egyre nõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 A .NET madártávlatból . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 A C# és az objektumközpontú programozás . . . . . . . . . . . . . . . . . . . . . . . 23 Az objektumközpontúság alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Objektumok és osztályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1. ujjgyakorlat Kódszövegek sorszámozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Az elsõ ujjgyakorlat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2. nap
A C# programok elemei
A C# alkalmazások felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 A megjegyzésekrõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Egysoros megjegyzések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Többsoros megjegyzések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
iv
C# mesteri szinten 21 nap alatt
Dokumentációs megjegyzések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 A C# alkalmazások alapelemei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Formázás térközökkel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Kulcsszavak – a C# nyelv alapkövei . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Literálok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Azonosítók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 A C# alkalmazások szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Utasítások és kifejezések a C#-ben . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Az üres utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 A 2.1. kódszöveg elemzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 1–4. sor: megjegyzések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5., 7., 13., 17., 21. és 23. sor: térköz . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6. sor: a using utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 8. sor: osztálydeklaráció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 9., 11., 26. és 27. sor: írásjelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 10. sor. Main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 14–16. sor: deklarációk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 20. sor: értékadó utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 24–25. sor: függvényhívás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Adattárolás változókkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Adatok tárolása a változókban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 A változók elnevezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 A változók használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Változók bevezetése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Értékadás a változóknak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Változók kezdõérték nélkül . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 A memóriáról . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 A C# adattípusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Számváltozó-típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Egész adattípusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Lebegõpontos értékek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Pontosabb adatok a decimal típussal . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Logikai értékek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Ellenõrzött és ellenõrizetlen kódok . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Adattípusok a .NET környezetben . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Literálok vagy változók? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Logikai literálok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Karakterlánc literálok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Állandók létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Hivatkozási típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
C# mesteri szinten 21 nap alatt
3. nap
Mûveletek a C#-ben
Alapvetõ adatok megjelenítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Más adatok megjelenítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Változók értékének módosítása mûveletekkel . . . . . . . . . . . . . . . . . . . . . 77 Egyváltozós mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Kétváltozós mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Háromváltozós mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Az írásjelek szerepe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Értékek mozgatása az értékadó mûvelettel . . . . . . . . . . . . . . . . . . . . . . . . 79 Matematikai mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Összeadás és kivonás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Szorzás, osztás és maradékos osztás . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Összetett aritmetikai értékadó mûveletek . . . . . . . . . . . . . . . . . . . . . . 82 Egyváltozós aritmetikai mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Összehasonlítás viszonyító mûveletekkel . . . . . . . . . . . . . . . . . . . . . . . . . 85 Az if utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Feltételes logikai mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Logikai bitmûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Típusmûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 A sizeof mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 A feltételes mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 A mûveletek kiértékelési sorrendje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 A kiértékelési sorrend megváltoztatása . . . . . . . . . . . . . . . . . . . . . . . . 94 Adattípusok átalakítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Típusléptetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Kiegészítés – csak bátraknak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Változók tárolása a memóriában . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Az eltolási mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Bitmûveletek logikai mûveletekkel . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Bitváltás a logikai NOT mûvelettel . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4. nap
A program mûködésének szabályozása
A program menetének szabályozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Kiválasztó utasítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Ismét az if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 A switch utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Egy kód – több eset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Több case utasítás végrehajtása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 A switch utasítások vezérlõ típusai . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Bejáró utasítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 A while utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
v
vi
C# mesteri szinten 21 nap alatt
Kiugrás a while utasításból és a ciklus folytatása . . . . . . . . . . . . . . . . 118 A do utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 A for utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 A foreach utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Ismét a break és a continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Az „átkos” goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Utasítások címkézése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 A vezérlõ utasítások egymásba ágyazása . . . . . . . . . . . . . . . . . . . . . . . . 128 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
2. ujjgyakorlat Kitalálós játék – a Guess program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Kitalálós játék ablakkal – a WinGuess program . . . . . . . . . . . . . . . . . . . 134
5. nap
A C# programozás lelke: az osztályok
Az objektumközpontú programozás alapjai . . . . . . . . . . . . . . . . . . . . . . 140 Egységbe zárás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Öröklés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Többalakúság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Újrahasznosítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Objektumok és osztályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Osztályok meghatározása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Osztályok bevezetése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Az osztály tagjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Az adattagok, vagy mezõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Az adattagok elérése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Az adattagok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Osztályok az adattagok szerepében . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Beágyazott típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Statikus változók használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Az alkalmazás osztálya . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Tulajdonságok létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 A névterekrõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Beágyazott névterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
6. nap
Mûveletek egységbe zárása: tagfüggvények
A tagfüggvényekrõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 A tagfüggvények használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 A tagfüggvények szerepe a program mûködésében . . . . . . . . . . . . . . . . 167
C# mesteri szinten 21 nap alatt
A tagfüggvények felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 A tagfüggvények fejléce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Értékek visszaadása tagfüggvényekbõl . . . . . . . . . . . . . . . . . . . . . . . 168 A tagfüggvények elnevezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 A tagfüggvény törzsének felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . 169 A tagfüggvények meghívása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Adattagok elérése tagfüggvényekbõl . . . . . . . . . . . . . . . . . . . . . . . . . 170 Értékátadás tagfüggvények számára . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Statikus tagfüggvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 A paraméterek elérési jellemzõi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Az osztály-tagfüggvények típusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Tulajdonságelérési tagfüggvények . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Destruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
7. nap
Összetett adatszerkezetek: struktúrák, felsorolások és tömbök
Struktúrák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Az osztályok és struktúrák közti különbség . . . . . . . . . . . . . . . . . . . . 194 A struktúrák tagjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Struktúrák beágyazása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 A struktúrák tagfüggvényei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 A struktúrák konstruktorai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 A struktúrák destruktorai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Felsorolások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 A felsorolások alapértelmezett értékeinek módosítása . . . . . . . . . . . . 205 A felsorolás alapjául szolgáló típus módosítása . . . . . . . . . . . . . . . . . 207 Tömbök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Tömbök létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Többdimenziós tömbök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Különbözõ méretû tömböket tartalmazó tömbök . . . . . . . . . . . . . . . 216 A tömbök hosszának és határainak vizsgálata . . . . . . . . . . . . . . . . . . 217 Tömbök használata osztályokban és struktúrákban . . . . . . . . . . . . . . 219 A foreach utasítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Ismétlés A WR01.cs program kódja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Az XML dokumentáció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
vii
viii
C# mesteri szinten 21 nap alatt
A kód madártávlatból . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 A Main tagfüggvény . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 A GetMenuChoice tagfüggvény . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 A fõmenü pontjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 A point struktúra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 A line osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Egyéb osztályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Második hét 8. nap
A tagfüggvényekhez való hozzáférés kifinomult módozatai
A tagfüggvények túlterhelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Függvények túlterhelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Konstruktorok túlterhelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 A tagfüggvények aláírása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Változó számú paraméter használata . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 A params kulcsszó használata több különbözõ adattípussal . . . . . . . 254 A params kulcsszó mûködésének még részletesebb vizsgálata . . . . . 256 A Main tagfüggvény használata és a parancssori paraméterek kezelése 256 Hatókörök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Munka helyi hatókörrel rendelkezõ változókkal . . . . . . . . . . . . . . . . 259 Az osztályváltozók és a helyi változók megkülönböztetése . . . . . . . . . . 261 Osztály hatókörének megváltoztatása módosítókkal . . . . . . . . . . . . . 262 Objektumok nélküli osztályok létrehozása . . . . . . . . . . . . . . . . . . . . . . . 262 Privát konstruktorok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 A névterek használatának átismétlése . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 A névtér elnevezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 A névtér bevezetése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 A using kulcsszó és a névterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 A teljesen meghatározott névtérnevek rövidítése . . . . . . . . . . . . . . . . 268 Álnevek használata a using segítségével . . . . . . . . . . . . . . . . . . . . . . 269 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
9. nap
Problémák kezelése a programon belül: kivételek és hibák
A problémák kezelésével kapcsolatos alapfogalmak . . . . . . . . . . . . . . . 274 A hibák kiküszöbölése logikus kódolással . . . . . . . . . . . . . . . . . . . . . 275 Mi okozhat kivételt? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Kivételkezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 A try és a catch használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 A kivétellel kapcsolatos információ elfogása . . . . . . . . . . . . . . . . . . . . . . 279 Több catch használata egyetlen try paranccsal . . . . . . . . . . . . . . . . . 280 A kivételek kezelésének sorrendje . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 A végsõ megoldás: a finally kulcsszó . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
C# mesteri szinten 21 nap alatt
A leggyakoribb kivételek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Saját kivételosztályok megadása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Saját kivételek kiváltása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Kivételek továbbdobása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Ellenõrzött és ellenõrizetlen parancsok használata . . . . . . . . . . . . . . . . . 298 A checked és unchecked kulcsszavak használatának különbözõ formái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Mi a nyomkövetés? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 A hibák típusainak áttekintése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 A hibák felderítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 A formai hibák megtalálása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 A futásidejû hibák megtalálása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 A kód követése többszöri átolvasással . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Az elõfeldolgozó utasításainak használata . . . . . . . . . . . . . . . . . . . . . . . . 303 Az elõfeldolgozással kapcsolatos deklarációk . . . . . . . . . . . . . . . . . . 304 Értékek megadása a parancssorban . . . . . . . . . . . . . . . . . . . . . . . . . . 307 A #define és az #undef hatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Feltételes feldolgozás (#if, #elif, #endif) . . . . . . . . . . . . . . . . . . . . . . . 308 Hibák és figyelmeztetések kezelésének elõírása a kódban (#error, #warning) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 A sorszámok megváltoztatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 A régiók rövid áttekintése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Nyomkövetõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
3. ujjgyakorlat 10. nap Már meglevõ kódrészletek újrahasznosítása öröklés segítségével Az öröklés alapja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Az öröklés egyszerû formája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Az öröklés mûködés közben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Alaptagfüggvények használata öröklött tagfüggvényekben . . . . . . . . 344 A többalakúság felfedezése és a származtatott osztályok . . . . . . . . . . . . 344 Munka virtuális tagfüggvényekkel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Munka elvont osztályokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Osztályok lezárása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Az Object, avagy a legvégsõ alaposztály . . . . . . . . . . . . . . . . . . . . . . . . . 356 Az Object osztály tagfüggvényeinek áttekintése . . . . . . . . . . . . . . . . 356 Becsomagolás és kicsomagolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 Az is és as kulcsszavak használata – osztályok típusának átalakítása . . . 360 Az is kulcsszó használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Az as kulcsszó használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Különbözõ objektumtípusok tömbjei . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
ix
x
C# mesteri szinten 21 nap alatt
Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
11. nap
Információ formázása és bekérése
A konzolon keresztül megvalósított bemenet és kimenet . . . . . . . . . . . . 374 Az információ formázása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Számok formázása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 A dátum és az idõ formázása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Felsorolások tagjainak megjelenítése . . . . . . . . . . . . . . . . . . . . . . . . . 388 A karakterláncokkal végezhetõ kifinomultabb mûveletek . . . . . . . . . . . . 390 Karakterláncokkal kapcsolatos tagfüggvények . . . . . . . . . . . . . . . . . 391 @ – a különleges karakterlánc-formázó . . . . . . . . . . . . . . . . . . . . . . . 394 Karakterláncok építése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Információ bekérése a konzolról . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 A Read tagfüggvény használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 A ReadLine tagfüggvény használata . . . . . . . . . . . . . . . . . . . . . . . . . . 400 A Convert osztály használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
12. nap
Bevezetés az objektumközpontú programozásba: felületek
Felületek: elõzetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Az osztályok és felületek kapcsolata . . . . . . . . . . . . . . . . . . . . . . . . . 410 A felületek használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Miért használjunk felületeket? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Felületek meghatározása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Felület meghatározása tagfüggvényekkel . . . . . . . . . . . . . . . . . . . . . . 413 Tulajdonságok megadása a felületeken belül . . . . . . . . . . . . . . . . . . 416 Több felület használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Kifejezett felülettagok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Új felületek levezetése már létezõ felületekbõl . . . . . . . . . . . . . . . . . . . . 423 Felületek tagjainak elrejtése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
13. nap
A program válaszoló képességének kialakítása képviselõk, események és indexelõk segítségével
Hogyan használjunk egy indexelõt? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 A képviselõk felfedezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
C# mesteri szinten 21 nap alatt
Események használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Események létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Az eseményképviselõk mûködése . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Származtatás az EventArgs osztályból . . . . . . . . . . . . . . . . . . . . . . . . 440 Az Event osztály kódjának használata . . . . . . . . . . . . . . . . . . . . . . . . 442 Eseménykezelõk létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Az események és eseménykezelõk egymáshoz rendelése . . . . . . . . . 444 A bemutatott elemek egyesítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Több eseménykezelõ egyetlen eseményhez . . . . . . . . . . . . . . . . . . . 447 Az eseménykezelõ eltávolítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
14. nap
Parancsaink végrehajtatása mûveletekkel: túlterhelés
Ismétlés: függvények túlterhelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Mûveletek túlterhelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Túlterhelt mûveletek létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 Az alapvetõ kéttényezõs matematikai mûveletek túlterhelése . . . . . . 461 Az alapvetõ egytényezõs matematikai mûveletek túlterhelése . . . . . . 464 Az összehasonlító és logikai mûveletek túlterhelése . . . . . . . . . . . . . 469 A logikai mûveletek túlterhelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 A túlterhelhetõ mûveletek összefoglalása . . . . . . . . . . . . . . . . . . . . . 477 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Ismétlés Felsorolások a kártyák számára . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 A Card típus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 A Deck osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 A játék . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Az egész pakli áttekintése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Harmadik hét 15. nap
A .NET alaposztályok eljárásai
Osztályok a .NET környezetben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 A közös nyelvleírás (CLS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 A típusok szervezése névterekkel . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Az ECMA szabványok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 Tájékozódás a környezet osztályairól . . . . . . . . . . . . . . . . . . . . . . . . 499 Idõzítõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
xi
xii
C# mesteri szinten 21 nap alatt
Könyvtár- és rendszeradatok kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Matematikai eljárások használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 Fájlkezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Fájlok másolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 A fájlok adatai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Egyszerû adatfájlok kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Ismerkedés a folyamokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 A fájlolvasás menete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Fájlok létrehozása és megnyitása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Szöveg fájlba írása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 Szöveg olvasása fájlból . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Bináris adatok fájlba írása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Bináris adatok olvasása fájlokból . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Más fájltípusok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
16. nap
Windows ablakok készítése
Ablakok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Windows ablakok készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Fordítási beállítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Elsõ Windows ablakos programunk elemzése . . . . . . . . . . . . . . . . . . 530 Az Application.Run tagfüggvény mûködése . . . . . . . . . . . . . . . . . . . 531 Ablakok testreszabása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 Ablakok címsorának testreszabása . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 Ablakok átméretezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 Az ablak színeinek és hátterének megváltoztatása . . . . . . . . . . . . . . . 538 Az ablak szegélyének módosítása . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Vezérlõk elhelyezése az ablakon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Címkék és szövegmegjelenítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 Hogyan használjuk a vezérlõket? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 Gombok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 Szövegmezõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 Egyéb vezérlõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
17. nap
Windows alkalmazások készítése
Választógombok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 Választógombok csoportba rendezése . . . . . . . . . . . . . . . . . . . . . . . . 564 Tárolók használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
C# mesteri szinten 21 nap alatt
Listamezõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 Elemek hozzáadása a listához . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 Menük az ablakokon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 Egyszerû menü készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 Több menü készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 Bejelölhetõ menüelemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 Helyi menü készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 Elõugró párbeszédablakok és más ablakok megjelenítése . . . . . . . . . . . 590 A MessageBox osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 A Microsoft Windows beépített párbeszédablakainak használata . . . 593 Saját párbeszédablak készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
4. ujjgyakorlat Az amõba kódja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
18. nap
Adatbázis-kezelés az ADO.NET-tel
Alapfogalmak az adatbázis-kezelésben . . . . . . . . . . . . . . . . . . . . . . . . . . 618 Szóhasználati eligazítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 Az ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 Kapcsolat és mûveletek az adatbázisokkal . . . . . . . . . . . . . . . . . . . . . . . 620 Az adatbázis-kapcsolat kiépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 Parancsok végrehajtása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 Adatok kiolvasása a DataReader használatával . . . . . . . . . . . . . . . . . 623 Adatbázisok bezárása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 A tanultak áttekintése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 Adatok beillesztése, frissítése és törlése . . . . . . . . . . . . . . . . . . . . . . . . . 629 Más adatbázis-szerkezetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
19. nap
Távoli eljárások használata: webszolgáltatások
Webes alkalmazások készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 A komponens fogalma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 Webszolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 Egyszerû komponens készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 Webszolgáltatás készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 Köztes webkiszolgáló készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 Webszolgáltatás meghívása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
xiii
xiv
C# mesteri szinten 21 nap alatt
Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
5. ujjgyakorlat A webszolgáltatási fájl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 A köztes fájl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 A szolgáltatás használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
20. nap
Webes alkalmazások készítése
Hagyományos webes alkalmazások készítése . . . . . . . . . . . . . . . . . . . . . 660 Webes ûrlapok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 Egyszerû ASP.NET alkalmazás készítése . . . . . . . . . . . . . . . . . . . . . . 662 ASP.NET vezérlõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
21. nap
A visszatekintésrõl és a jellemzõkrõl
Elmélkedés a visszatekintésrõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 A jellemzõkrõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 Mik azok a jellemzõk? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 Jellemzõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 Több jellemzõ használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 Paraméterrel rendelkezõ jellemzõk . . . . . . . . . . . . . . . . . . . . . . . . . . 686 Saját jellemzõk meghatározása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 A jellemzõhöz társított adatok elérése . . . . . . . . . . . . . . . . . . . . . . . . 692 Összeáll a kép . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 Egyszer és többször használható jellemzõk . . . . . . . . . . . . . . . . . . . . 696 Elmélkedés a C# jövõjérõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 Általános adatszerkezetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 Adatbejárás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 Részleges típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 Névtelen tagfüggvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 Gratulálunk! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 Kérdések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 Teszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
Ismétlés Alkalmazzuk tudásunkat! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 Mutassuk meg tudásunkat! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
Függelékek Tárgymutató
705 729