Obsah
Předmluva
Komu je tato kniha určena
Co v této knize najdete
Co v této knize nenajdete
Rozdíly oproti prvnímu vydání
Čeština
Doprovodné CD
Chyby
Poděkování
15
15
15
16
16
16
17
17
17
KAPITOLA 1
Jazyk C# a platforma .NET
19
Proč .NET?
Struktura prostředí .NET
19
20
Společný běhový systém CLR
Řízený a neřízený kód
Společný typový systém
Specifikace společného jazyka
22
23
23
23
Datové typy v prostředí .NET
24
Jmenné prostory
Základní datové typy
Metadata a atributy
Sestavení
Některé nástroje pro vývoj aplikací pro .NET
Překlad programu v C#
Vytvoření sestavení (linker)
Instalace sdílené distribuční jednotky
K1933.indd 3
24
25
25
26
26
27
29
30
8/30/2011 3:18:55 PM
4
Obsah
Klíč pro digitální podpis distribuční jednotky
Práce s prostředky
Použití komponent COM
Disasemblování přeloženého programu
Překlad z IL do vyšších programovacích jazyků
IIS a ASP.NET
Integrovaná vývojová prostředí
Nástroj pro konfiguraci aplikací pro .NET
Novinky v jazyce C# verze 2.0
Genericita
Neúplné třídy
Nulovatelné typy
Anonymní metody
Statické třídy
Různý přístup ke složkám vlastnosti
Kovariance a kontravariance delegátů
Blok iterátoru a příkaz yield
Novinky verzí 3.0 a 3.5
Typ proměnné si odvodí překladač
Anonymní typy
Automatická implementace vlastností
Parciální metody
Rozšiřující metody
Nepojmenované metody (lambda-výrazy)
Novinky verze 4.0
Nepovinné parametry
Pojmenované skutečné parametry (pojmenované argumenty)
30
31
31
31
33
34
34
35
35
36
37
37
38
38
38
39
39
40
41
41
41
42
42
43
44
44
45
KAPITOLA 2
Aplikace a sestavení
Sestavení (assembly)
Soukromé sestavení
Jedno sestavení z několika zdrojových souborů
Oddělený překlad jednotlivých souborů
Vytváříme sestavení z modulů
Vytvoření dynamické knihovny pro .NET
Použití dynamické knihovny
Kultura sestavení
Instalace soukromého sestavení
Specifikace umístění v konfiguračním souboru
Vytvoření konfiguračního souboru
K1933.indd 4
47
47
48
49
49
50
50
51
52
52
53
54
8/30/2011 3:18:55 PM
Obsah
Sdílené sestavení
Číslo verze
Digitální podpis
Digitální podpis ve Visual Studiu
Odložený podpis
Změna verze: Konfigurační soubor
Automatické vytvoření nebo úprava konfiguračního souboru
Instalace sdíleného sestavení
Instalace pomocí konfiguračního nástroje
Zásady vydavatele
Data aplikace v konfiguračním souboru
Měnitelná data v konfiguračním souboru
Prostředky neboli zdroje
Ikona aplikace
Textové řetězce
Přístup k prostředkům
Uložení řetězů v samostatné dynamické knihovně
Kultura
Prostředky a Visual Studio
55
56
57
57
59
59
62
64
64
65
66
67
67
68
69
69
70
71
72
Základní použití dynamické knihovny pro Win32
Přejmenování funkce z DLL
Import podle čísel
Volací konvence
Předávání parametrů (marshaling)
Předávání struktury
Výjimka v DLL
Obsluha výjimky bez specifikace typu
72
73
74
74
74
75
76
77
Použití komponenty MSXML 4.0 v .NET
Vytvoření RCW z příkazového řádku
Program pro výpis údajů ze souboru XML
Použití komponenty při vývoji v IDE
Prostředí, v němž program běží
Zpracování jednotlivých parametrů příkazové řádky
Celá příkazová řádka
Speciální adresáře
Aktuální adresář
Nastavujeme proměnnou prostředí
Zjišťujeme hodnotu proměnné prostředí
Všechny systémové proměnné
K1933.indd 5
55
Použití dynamické knihovny pro Win32
Použití komponenty COM
5
78
78
79
79
80
81
81
82
82
83
83
83
84
8/30/2011 3:18:56 PM
6
Obsah
Práce s neznámým sestavením (reflexe)
Neznámá třída implementuje známé rozhraní
Neznámá třída v neznámém sestavení
Neznámá třída obsahuje známou metodu
85
85
86
88
KAPITOLA 3
Základní dovednosti
Vyvíjíme datový typ
Třída, nebo struktura?
Deklarace
Konstruktor
Vytvoření instance
Přiřazování instancí
Kopírování instancí (kopírovací konstruktor)
Vlastnosti
Zkrácený zápis vlastností a jeho omezení
Indexování
Převod na řetězec
Význačné hodnoty
Význačné hodnoty, které neznáme v době překladu
Sčítání
Otočení znaménka
Rovnost, a co s ní souvisí
Hešování
Konverze double na Cplx (implicitní)
Konverze Cplx na double (explicitní)
Operace, které musí proběhnout
Třída po sobě uklízí
Úklid, když může nastat výjimka
Částečný úklid
Nezabezpečený kód
Převod celého čísla na pole bajtů
Převod instance třídy Bod na pole bajtů
Překlad nezabezpečeného kódu
Užitečné triky
Jak vypsat výčtový typ (příznaky)
Jak upozornit na použití zastaralé metody
Jak po odladění programu odstranit metodu (podmíněná metoda)
Určujeme, které části kódu se přeloží (podmíněný překlad)
Hledáme maximum (metody s proměnným počtem parametrů)
Prohození obsahu dvou proměnných
Inicializační procedura
K1933.indd 6
89
89
89
90
90
91
91
91
92
93
93
94
95
95
96
96
97
98
99
99
100
100
101
102
103
103
104
105
106
106
108
109
110
110
111
112
8/30/2011 3:18:56 PM
Obsah
Přetěžování „operátorů“ true a false
Třída DBBool (trojhodnotová logika)
Metody, které umožňují tyto operátory používat
Delegáty a události
Vypisujeme tabulku funkce
Třída, která může vyvolat událost (bod, který může změnit barvu)
Třída, která reaguje na událost (obrázek se překreslí)
Generické třídy a metody
Univerzální pár
Univerzální metoda pro záměnu hodnot proměnných
Univerzální metoda pro hledání maxima (omezení typových parametrů)
7
112
112
113
114
115
116
117
118
118
119
120
KAPITOLA 4
Některé užitečné třídy
Ukládání dat
Beztypové kolekce
Generické kolekce (od C# 2.0)
Ukládání hodnot do instance třídy List<>
Zpracování všech hodnot v kolekci
Procházení hodnot pomocí enumerátoru
Změna prvku pomocí enumerátoru
Měníme prvky v kolekci typu List<>
Vyhledání daného prvku
Třídíme List<>
Třídíme v obráceném pořadí
Třídíme část kolekce
Vyhledávání v setříděné kolekci
Univerzální metoda pro výpis všech prvků pole
Jak vytvořit identickou kopii pole
Jak překopírovat část pole
Hledáme v poli
Hledáme v setříděném poli
Generátor náhodných čísel jako kolekce
Vlastní enumerátor
Nekonečná posloupnost (odložené vyhodnocování)
Hledáme všechny prvky kontejneru s danou vlastností (LINQ)
Vyhodnocování aritmetických výrazů (hešová tabulka)
Převod výrazu do obráceného polského zápisu
Znakové řetězce
Postupné vytváření řetězce
Porovnání dvou řetězců
K1933.indd 7
121
121
121
122
123
123
124
124
125
125
126
126
127
127
127
128
128
129
129
130
131
133
134
134
135
138
139
139
8/30/2011 3:18:56 PM
8
Obsah
Abecední řazení podle českých zvyklostí
Abecední řazení podle jiných zvyklostí
Malá a velká písmena
Rozklad řetězce na slova
Celá čísla v řetězci
Reálná čísla v řetězci
Začíná řetězec číslem?
Desetinná čárka, nebo tečka?
Výčtové typy a řetězce
Velká písmena na počátku slov
Odstranění opakovaných znaků
Odstranění háčků a čárek
Vložení hodnoty na zadané místo v řetězci
Formátování data a času
Vlastní formát data a času
Čtení data
Podprocesy neboli vlákna
Synchronizace
Příkaz lock
Stavy podprocesu
Dva nezávislé podprocesy
Vypíšeme zprávu, až oba podprocesy dokončí svou práci
Dát možnost jiným
Předčasně ukončujeme podproces
Podproces reaguje na předčasné ukončení
Komunikace dvou podprocesů
140
140
141
142
143
144
144
145
145
145
146
147
147
148
149
150
151
151
152
154
154
155
156
156
157
159
KAPITOLA 5
Soubory,
vstupy a výstupy
Soubory a adresáře
Změna jména souboru
Výpis obsahu adresáře
Základní vstupy a výstupy: Binární soubory
Zápis celých čísel do binárního souboru
Když se něco nepovede
Připisování do existujícího souboru
Čtení celých čísel z binárního souboru
Měníme vybrané záznamy (aktualizace binárního souboru)
Základní vstupy a výstupy: Textové soubory
Vstup a výstup ve správném kódování
K1933.indd 8
163
163
164
164
165
166
166
167
168
169
169
170
8/30/2011 3:18:56 PM
Obsah
Zápis do textového souboru
Zápis v Unicode: Malý a velký endián
Čtení z textového souboru
Převod souboru z jednoho kódování do jiného
Změna kódování, jiná možnost
Práce s pamětí
Zápis do znakového řetězce
Připisování k řetězci
Zápis do pole bajtů
Konzola
171
172
173
174
175
176
176
176
177
177
Filtr SORT: Řadíme vzestupně řádky v souboru
Filtr SORT v jiné kódové stránce
Řazení podle čísel řádků
178
179
180
Ukládáme objekty do souborů: serializace
183
Ukládáme objekty do binárních souborů
Ukládáme obrázek do binárního souboru: pomocné třídy
Zápis do souboru, čtení ze souboru
Složka, kterou nechceme uložit
Serializujeme neserializovatelné (vlastní serializace)
Ukládání objektů v XML
Evidence DVD (ukládáná třída)
Zápis záznamů v XML
Načtení objektu serializovaného v XML
9
183
184
185
186
186
188
188
189
190
KAPITOLA 6
Používání jazyka XML
Analyzátor Microsoft XML
Vypisujeme autory a knihy
Změna uloženého údaje
Nová kniha: vytvoření záznamu
Nová kniha: připojení záznamu k dokumentu
Nová kniha: jiná možnost
Uložení změn
Nástroje ze jmenného prostoru System.Xml
Zapisujeme grafické objekty do XML: Jak napsat ukládané třídy
Přečtení a výpis všech knih (postupné procházení souboru)
Validace dokumentu během zpracování
Jen validace dokumentu
Jak vytvořit validátor
Načtení celého dokumentu
Výpis vybraných informací o knihách: jiné řešení (DOM)
K1933.indd 9
191
192
193
194
194
195
195
196
196
196
199
201
203
204
206
207
8/30/2011 3:18:56 PM
10 Obsah
Jak upravit záznam o knize
Změna atributu elementu v XML
Přidání jména autora do záznamu
Nová kniha: přidání nového záznamu
Tabulka knih: Transformace XML na HTML
Uložení binárního obrázku do XML
Načtení obrázku z XML
LINQ pro XML
Datový zdroj
Jaké kategorie knih jsou v souboru knihy.xml?
Kategorie seřazené podle abecedy
Výpis autorů podle kategorie
Výpis autorů podle kategorie v jediném dotazu
208
209
210
211
212
214
216
216
217
217
218
219
220
KAPITOLA 7
Okno a práce s ním
Okno
Vlastnosti a metody okna
Události
Práce s okny v systému Windows
Prázdné okno
Okno bez komponent
Vytvoření základu okenní aplikace ve Visual Studiu
Vlastnosti okna
Nastavujeme velikost okna
Počáteční umístění okna
Barva okna
Částečně průhledné okno
Okno, které se pomalu vynoří
Okno s průhlednou klientskou oblastí
Ikona v pruhu úloh
Ikona okna
Okno bez titulkové lišty
Okno bez titulkové lišty, které lze přemísťovat
Okno s titulkovou lištou, které nelze přemísťovat
Více oken v jedné aplikaci
Okno vyvolané příkazem nabídky
Okno bez systémové nabídky
Okno, které nelze uzavřít
Vlastněné okno
Dětské okno
Úvodní obrazovka
K1933.indd 10
221
221
221
222
222
223
223
224
226
226
227
227
228
229
230
231
231
232
232
233
234
235
235
236
240
240
241
8/30/2011 3:18:56 PM
Obsah 11
Okno zvláštního tvaru
Region
Okno se složitějším tvarem
Vícedokumentové aplikace (MDI)
Hlavní okno
Uspořádání dětských oken
Dětské okno
Přístup k dětským oknům
Ukotvené dětské okno
244
244
246
247
247
248
249
249
249
KAPITOLA 8
Komponenty a dialogy
Komponenty (ovládací prvky)
Vkládáme komponentu do okna
Reakce na stisknutí
Chcete opravdu skončit?
Používáme skupinu přepínačů
Zadání hodnoty s nezávazným seznamem voleb
Přidáváme nabídku
Kontextová nabídka
Je po otevření okna zaměření na správné komponentě?
Vstup: jen velká písmena
Vstup: Jen celé číslo bez znaménka
Komponenta mění velikost s oknem
Zobrazení detailu k vybrané položce seznamu
Zobrazení struktury dokumentu XML
Bublinová nápověda
Přidáváme do okna panel nástrojů
Vlastní komponenta
Volič: naše komponenta pro výběr z několika možností
Volič: obsluha událostí
Instalace komponenty do Visual Studia a její odstranění
Použití nové komponenty
Předdefinované dialogy
Otevření souboru
Výběr několika souborů
Otevíráme soubor jen pro čtení
Ukládáme soubor pod jiným jménem
Hledáme adresář
Volíme barvu
Volba písma
Měníme nápisy na tlačítkách okna zpráv
K1933.indd 11
251
251
251
252
253
254
255
256
258
260
260
261
261
262
263
265
266
268
268
270
272
273
274
274
275
276
277
278
280
281
282
8/30/2011 3:18:56 PM
12 Obsah
Vlastní dialogové okno
Definujeme modální dialog
Jednoduché dialogové okno
Použití vlastního dialogového okna
285
285
286
288
KAPITOLA 9
Windows Presentation Foundation
Kde klepl uživatel myší?
WPF ve Visual Studiu
Ladění vzhledu aplikace
Používáme běžné ovládací prvky
Přidáváme nabídku (XAML)
Přidáváme nabídku (vizuální návrh)
Pozadí s plynulými barevnými přechody
Jednoduchý webový prohlížeč
Kreslení v okně
Obrázek nám nevyhovuje: Statická transformace
Rozdělíme plochu okna mřížkou na několik polí
Aplikujeme transformace programově
Komponenta se změní, když na ni ukážeme myší
Jednoduchá animace
Grafické objekty
Komponenta z Windows Forms v okně z WPF
Vlastní ovládací prvek pro WPF
Použití vlastní komponenty
Komponenta pro WPF v okně z Windows Forms
291
291
293
295
296
297
297
299
301
303
305
305
306
308
309
310
313
314
316
317
KAPITOLA 10
Databáze
Architektura ADO.NET
Poskytovatele
Základní operace s databází
Připojení k databázi
Jak vytvořit připojení v IDE Visual Studiu
Jak zjistit připojovací řetězec v IDE Visual Studia
Připojovací řetězec v konfiguračním souboru
Vytváříme tabulku
Vložení jednoho záznamu do tabulky
Vložení skupiny záznamů do tabulky (parametry)
Pracujeme s tabulkou v IDE Visual Studia
Celková cena všech knih z tabulky
K1933.indd 12
321
321
323
324
324
326
327
327
328
329
330
332
334
8/30/2011 3:18:56 PM
Obsah 13
Měníme záznam
Výpis databáze (připojené řešení)
Přesun peněz mezi účty (transakce)
Odpojená řešení
Výpis databáze (odpojené řešení)
Prohlížení databáze v okně
Výpis tabulky: Řešení generované v IDE Visual Studia
Měníme nadpisy sloupců v komponentě DataGrid
Přidání záznamu pomocí datového adaptéru
Změna záznamu
Odstranění záznamu
Úprava dat pomocí komponenty DataGrid
Uložení tabulky ve formátu XML
Načtení souboru v XML do datové sady
Informace o datové sadě
Použití relací
Podrobnosti ke zvolenému záznamu
LINQ pro SQL
Vytvoření datového zdroje pro LINQ ve Visual Studiu
Vypisujeme knihy z tabulky KNIHA
Složitější dotaz
LINQ ručně: Definujeme si potřebné třídy sami
LINQ pro datovou sadu
Vypisujeme příjmení autorů
334
335
336
338
338
340
342
343
344
346
346
347
349
350
351
351
354
355
355
356
357
358
359
359
KAPITOLA 11
Dotazovací jazyk LINQ
Zdroj dat
Jak upravit vlastní třídu, aby mohla být zdrojem dat
Sudá Fibonacciova čísla menší než 1000
Jednoduché operace
Sudé prvky celočíselného pole
Zvlášť sudé a zvlášť liché hodnoty
Jak odstranit opakované hodnoty
Běžné agregační operace
Součin všech prvků (vlastní agregace)
Seřazený kontejner
Pole seřazené v opačném pořadí
Chceme druhé mocniny lichých čísel z daného pole
Dotaz a jeho struktura
Výpis knih dané kategorie
K1933.indd 13
361
362
362
363
363
363
364
364
364
365
365
366
366
367
369
8/30/2011 3:18:56 PM
14 Obsah
Výpis autorů dané kategorie po skupinách
Výpis autorů dané kategorie jednotlivě
Celková cena knih dané kategorie
Počty knih v jednotlivých kategoriích
Výpis knih podle kategorií
Nejdražší kniha v každé kategorii
Která kniha byla kolikrát vypůjčena?
Přehled výpůjček dané knihy
Které knihy nebyly nikdy půjčeny?
369
370
371
371
372
373
373
374
376
KAPITOLA 12
Webové aplikace založené na ASP.NET
Základní úlohy
Vytvoření virtuálního adresáře
Zrušení virtuálního adresáře
Prázdná webová aplikace
Nasazení aplikace
Citát a jeho autor (relace)
Přesměrování na jinou stránku z kódu
Skriptování ve stránce ASP.NET
Přesměrování na jinou stránku ze skriptu
Přesný čas
Přenos dat
Zpracováváme data z formuláře (metoda GET)
Zpracováváme data z formuláře (metoda POST)
Zpracováváme data z formuláře ASP.NET
Zpracováváme URL, záhlaví a koláčky
Předáváme data jiné stránce
Databáze
Data z databáze na webové stránce
Nastavení účtu pro MS SQL Express
K1933.indd 14
377
381
381
382
383
385
386
388
391
391
392
394
394
395
395
397
401
403
404
406
Na závěr
411
Literatura
413
Rejstřík
415
8/30/2011 3:18:56 PM
Download

Obsah - CPress