Tartalomjegyzék Köszönetnyilvánítás Bevezetés
xvii
Honnan kezdjük a könyv olvasását? A könyvben használt konvenciók és egyéb jelölések Konvenciók Egyéb jelölések Online kiegészítő tartalom Technológiai frissítések Rendszerkövetelmények Kibocsátás előtti szoftver A gyakorlófájlok telepítése és használata A gyakorlófájlok telepítése Az SQL Server Express beállítása A gyakorlófájlok használata A gyakorlófájlok eltávolítása Támogatás Észrevételek
I. rész:
1.
2.
xv xvii xix xix xx xx xx xx xxi xxi xxi xxii xxiii xxviii xxix xxix
A Microsoft Visual C# és a Microsoft Visual Studio 2005 bemutatása
Üdvözöljük a C# világában!
3
Ismerkedés a Visual Studio 2005 fejlesztői környezettel Az első program megírása Névterek használata Windows Forms alkalmazás készítése 1. fejezet − Gyorsreferencia
3 7 12 14 23
Változók, operátorok és kifejezések használata
25
Az utasítások értelmezése Azonosítók használata Kulcsszavak azonosítása Változók használata A változók elnevezése Változók deklarálása
25 26 26 27 28 28
Tartalomjegyzék
3.
4.
vi
Primitív adattípusok használata Primitív adattípusok értékeinek megjelenítése Aritmetikai operátorok használata Műveletek típusa és eredménye Az aritmetikai operátorok vizsgálata A precedencia szabályozása Kifejezések kiértékelése asszociativitás segítségével Változók értékeinek csökkentése és növelése Prefix és Postfix 2. fejezet − Gyorsreferencia
29 30 34 35 36 39 40 40 41 43
Metódusok írása és hatáskör alkalmazása
45
Metódusok deklarálása A Metódus Deklarációs Szintaxis (Method Declaration Syntax) megadása Return utasítások írása Metódusok hívása A Metódus Hívás Szintaxis megadása Hatáskör alkalmazása Helyi hatáskör definiálása Osztályhatáskör meghatározása Metódusok túlterhelése Metódusok írása 3. fejezet − Gyorsreferencia
45 46 47 49 49 52 52 53 53 54 63
Döntési utasítások alkalmazása
65
Bool változók deklarálása Logikai műveleti jelek alkalmazása Egyenlőségvizsgáló és relációs operátorok A feltételes logikai operátorok Az operátorprecedencia és az asszociativitás összefoglalása Döntéshozatal if utasítások segítségével Az if utasítás szintaxisa Blokkok alkalmazása utasítások csoportosítására Kaszkád if utasítások Switch utasítások alkalmazása A switch utasítások szintaxisa A switch utasítás szabályai Switch utasítások írása 4. fejezet − Gyorsreferencia
65 66 66 67 69 70 70 71 72 76 76 77 79 81
Tartalomjegyzék
5.
6.
Összetett értékadás és iteráló utasítások alkalmazása
83
Összetett értékadási operátorok alkalmazása While utasítások írása For utasítások írása A for utasítás hatásköre Do utasítások írása 5. fejezet − Gyorsreferencia
83 85 89 91 92 101
A hibák és kivételek kezelése
103
Hibakezelés Kódblokkok, hibakezelő blokkok és a kivételek elfogása A kivétel kezelése Kezeletlen kivételek Több catch-kezelő használata Több kivétel észlelése Ellenőrzött és ellenőrizetlen egész aritmetika használata Ellenőrzött utasítások írása Ellenőrzött kifejezések írása Kivételek dobása A finally blokk használata 6. fejezet − Gyorsreferencia
103 104 105 105 106 107 111 112 112 114 119 121
II. rész: A C# nyelv elemei 7.
Osztályok és objektumok létrehozása, valamint kezelése
125
Az osztályozás alapja Az egységbe zárás célja Osztály definiálása és használata Az elérhetőség vezérlése A konstruktorok használata Konstruktorok túlterhelése Statikus metódusok és adatok Osztott mező létrehozása Statikus mező létrehozása a const kulcsszó segítségével 7. fejezet − Gyorsreferencia
126 126 127 128 129 130 138 139 140 144
vii
Tartalomjegyzék
8.
9.
Értékek és referenciák
147
Int változók és osztályok másolása A ref és az out paraméterek használata Ref paraméterek létrehozása Out paraméterek létrehozása Hogyan szerveződik a számítógép memóriája A verem és a halom használata A System.Object osztály Bedobozolás Kidobozolás 8. fejezet − Gyorsreferencia
147 152 153 154 156 157 158 159 159 164
Értéktípusok létrehozása felsorolásokkal és struktúrákkal
165
Munka a felsorolt típussal A felsorolt típus deklarálása A felsorolt típus alkalmazása A felsorolási literálok értékének megadása A felsorolás mögöttes típusának kiválasztása Struktúratípusok használata A struktúratípusok deklarálása A struktúrák és az osztályok különbségeinek áttekintése A struktúraváltozók deklarálása A struktúrák inicializálásának áttekintése A struktúraváltozók másolása 9. fejezet − Gyorsreferencia
165 166 166 167 168 171 172 173 175 176 177 182
10. Munka tömbökkel és gyűjteményekkel Mi a tömb? A tömbváltozók deklarálása Tömbpéldányok létrehozása A tömbváltozók inicializálása Az egyes tömbelemek elérése Lépkedés a tömb elemein A tömbök másolása Mik a gyűjteményosztályok? Az ArrayList osztály A Queue osztály A Stack osztály A Hashtable osztály A SortedList osztály A tömbök és gyűjtemények összehasonlítása Kártyajáték írása gyűjteményosztályokkal 10. fejezet − Gyorsreferencia viii
183 183 184 184 185 186 187 188 190 191 193 194 195 196 197 197 203
Tartalomjegyzék
11. A paraméterek áttekintése. Tömbök
205
A tömbargumentumok használata A params tömbök deklarálása A params object[] tömb használata A params tömbök használata 11. fejezet − Gyorsreferencia
206 207 209 211 215
12. Öröklés
217
Mi az öröklés? Az öröklés használata Ősosztályok és származtatott osztályok Ősosztálykonstruktorok hívása Osztályok megfeleltetése New metódusok Virtuális metódusok Override metódusok Védett hozzáférés Interfészek létrehozása Az interfész szintaxisa Interfészekkel kapcsolatos megszorítások Interfész megvalósítása Hivatkozás egy osztályra annak interfészén keresztül Munka több interfésszel Absztrakt osztályok Lezárt osztályok Lezárt metódusok Az örökléshierarchia kiterjesztése Kulcsszó-kombinációk összefoglalása 12. fejezet − Gyorsreferencia
217 218 218 220 221 222 223 226 227 228 229 229 230 232 233 233 236 236 237 244 246
13. A szemétgyűjtés és az erőforrás-kezelés használata
249
Egy objektum élete és korszakai Destruktorok írása Miért érdemes a szemétgyűjtőt használni? Hogyan működik a szemétgyűjtő? Ajánlások Erőforrás-kezelés Felszabadító metódusok Kivételbiztos felszabadítás A using utasítás A Dispose metódus hívása egy destruktorból A kód kivételbiztossá tétele 13. fejezet − Gyorsreferencia
249 250 252 253 254 255 255 256 257 258 260 263
ix
Tartalomjegyzék
III. rész: Komponensek létrehozása 14. Mezők elérése tulajdonságok segítségével Mezők és metódusok összehasonlítása Mik a tulajdonságok? Tulajdonságok használata Csak olvasható tulajdonságok Csak írható tulajdonságok Tulajdonságok elérhetősége Tulajdonságmegkötések Interfésztulajdonságok deklarálása Tulajdonságok használata Windows-alkalmazásban 14. fejezet − Gyorsreferencia
15. Indexelők használata Mi az indexelő? Indexelőket nem használó példa Ugyanez a példa indexelők használatával Az indexelő-hozzáférők megértése Indexelők és tömbök összehasonlítása Indexelők használata interfészekben Indexelők használata Windows-alkalmazásokban 15. fejezet − Gyorsreferencia
16. Metódusreferenciák és események Metódusreferenciák deklarálása és használata Az automatizált gyár példája A gyár megvalósítása metódusreferenciák nélkül A gyár megvalósítása metódusreferenciával Metódusreferenciák használata Névtelen metódusok és metódusreferenciák Metódusillesztő létrehozása Névtelen metódus használata illesztőmetódusként A névtelen metódusok jellemzői Értesítésküldés eseményeken keresztül Esemény deklarálása Feliratkozás egy eseményre Leiratkozás az eseménykezelők listájáról Esemény kiváltása A GUI-események megértése Események használata 16. fejezet − Gyorsreferencia x
267 268 270 271 272 272 273 274 276 277 281
283 283 283 285 287 288 290 292 298
301 302 302 303 303 306 309 310 310 311 312 312 313 314 314 315 317 320
Tartalomjegyzék
17. A generikus típusok bevezetése Az objektumok problémája A megoldás: a generikus típusok Generikus típusok kontra általánosított osztályok A generikus típusok és a megszorítások Generikus osztály létrehozása A bináris fák elmélete Bináris fa osztály létrehozása generikus típusokkal Generikus metódus létrehozása Generikus metódus definiálása bináris fa készítésére 17. fejezet − Gyorsreferencia
18. Gyűjtemények felsorolása A gyűjtemény elemeinek felsorolása Felsoroló manuális megvalósítása Az IEnumerable interfész megvalósítása A felsoroló megvalósítása iterátor segítségével Egyszerű iterátor Felsoroló definiálása a Tree
osztályhoz iterátor segítségével 18. fejezet − Gyorsreferencia
19. Operátortúlterhelés Az operátorok működésének megértése Operátormegszorítások Túlterhelt operátorok Szimmetrikus operátorok létrehozása Ismerkedés az összetett értékadás módszerrel Növelési és csökkentési operátorok deklarálása Operátorpárok definiálása Operátorok megvalósítása A konvertáló operátorok működése Beépített konverziók Saját konvertáló operátorok megvalósítása Szimmetrikus operátorok létrehozása – új megvilágításban Bővítés implicit típuskonverziós operátorral 19. fejezet − Gyorsreferencia
323 323 325 328 328 328 329 332 341 342 345
347 347 349 353 355 355 357 360
361 361 362 363 364 367 367 369 370 373 374 374 376 376 379
xi
Tartalomjegyzék
IV. rész: Windows-alkalmazások készítése 20. A Windows Forms A programunk megírása Windows Forms Application létrehozása A gyakori Windows Forms tulajdonságok Tulajdonságok megváltoztatása programozott módon Vezérlőelemek hozzáadása űrlapunkhoz Windows Forms vezérlőelemek használata A vezérlőelemek tulajdonságainak beállítása Tulajdonságok dinamikus megváltoztatása A felhasználói felület programozása Események közzététele a Windows Forms-ban Események feldolgozása Windows Forms-ban Az alkalmazás futtatása 20. fejezet − Gyorsreferencia
21. Munka menükkel és párbeszéddobozokkal A menük kialakításának irányelvei és a megjelenés A menük létrehozása és a menüesemények kezelése Menük létrehozása A menüpontok tulajdonságainak beállítása További menüpont-tulajdonságok Menüesemények A felbukkanó menük A felbukkanó menük létrehozása A közös párbeszéd-vezérlőelemek használata A SaveFileDialog vezérlőelem A nyomtatók használata 21. fejezet − Gyorsreferencia
22. Ellenőrzések végrehajtása Az adatok ellenőrzése A CausesValidation tulajdonság Az ellenőrzési események Egy példa: az ügyfelek kezelése Első kísérlet az ellenőrzésre A visszafogottság előnye Az ErrorProvider vezérlőelem használata Állapotsor elhelyezése az űrlapon 22. fejezet − Gyorsreferencia
xii
383 383 384 388 389 390 391 393 395 397 399 400 403 404
405 406 406 407 409 412 413 416 416 422 423 426 430
433 433 434 434 435 435 439 441 444 447
Tartalomjegyzék
V. rész: Adatkezelés 23. Adatbázisok használata Az ADO.NET-adatbázisok használata A Northwind Traders adatbázis Az adatbázis létrehozása Hozzáférés az adatbázishoz DataSet, DataTable és TableAdapter objektumok Adatok megjelenítése egy alkalmazásban Az ADO.NET programozott használata 23. fejezet − Gyorsreferencia
24. Adatkötés és DataSetek használata A Windows Forms vezérlőelemek és az adatkötés Egy DataSet definiálása és az egyszerű adatkötés használata Az összetett adatkötés használata Adatbázis frissítése DataSettel Kapcsolatok kezelése Többfelhasználós frissítések kezelése DataSet használata DataGridView vezérlőelemmel Felhasználói bevitel érvényesítése a DataGridView vezérlőelemben Frissítések végrehajtása DataSet használatával 24. fejezet − Gyorsreferencia
451 451 452 453 453 459 461 465 474
477 478 478 485 488 489 489 490 494 498 502
VI. rész: Web-alkalmazások készítése 25. Az ASP.NET Az Internet mint infrastruktúra Webkiszolgáló-kérések és -válaszok Az állapot kezelése Az ASP.NET Webes alkalmazások létrehozása ASP.NET segítségével ASP.NET-alkalmazás létrehozása A webűrlap tesztelése Kiszolgálóoldali vezérlőelemek Téma létrehozása és alkalmazása 25. fejezet − Gyorsreferencia
507 508 508 509 510 512 512 521 523 530 535
xiii
Tartalomjegyzék
26. Ellenőrző vezérlőelemek webes űrlapokon Szerver- és ügyféloldali ellenőrzés összehasonlítása Szerveroldali ellenőrzés Ügyféloldali ellenőrzés Ügyféloldali ellenőrzés megvalósítása 26. fejezet − Gyorsreferencia
537 537 538 538 539 546
27. Webhelyek védelme és adatelérés webűrlapokkal
547
A Web Forms GridView vezérlőelemének használata A biztonság kezelése Az űrlap alapú hitelesítés megértése Az űrlap alapú hitelesítés megvalósítása Adatok lekérdezése Ügyféladatok megjelenítése Adatok megjelenítése oldalanként Az adathozzáférés optimalizálása Adatok gyorsítótárazása az adatforrásban A gyorsítótárazás vizsgálata SqlDataSource objektummal Adatok szerkesztése Sorok törlése GridView vezérlőelemből Sorok módosítása GridView vezérlőelemben 27. fejezet − Gyorsreferencia
547 548 549 549 556 557 561 562 563 564 566 566 568 569
28. Webszolgáltatás létrehozása és alkalmazása Mi a webszolgáltatás? A SOAP szerepe Mi a webszolgáltatás-leíró nyelv? A ProductService webszolgáltatás elkészítése A ProductService webszolgáltatás létrehozása Összetett adatok kezelése Webszolgáltatások, ügyfelek és proxykiszolgálók A SOAP-protokollal való beszélgetés nehezebb módja A SOAP-protokollal való beszélgetés könnyebb módja A ProductService webszolgáltatás felhasználása 28. fejezet − Gyorsreferencia
571 571 572 574 577 577 585 591 591 592 592 599
A szerzőről
601
Tárgymutató
603
xiv