You are on page 1of 61

Head First C#.

Edycja polska
Autor: Andrew Stellman, Jennifer Greene Tumaczenie: Pawe Dyl ISBN: 978-83-246-1546-9 Tytu oryginau: Head First C# (Head First) Format: 200x230, stron: 752

Jzyk programowania C# zosta zaprojektowany specjalnie dla firmy Microsoft. C# czerpie najlepsze wzorce z jzyka Java oraz C++. Aktualnie dostpna wersja 3.0 zawiera takie elementy jak automatyczne oczyszczanie pamici, typy oglne, dynamiczne tworzenie kodu i wiele innych. Jzyk C# zawiera bogat bibliotek klas pozwalajcych na tworzenie i rozwijanie aplikacji okienkowych, bazodanowych, a take dynamicznych aplikacji internetowych. Rozwizanie to zdobyo ju swoj pozycj na rynku jzykw programowania, a narzdzia dla programistw dostarczane przez firm Microsoft sprawiaj, e pozycja ta wydaje si niezagroona. W ksice Head First C#. Edycja polska autorzy, jak zwykle w charakterystyczny dla tej serii niekonwencjonalny, a przy tym niezwykle skuteczny sposb, naucz Ci niezbdnych podstaw C#. Lektura tej ksiki pozwoli Ci na swobodne poruszanie si wrd takich zagadnie jak wykorzystanie interfejsw czy te dziedziczenie. Dowiesz si, w jaki sposb obsugiwa wyjtki oraz zapisywa dane do pliku, aby potem je z niego odczyta. Nauczysz si korzysta z jzyka LINQ, a take odbdziesz krtki kurs korzystania z Visual Studio. Sposb, w jaki zostaa napisana ta ksika, gwarantuje, e szybko i z atwoci opanujesz jzyk C#!
Podstawy C# Typy danych wykorzystywane w C# Wykorzystanie interfejsw oraz klas abstrakcyjnych Zastosowanie typw wyliczeniowych i kolekcji Sposb wykorzystania plikw do przechowywania danych Wykorzystanie zdarze i delegacji Zastosowania jzyka LINQ Visual Studio sposb na wydajniejsze tworzenie aplikacji

Poznaj jzyk C# szybko, atwo i przyjemnie!

Spis treci

Spis treci (streszczenie)


Wstp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Zwiksz wydajno przy pomocy C#: Aplikacje Visual Studio w 10 minut lub mniej To tylko kod: Pod mask Obiekty: zorientuj si! Tworzenie kodu ma sens Typy i referencje: Jest 10:00. Czy wiesz, gdzie s Twoje dane? Ukrywanie: Co ma by ukryte... niech bdzie ukryte Dziedziczenie: Drzewo genealogiczne Twoich obiektw Interfejsy i klasy abstrakcyjne: Klasy, ktre dotrzymuj swoich obietnic Typy wyliczeniowe i kolekcje: Przechowywanie duej iloci danych Odczyt i zapis plikw: Zapisz tablice bajtw, zapisz wiat Obsuga wyjtkw: Gaszenie poarw nie jest ju popularne Zdarzenia i delegaty: Co robi Twj kod, kiedy nie patrzysz Powtrka i pokaz: Wiedza, moc i tworzenie ciekawych rzeczy Kontrolki i grafika: Upiksz to Kapitan Wspaniay: mier obiektu LINQ: Przejmij kontrol nad danymi 29 41 81 121 157 195 205 237 281 337 389 411 463 505 537 585 643 675 703 725 739

Laboratorium C# numer 1: Dzie na wycigach

Laboratorium C# numer 2: Wyprawa

Laboratorium C# numer 3: Invaders Dodatek A Pozostaoci Skorowidz

Spis treci (waciwy)


Wstp
Przygotuj si na C#. Wanie sobie siedzisz i prbujesz si czego nauczy, ale mzg wci powtarza Ci, e caa ta nauka nie jest nic warta. Twj umys mwi: Lepiej wyjd z pokoju i zajmij si waniejszymi sprawami, takimi jak to, ktrych dzikich zwierzt unika, oraz to, e strzelanie z uku na golasa nie jest dobrym pomysem. W jaki sposb oszuka mzg, tak aby myla, e Twoje ycie naprawd zaley od nauki C#?
Dla kogo jest ta ksika? Wiemy, o czym mylisz Metapoznanie: mylenie o myleniu Oto, co moesz zrobi, aby wysa mzg na misj Przeczytaj to Grupa korektorw technicznych Podzikowania 30 31 33 35 37 38 39

Spis treci

1
Nazwa: Laverne Smith Firma: XYZ Industries Telefon: (212) 555-8129 E-mail: Laverne.Smith@xyzindustries.com Klient: Tak Ostatni kontakt: 26.05.2007

Zwiksz wydajno przy pomocy C#

Aplikacje Visual Studio w 10 minut lub mniej


Czy chcesz tworzy wspaniae programy naprawd szybko? Wraz z C# dostajesz do rki potny jzyk programowania i wartociowe narzdzie. Dziki Visual Studio IDE do historii przejd sytuacje, w ktrych musiae pisa jaki ndzny kod, pozwalajcy przyciskowi po raz kolejny zadziaa. I to nie wszystko. Dodatkowo bdziesz mg skupi si na faktycznym wykonywaniu swojej pracy, zamiast zajmowa umys, pamitajc, ktry parametr metody odpowiada za nazw przycisku, a ktry by odpowiedzialny za wywietlany na nim tekst. Brzmi zachcajco? Przewr zatem stron i przystpmy do programowania.
Dlaczego powiniene uczy si C# C# oraz Visual Studio uatwiaj wiele czynnoci Pom dyrektorowi naczelnemu zrezygnowa z papieru Sprawd potrzeby Twoich uytkownikw, zanim zaczniesz tworzy program Oto program, ktry zamierzasz stworzy Co robisz w Visual Studio Co Visual Studio robi za Ciebie Stwrz interfejs uytkownika Visual Studio za kulisami Dodaj co do kodu generowanego automatycznie Moesz ju uruchomi aplikacj Potrzebujemy bazy danych do przechowywania naszych informacji Tworzenie tabeli dla listy kontaktowej Pola na karcie kontaktowej staj si kolumnami w tabeli People Zakocz tworzenie tabeli Utwrz diagram dla swoich danych, aby aplikacja miaa do nich dostp Wstaw dane z kart do bazy Pocz formularz z baz danych, korzystajc ze rde danych Dodaj kontrolki powizane z baz danych do formularza 42 43 44 45 46 48 48 52 54 55 56 58 60 62 65 66 68 70 72 74 77 78 79 80

ularza

O biekty f

Rozwizania .NET Framework

orm

Dobre programy s intuicyjne w uyciu Jak zamieni TWOJ aplikacj w aplikacj WSZYSTKICH Daj innym uytkownikom moliwo korzystania z Twojej aplikacji Jeszcze nie skoczye: przetestuj instalacj Stworzye penowartociow aplikacj bazodanow

Dostp do danych

10

Spis treci

T tylko kod o

Pod mask
Jeste programist, nie tylko uytkownikiem IDE. IDE moe wykona za Ciebie wiele pracy, ale na razie jest to wszystko, co moe dla Ciebie zrobi. Oczywicie, istnieje wiele powtarzalnych czynnoci podczas pisania aplikacji i IDE okazuje si tu bardzo pomocne. Praca z nim to jednak dopiero pocztek. Moesz wycisn ze swoich programw znacznie wicej pisanie kodu C# to wanie droga, ktra doprowadzi Ci do tego celu. Jak tylko osigniesz mistrzowski poziom w kodowaniu, nie bdzie adnej rzeczy, ktrej Twj program nie umiaby zrobi.

Kiedy robisz to IDE robi to Skd si bior programy IDE pomaga Ci kodowa Kiedy zmieniasz co w IDE, zmieniasz take swj kod Anatomia programu Twj program wie, skd zacz Moesz zmieni punkt wejcia programu W tej samej przestrzeni nazw mog by dwie klasy
Stwrz ten formularz

82 83 84 86 88 90 92 94 99 100 102 103 104 105 106

Twoje programy uywaj zmiennych do pracy z danymi C# uywa znanych symboli matematycznych Ptle wykonuj czynno wielokrotnie Kodowanie czas zacz Instrukcje if/else podejmuj decyzje Ustal warunki i sprawd, czy s prawdziwe
Za kadym razem, kiedy tworzysz nowy program, definiujesz dla niego prze strze nazw. W ten sposb jego kod jest odseparowany od innych klas platformy .NET .

Klasa zawiera kawaek kodu Twojego programu (chocia istniej take bardzo mae programy ktre skadaj si , z tylko jednej klasy). Klasa posiada jedn lub wicej metod. Twoje metody zawsze bd umieszczane wewntrz klas, a kada z nich bdzie si skadaa z instrukcji i wyrae jak te, ktre do tej pory widziae.

Przestrze nazw
Klasa
Metoda 1 instrukcja instrukcja Metoda 2 instrukcja instrukcja

11

Spis treci

3
w ne ) r( to ga vi Na

Obiekty: zorientuj si!

Tworzenie kodu ma sens


Kady pisany przez Ciebie program rozwizuje jaki problem. Podczas pisania programu staraj si zawsze zastanowi nad tym, jaki problem powinien on rozwizywa. Wanie do tego przydaj si obiekty. Pozwalaj one na odpowiedni podzia struktury kodu, aby same mogy si zaj rozwizywaniem problemw. Twj czas jest przeznaczany na wykonywanie rzeczywistej pracy i nie jest przerywany przedzieraniem si przez morze kodu. Prawidowe uycie obiektw spowoduje, e proces pisania kodu stanie si bardziej intuicyjny, natomiast pniejsze czytanie i zmiany bd atwiejsze.
W jaki sposb Mike myli o swoich problemach W jaki sposb system nawigacyjny w samochodzie Mikea rozwizuje jego problemy Klasa Navigator napisana przez Mikea posiada metody do ustalania i modyfikacji tras Wykorzystaj to, czego si nauczye, do napisania prostej aplikacji Mike ma pewien pomys
ie k

122 123 124 125 126 127 128 129 130 134 135 136 137 138 140 142 146 147 148 151 152

t N a vi g

ator

Mike moe uy obiektw do rozwizania swojego problemu Uywasz klasy do utworzenia obiektu Kiedy tworzysz obiekt na podstawie klasy, to taki obiekt nazywamy instancj klasy

Ob

new N aviga tor()


Na vi ga to r( )

ator

ne w

Lepsze rozwizanie... uzyskane dziki obiektom! Instancja uywa pl do przechowywania danych na temat rnych rzeczy Stwrzmy kilka instancji! Dziki za pami Co Twj program ma na myli Moesz uywa nazw klas i metod w celu uczynienia kodu bardziej intuicyjnym Nadaj swojej klasie naturaln struktur Diagramy klas pozwalaj w sensowny sposb zorganizowa klasy Utwrz klas do pracy z kilkoma facetami Stwrz projekt dla facetw Stwrz formularz do interakcji z facetami Jest jeszcze prostszy sposb inicjalizacji obiektw Kilka pomysw na projektowanie intuicyjnych klas

ie k

t N a vi g

Kiedy definiujesz klas, definiujesz take jej metody, podobnie jak projekt definiuje ukad pomieszcze w domu.

Moesz uy jednego projektu do zbudowania dowolnej liczby domw. Moesz rwnie przy uyciu jednej klasy utworzy kad liczb obiektw.

12

ator

Ob

ie k

t N a vi g

Ob

Spis treci

T ypy i referencje

Jest 10:00. Czy wiesz, gdzie s Twoje dane?


Bez danych Twoje programy s bezuyteczne. Potrzebujesz od uytkownikw informacji. Na jej podstawie wyszukujesz lub tworzysz now informacj i zwracasz j uytkownikom. W rzeczywistoci prawie wszystko, co robisz podczas programowania, sprowadza si do pracy z danymi w taki czy w inny sposb. W tym rozdziale dowiesz si o rnych aspektach typw danych C#, nauczysz si pracowa z danymi w programie, a nawet odkryjesz kilka pilnie strzeonych sekretw o obiektach (psssst... obiekty to take dane).

Typ zmiennej okrela rodzaj danych, jakie zmienna moe przechowywa Zmienna jest jak kubek z danymi 10 kilogramw danych w piciokilogramowej torebce Nawet wtedy, gdy liczba ma prawidowy rozmiar, nie moesz przypisa jej do kadej zmiennej Kiedy rzutujesz warto, ktra jest zbyt dua, C# dopasuje j automatycznie C# przeprowadza niektre rzutowania automatycznie Kiedy wywoujesz metod, zmienne musz pasowa do typw parametrw Poczenie = z operatorem Obiekty take s zmiennymi Korzystaj ze swoich obiektw przy pomocy zmiennych referencyjnych Referencje s jak etykiety do Twoich obiektw Jeeli nie ma ju adnej referencji, Twoje obiekty s usuwane z pamici Referencje wielokrotne i ich efekty uboczne
Lucky

158 160 161 162 163 164 165 170 171 172 173 174 175 180 181 182 183 185 186

m er 1

Dwie referencje oznaczaj DWA sposoby na zmian danych obiektu Specjalny przypadek: tablice Tablice mog take zawiera grup zmiennych referencyjnych Witamy w barze Niechlujny Janek najtasze kanapki w miecie! Obiekty uywaj referencji do komunikacji midzy sob

t D og

er 2

nu

Ob

ek

i
m er 1

ek

t D og

ek

t Dog n

nu

ek

t Dog n

um

pyk!

fido

er 2

um

Lucky

fido

Tam gdzie obiektw jeszcze nie byo

Ob

Ob

Ob

13

Spis treci

Laboratorium C# nr 1

Joe, Bob i Al uwielbiaj chodzi na tor wycigowy, ale ciga utrata pienidzy powoduje u nich frustracj. Potrzebuj symulatora, aby mogli okreli zwycizc, zanim pozbd si wszystkich pienidzy. Jeli dobrze wywiesz si z zadania, zostaniesz wprowadzony w arkana ich sposobu zarabiania.

Specyfikacja: stwrz symulator wycigw Kocowy produkt

196 204

14

Spis treci

Hermetyzacja

Co ma by ukryte niech bdzie ukryte


Czy kiedykolwiek marzye o odrobinie prywatnoci? Czasami Twoje obiekty czuj si tak samo. Na pewno nie lubisz sytuacji, w ktrych kto, komu nie ufasz, czyta Twj pamitnik lub przeglda wykazy Twoich operacji bankowych. Dobre obiekty nie pozwalaj innym obiektom na ogldanie swoich pl. W tym rozdziale nauczysz si wykorzystywa potg hermetyzacji. Sprawisz, e dane obiektw bd prywatne, natomiast metody, ktre dodasz, pozwol Ci na zabezpieczenie dostpu do danych.

Krystyna planuje przyjcia Co powinien robi program szacujcy? Jazda prbna Krystyny Kada opcja powinna by obliczana indywidualnie Bardzo atwo przez przypadek le skorzysta z obiektw Hermetyzacja oznacza, e niektre dane w klasie s prywatne Uyj hermetyzacji w celu kontroli dostpu do metod i pl Twojej klasy Ale czy jego prawdziwa tosamo jest NAPRAWD chroniona? Dostp do prywatnych pl i metod mona uzyska tylko z wntrza klasy Kilka sugestii dotyczcych hermetyzacji Hermetyzacja utrzymuje Twoje dane w nieskazitelnym stanie Waciwoci sprawi, e hermetyzacja bdzie atwiejsza

206 207 212 214 216 217 218 219 220 223 224 225 226 227 228 229

Agent C

GB

IA

A g e nt K

Stwrz aplikacj do przetestowania klasy Farmer Uyj automatycznych waciwoci do ukoczenia klasy Co wtedy, gdy chcemy zmieni pole mnonika wyywienia? Uyj konstruktora do inicjalizacji pl prywatnych

A g e nt M

I5

T ak Nie

T ak

Nie

15

Spis treci

Dziedziczenie

Drzewo genealogiczne Twoich obiektw


Czasami CHCIABY by dokadnie taki sam jak Twoi rodzice. Czy kiedykolwiek natkne si na obiekt, ktry robiby prawie wszystko, czego by sobie od niego yczy? Czy kiedykolwiek znalaze si w takiej sytuacji, e gdyby zmieni dosownie kilka rzeczy, obiekt byby perfekcyjny? To jest jeden z powodw, dla ktrych powstao dziedziczenie, czyli jedna z najpotniejszych koncepcji i technik w jzyku C#. Zanim przystpisz do zgbiania tajnikw tego rozdziau, dowiesz si, jak rozszerzy obiekt, aby uzyska dane jego zachowanie, ale rwnoczenie zachowa jego elastyczno podczas zmieniania tego zachowania. Unikniesz wielokrotnego pisania kodu, przedstawisz prawdziwy wiat znacznie dokadniej, a w wyniku otrzymasz kod atwiejszy do zarzdzania.
Krystyna organizuje take przyjcia urodzinowe Potrzebujemy klasy BirthdayParty Jeszcze jedna rzecz... Czy moesz doda opat 100 z za przyjcia powyej 12 osb? Kiedy klasy uywaj dziedziczenia, kod musi by napisany tylko raz Zbuduj model klasy, rozpoczynajc od rzeczy oglnych i przechodzc do bardziej konkretnych W jaki sposb zaprojektowaby symulator zoo? Uyj dziedziczenia w celu uniknicia zwielokrotniania kodu w klasach potomnych Rne zwierzta wydaj rne dwiki Pomyl, w jaki sposb pogrupowa zwierzta Stwrz hierarchi klas Kada klasa pochodna rozszerza klas bazow Aby dziedziczy z klasy bazowej, uyj dwukropka Wiemy, e dziedziczenie dodaje pola, waciwoci i metody klasy bazowej... Klasa pochodna moe przesania odziedziczone metody w celu ich modyfikacji lub zmiany W kadym miejscu, gdzie moesz uy klasy bazowej, moesz zamiast tego uy jednej z jej klas pochodnych Klasa potomna moe uzyska dostp do klasy bazowej, uywajc sowa kluczowego base Jeli Twoja klasa bazowa posiada konstruktor, klasa pochodna te musi go mie Teraz jeste ju gotowy do dokoczenia zadania Krystyny Stwrz system zarzdzania ulem Najpierw stworzysz system podstawowy Uyj dziedziczenia, aby rozszerzy system zarzdzania pszczoami 238 239 245 246 247 248 249 250 251 252 253 254 257 258 259 264 265 266 271 272 276

16

Spis treci

7
Dziedziczenie Abstrakcja Hermetyzacja Polimorfizm

Interfejsy i klasy abstrakcyjne

Klasy, ktre dotrzymuj swoich obietnic


Czyny potrafi powiedzie wicej ni sowa. Czasami potrzebujesz pogrupowa swoje obiekty na podstawie tego, co robi, zamiast tego, z jakiej klasy dziedzicz. To jest moment, w ktrym naley powiedzie o interfejsach. Pozwalaj one na prac z kad klas, ktra jest w stanie wykona dan czynno. Z wielkimi moliwociami przychodz wielkie obowizki i kada klasa, ktra implementuje interfejs, musi wypeni swoje zadania... albo kompilator poamie Twoje kolana, zrozumiae?

Wrmy do pszczelej korporacji Moemy uy dziedziczenia do utworzenia klas dla rnych typw pszcz Interfejs daje klasie do zrozumienia, e musi zaimplementowa okrelone metody i waciwoci Uyj sowa kluczowego interface do zdefiniowania interfejsu Teraz moesz utworzy instancj NectarStinger, ktra bdzie wykonywaa dwa rodzaje zada Klasy implementujce interfejsy musz zawiera WSZYSTKIE ich metody Powicz troch z interfejsami Nie moesz stworzy instancji interfejsu, ale moesz uzyska jego referencj Referencje interfejsw dziaaj tak samo jak referencje obiektw Za pomoc is moesz sprawdzi, czy klasa implementuje okrelony interfejs Interfejsy mog dziedziczy z innych interfejsw RoboBee 4000 moe wykonywa zadania pszcz bez potrzeby spoywania cennego miodu is okrela, co obiekt implementuje, as mwi kompilatorowi, jak go traktowa Ekspres do kawy take jest urzdzeniem Rzutowanie w gr dziaa w odniesieniu do obiektw i interfejsw Rzutowanie w d pozwala zamieni urzdzenie z powrotem w ekspres do kawy Rzutowanie w gr i w d dziaa take w odniesieniu do interfejsw
Salon Podwrko przed domem Jadalnia

282 283 284 285 286 287 288 290 291 292 293 294 295 296 297 298 299 303 304 307 308 310 311 319

Jest co wicej ni tylko public i private Modyfikatory dostpu zmieniaj zasig Obiekty niektrych klas nigdy nie powinny by tworzone
Podwrko za domem

Kuchnia

Klasa abstrakcyjna jest jak skrzyowanie klasy i interfejsu Obiekty niektrych klas nigdy nie powinny by tworzone Metoda abstrakcyjna nie ma ciaa Polimorfizm oznacza, e jeden obiekt moe przyjmowa wiele rnych postaci

Ogrd

17

Spis treci

T ypy wyliczeniowe i kolekcje

Przechowywanie duej iloci danych


Z deszczu pod rynn. W rzeczywistym wiecie nie musisz si zwykle zajmowa danymi w maych ilociach i w niewielkich fragmentach. Nie, Twoje dane przychodz do Ciebie w grupach, stosach, pkach, kopach. Potrzebujesz jakiego potnego narzdzia do zorganizowania ich. Nadszed czas, aby przedstawi kolekcje. Pozwalaj one przechowywa, sortowa i zarzdza wszystkimi danymi, ktre Twj program musi przeanalizowa. W ten sposb moesz myle o pisaniu programw do pracy z danymi, a samo ich przechowywanie zostawi kolekcjom.
acuchy znakw nie zawsze sprawdzaj si przy przechowywaniu kategorii danych Typy wyliczeniowe pozwalaj Ci wyliczy prawidowe wartoci Typy wyliczeniowe pozwalaj na reprezentowanie liczb za pomoc nazw Moesz uy tablicy, aby stworzy tali kart... Z tablicami ciko si pracuje Listy uatwiaj przechowywanie kolekcji... czegokolwiek Listy s bardziej elastyczne ni tablice Listy kurcz si i rosn dynamicznie Obiekty List mog przechowywa kady typ Inicjalizatory kolekcji dziaaj tak samo jak inicjalizatory obiektu Stwrzmy list kaczek Listy s proste, ale SORTOWANIE moe by skomplikowane Dwa sposoby na posortowanie kaczek Uyj interfejsu IComparer, aby powiedzie licie, jak ma sortowa Stwrz instancj obiektu porwnujcego IComparer moe wykonywa zoone porwnania Uyj sownika do przechowywania kluczy i wartoci Ograniczenia funkcjonalnoci sownika Twoje klucze i wartoci mog by take rnego typu Moesz tworzy wasne przecione metody I jeszcze WICEJ typw kolekcji... Kolejka dziaa wedug reguy: pierwszy przyszed, pierwszy wyszed Stos dziaa wedug reguy: ostatni przyszed, pierwszy wyszed 338 339 340 343 344 345 346 349 350 354 355 356 357 358 359 360 363 364 365 371 383 384 385

pyk!

18

Spis treci

Laboratorium C# numer 2

Twoim zadaniem jest stworzenie gry przygodowej, w ktrej potny wojownik wyrusza na misj i dzielnie walczy, poziom za poziomem, ze miertelnie niebezpiecznymi wrogami. Stworzysz system turowy. Oznacza to, e najpierw gracz wykonuje jeden ruch, a nastpnie ruch wykonuje przeciwnik. Gracz moe przesun si lub zaatakowa; potem moliwo ruchu lub ataku dostaje kady z wrogw. Gra toczy si do czasu, a gracz pokona wszystkich przeciwnikw na wszystkich siedmiu poziomach lub zginie.
Specyfikacja: stwrz gr przygodow Zabawa dopiero si zaczyna! 390 410

19

Spis treci

9
am

Odczyt i zapis plikw

Zapisz tablice bajtw, zapisz wiat


Czasami opaca si by trwaym. Do tej pory wszystkie programy byy krtkotrwae. Uruchamiay si, dziaay przez chwil i byy zamykane. Czasami nie jest to wystarczajce, zwaszcza jeeli zajmujesz si wanymi danymi. Musisz mie moliwo zapisania swojej pracy. W tym rozdziale pokaemy sposb zapisywania danych do pliku, a nastpnie wczytania tych informacji z powrotem do programu. Dowiesz si co nieco o klasach strumieni .NET i zetkniesz si z tajemnicami systemw szesnastkowego i dwjkowego.
C# uywa strumieni do zapisu i odczytu danych Rne strumienie zapisuj i odczytuj rne rzeczy FileStream zapisuje bajty do pliku Zapis i odczyt wymaga dwch obiektw Dane mog przechodzi przez wicej ni jeden strumie Uyj wbudowanych obiektw do wywietlenia standardowych okien dialogowych Okna dialogowe take s obiektami Uywaj wbudowanych klas File oraz Directory do pracy z plikami i katalogami Uywaj okien dialogowych do otwierania i zapisywania plikw Dziki IDisposable obiekty usuwane s prawidowo Unikaj bdw systemowych, korzystajc z instrukcji using Zapisywanie danych do plikw wymaga wielu decyzji Uyj instrukcji switch do wyboru waciwej opcji Dodaj przeciony konstruktor Deck(), ktry wczytuje karty z pliku Co dzieje si z obiektem podczas serializacji? Czym w istocie JEST stan obiektu? Co musi zosta w nim zapisane? Kiedy obiekt jest serializowany, serializowane s take wszystkie obiekty z nim powizane... Serializacja pozwala Ci zapisywa lub odczytywa cae obiekty na raz Jeeli chcesz stosowa serializacj w odniesieniu do klasy, to musisz oznaczy j atrybutem [Serializable] 412 413 414 419 420 423 425 426 429 431 432 438 439 441 443 444 445 446 447 451 452 453 455 459

t FileSt

ek

t FileSt

am

re

am

re

Ob Ob

ek

i i

ek

t FileSt

re

.NET automatycznie konwertuje tekst do postaci Unicode C# moe uy tablicy bajtw do przesyania danych

ek

am

t FileSt

20

re

Ob

69 117 114 101 107 97


Ob

33

Do zapisywania danych binarnych uywaj klasy BinaryWriter Pliki utworzone dziki serializacji mog by czytane take rcznie StreamReader i StreamWriter bd do tego odpowiednie

Spis treci

10

Obsuga wyjtkw

Gaszenie poarw nie jest ju popularne


Programici nie maj by straakami. Pracowae jak w, przebrne przez dokumentacje techniczne i kilka ujmujcych ksiek Head First, wspie si na szczyt swoich moliwoci: jeste mistrzem programistw. W dalszym cigu musisz jednak odrywa si od pracy, poniewa program wycza si lub nie zachowuje si tak jak powinien. Nic nie wybija Ci z rytmu tak, jak obowizek naprawienia dziwnego bdu... Z obsug wyjtkw moesz jednak napisa kod, ktry poradzi sobie z pojawiajcymi si problemami. Jest nawet lepiej, moesz bowiem zareagowa na ich pojawienie si i sprawi, e wszystko bdzie dalej dziaao.

Damian potrzebuje swoich wymwek, aby by mobilnym Kiedy program wyrzuca wyjtek, .NET tworzy obiekt Exception Kod Damiana zrobi co nieoczekiwanego Wszystkie obiekty wyjtkw dziedzicz z Exception Debuger pozwala Ci wyledzi wyjtki w kodzie i zapobiec im Uyj debugera wbudowanego w IDE, aby znale problem w programie do zarzdzania wymwkami Oj, oj! w kodzie dalej s bdy... Obsu wyjtki za pomoc try i catch Co si stanie, jeeli wywoywana metoda jest niebezpieczna? Uyj debugera do przeledzenia przepywu try/catch Jeli posiadasz kod, ktry powinien by uruchomiony ZAWSZE, zastosuj finally Uyj obiektu Exception w celu uzyskania informacji o problemie
Praca jest dzisiaj nudna. Chciabym ponurkowa. Czas na uruchomienie mojego generatora wymwek.

464 468 470 472 473 474 477 479 480 482 484 489 490 491 492 495 496 498 499 500 503

Uyj wicej ni jednego bloku catch do wyapania rnych typw wyjtkw Jedna klasa wyrzuca wyjtek, inna klasa go wyapuje Pszczoy i ich wyjtek OutOfHoney atwy sposb na uniknicie licznych problemw: using umoliwia Ci stosowanie try i finally za darmo Unikanie wyjtkw: zaimplementuj IDisposable, aby przeprowadzi wasne procedury sprztania Najgorszy z moliwych blok catch: komentarze Tymczasowe rozwizania s dobre (tymczasowo) Kilka wskazwek dotyczcych obsugi wyjtkw Damian w kocu pojecha na urlop...

21

Spis treci

11

Zdarzenia i delegaty

Co robi Twj kod, kiedy nie patrzysz


Twoje obiekty zaczynaj myle o sobie. Nie moesz zawsze kontrolowa tego, co robi Twoje obiekty. Czasami rne rzeczy... zdarzaj si. Kiedy to nastpuje, chciaby, aby Twoje obiekty byy wystarczajco sprytne i odpowiednio reagoway. To miejsce, w ktrym do akcji wkraczaj zdarzenia. Jeden obiekt udostpnia zdarzenie, inny je obsuguje i wszystko pracuje razem, aby cao dziaaa sprawnie. Jest to wspaniae, o ile nie masz zbyt wielu obiektw podpitych pod to samo zdarzenie. Wtedy bardzo pomocne okazuj si funkcje zwrotne.
Czy kiedykolwiek marzye o tym, aby Twoje obiekty potrafiy samodzielnie myle? Ale skd obiekt WIE, e ma odpowiedzie? Kiedy wystpi ZDARZENIE... obiekty nasuchuj Jeden obiekt wywouje zdarzenie, inne nasuchuj... Potem inne obiekty obsuguj zdarzenie czc punkty IDE automatycznie tworzy za Ciebie funkcje obsugi zdarze Wszystkie formularze, ktre utworzye, uywaj zdarze Poczenie nadawcw zdarzenia z jego odbiorcami Delegat ZASTPUJE waciw metod Delegat w akcji Kady obiekt moe subskrybowa publiczne zdarzenie... Uyj zamiast zdarzenia funkcji zwrotnej, aby podpi dokadnie jeden obiekt do delegatu Funkcje zwrotne uywaj delegatu, NIE zdarze 506 506 507 508 509 510 514 520 522 523 524 527 529 530

Kiedy pika zostaje uderzona, wywoywana jest metoda BallHasBeenHit().

Pika zostaa uderzona pod ktem 70 stopni w stosunku do poziomu i poleci na odlego 82 metrw.

cher Chcemy, aby obiekt Pit zapa t pik.

bi

e k t all B

ek

t P i t c h er

Zawodnik moe zaj si pik uderzon pod tym ktem i na dan odlego (90 jest wiksze ni 82).

Ob

22

Spis treci

12

Powtrka i pokaz

Wiedza, moc i tworzenie ciekawych rzeczy


Uczenie si nie jest dobre, dopki czego nie ZBUDUJESZ. Dopki nie napiszesz kodu, ktry dziaa, bardzo trudno jest poj bardziej skomplikowane techniki C#. W tym rozdziale zamierzamy przedstawi par rnych, nowych zagadnie: zegary oraz zarzdzanie kolekcjami przy uyciu LINQ (w celu zmiany nazwy). Chcemy take napisa pierwsz cz naprawd zoonej aplikacji, aby si upewni, e naprawd dobrze zrozumiae zagadnienia przedstawione w poprzednich rozdziaach. Zapnij pasy... czas stworzy naprawd fajny program.

Przebye dug drog Zajmowalimy si take pszczoami Architektura symulatora ula Budowanie symulatora ula ycie i mier kwiatw Potrzebujemy teraz klasy Bee Wypenianie klasy Hive Metoda Go() klasy Hive Jestemy gotowi na stworzenie wiata Tworzymy system turowy Uczenie pszcz zachowa Gwny formularz wywouje Go() dla caego wiata Moemy uy obiektu World do pobrania statystyk Zegary sygnalizuj zdarzenia wielokrotnie Zegar w tle uywa delegata Pracujmy z grupami pszcz Kolekcje kolekcjonuj... DANE LINQ uatwia prac z danymi w kolekcjach i bazach danych

538 539 540 541 545 546 554 555 556 557 564 566 567 568 569 576 577 579

ycie i mier kwiatw

O e k Fl o

O e k Fl o

MIER
O e k Fl o
e

23

Spis treci

13

Kontrolki i grafika

Upiksz to
Czasami musisz wzi sprawy grafiki we wasne rce. Przez wikszo czasu polegalimy na kontrolkach i w naszych aplikacjach korzystalimy z ich moliwoci obsugi grafiki. Czasami to wszystko nie wystarcza na przykad wtedy, gdy chcesz animowa obrazek. Jeli ju przejdziesz do animacji, bdziesz musia dla programu .NET stworzy wasne kontrolki, by moe dodajc podwjne buforowanie. Czasem nawet bdziesz zmuszony do rysowania bezporednio na formularzach. Wszystko to zaczyna si od obiektu Graphics, obiektw Bitmap i determinacji, aby zburzy dotychczasowy porzdek w zarzdzaniu grafik.

Cay czas do interakcji z programami uywae kontrolek Kontrolki formularza s tylko obiektami Dodaj do projektu rendering Kontrolki s dobrze przystosowane do wywietlania rnych elementw wizualnych Stwrz swoj pierwsz animowan kontrolk Twoje kontrolki take musz usuwa swoje kontrolki! UserControl to dobry sposb na tworzenie kontrolek Dodaj do projektu formularze reprezentujce ul i pole Stwrz klas Renderer Przyjrzyjmy si bliej sprawom wydajnoci Zmienie rozmiar bitmap przy pomocy obiektu Graphics Zasoby Twoich obrazkw przechowywane s w postaci obiektw Bitmap Uyj System.Drawing do PRZEJCIA KONTROLI nad grafik 30-sekundowa podr do wiata tajemnic grafiki GDI+ Uyj Graphics, aby na formularzu narysowa obrazek Klasa Graphics moe usun problem przezroczystoci... Uyj zdarzenia Paint, aby grafika bya mocno zwizana z formularzem Blisze spojrzenie na sposb rysowania formularzy i kontrolek Podwjne buforowanie czyni animacj bardziej pynn Podwjne buforowanie jest wbudowane w formularze i kontrolki Uyj obiektu Graphics i procedury obsugi zdarzenia do drukowania PrintDocument pracuje z obiektem okna dialogowego drukowania i obiektem okna podgldu wydruku

586 587 590 592 595 599 600 604 605 612 614 615 616 617 618 623 624 627 630 631 636 637

24

Spis treci

14

Kapitan Wspaniay
mier obiektu
Kapitan Wspaniay, najbardziej zdumiewajcy obiekt Objectville, prbuje pokona arcyrdo za Twoj ostatni szans na ZROBIENIE czego jest uycie finalizatora Kiedy DOKADNIE wywoywany jest finalizator? Dispose() dziaa z using, a finalizatory dziaaj z mechanizmem odzyskiwania elementw bezuytecznych Finalizatory nie mog polega na stabilnoci Spraw, aby obiekt serializowa si w Dispose() W midzyczasie na ulicach Objectville Struktura jest podobna do obiektu ale nie jest na stercie Wartoci s kopiowane, referencje s przypisywane Struktury traktowane s jak typy wartociowe, obiekty jak typy referencyjne Stos i sterta: wicej na temat pamici Kapitan Wspaniay nie tak bardzo Metody rozszerzajce zwikszaj funkcjonalno ISTNIEJCYCH klas Rozszerzanie podstawowego typu: string 644 650 651 652 654 655 658 659 659 660 661 663 667 668 670

25

Spis treci

15

LINQ

Przejmij kontrol nad danymi


To wiat przepeniony danymi... lepiej eby wiedzia, jak w nim y. To ju nie wrci. Czasy, gdy moge programowa kilka dni, a nawet kilka tygodni, bez koniecznoci pracy z ogromem danych. Nadesza epoka, w ktrej wszystko opiera si na danych. W rzeczywistoci do czsto bdziesz musia pracowa z takimi, ktre pochodz z wicej ni jednego rda... i bd zapisane w rnych formatach. Bazy danych, XML, kolekcje z innych programw... wszystko to jest czci pracy dobrego programisty C#. W tym miejscu do dziea wkracza LINQ. To nie tylko sposb na pobieranie danych w prosty, intuicyjny sposb. Pozwala on take grupowa dane i czy te pochodzce z rnych rde.

atwy projekt ale dane s w rnych miejscach Dziki LINQ moesz pobra dane z rnych rde Kolekcje .NET s przystosowane do dziaania z LINQ LINQ uatwia wykonywanie zapyta LINQ jest prosty, ale Twoje zapytania wcale takie by nie musz LINQ ma wiele zastosowa LINQ moe poczy Twoje wyniki w grupy Pocz wartoci Janka w grupy Uyj join do poczenia dwch kolekcji w jednym zapytaniu Janek zaoszczdzi kup szmalu Pocz LINQ z baz danych SQL Uyj join, aby poczy Starbuzz i Objectville

676 677 678 679 680 681 684 689 690 693 694 696 700

26

Spis treci

Laboratorium C# numer 3

Dziki temu laboratorium oddasz hod jednej z najbardziej popularnych, czczonych i powielanych ikon w historii gier komputerowych. Nie potrzebuje ona adnego wprowadzenia. Czas utworzy gr Invaders.

Dziadek wszystkich gier Mona zrobi znacznie wicej...

704 723

27

Spis treci

A S

Pozostaoci

5 najwaniejszych rzeczy, ktre chcielimy umieci w tej ksice


Zabawa dopiero si zaczyna! Pokazalimy Ci mnstwo wspaniaych narzdzi do tworzenia naprawd potnych programw w C#. Nie jest jednak moliwe, abymy w tej ksice zmiecili kade narzdzie, technologi i technik nie ma ona po prostu tylu stron. Musielimy podj naprawd przemylan decyzj, co umieci, a co pomin. Oto kilka tematw, ktrych nie moglimy przedstawi. Pomimo tego, e nie zajlimy si nimi, w dalszym cigu mylimy, e s one wane i przydatne. Naleaoby wic chocia o nich wspomnie tak te zrobilimy.

1. Zastosowanie LINQ do XML 2. Refaktoryzacja 3. Niektre z naszych ulubionych komponentw okna Toolbox 4. Aplikacje konsolowe 5. Windows Presentation Foundation Czy wiesz, e C# i .NET Framework potrafi

726 728 730 732 734 736

Skorowidz

739

28

1.

Aplikacje Visual Studio w 10 minut lub mniej


Nie martw si mamo. Z Visual Studio oraz C# bdziesz moga programowa tak szybko, e ju nigdy wicej nie przypalisz garnka z pieczeni.

Wraz z C# dostajesz do rki potny jzyk programowania i wartociowe narzdzie w swoje rce. Dziki Visual Studio IDE do historii przejd sytuacje, w ktrych musiae pisa jaki ndzny kod, pozwalajcy przyciskowi po raz kolejny zadziaa. I to nie wszystko. Dodatkowo bdziesz mg skupi si na faktycznym wykonywaniu swojej pracy, zamiast zajmowa umys, pamitajc, ktry parametr metody odpowiada za nazw przycisku, a ktry by odpowiedzialny za wywietlany na nim tekst. Brzmi zachcajco? Przewr zatem stron i przystpmy do programowania.

Czy chcesz tworzy wspaniae programy naprawd szybko?

to jest nowy rozdzia

41

C# to uatwia

Dlaczego powiniene uczy si C#


C# oraz Visual Studio IDE uatwiaj Ci poznanie tajnikw pisania kodu i, co wane, pisania go szybko. Kiedy pracujesz z C#, pakiet Visual Studio jest twoim najlepszym przyjacielem oraz staym kompanem.

IDE lub Visual Studio Integrated Development Environment peni wan rol w pracy z C#. To program, ktry pozwala Ci edytowa kod, zarzdza plikami, a take publikowa Twoje projekty.

A oto lista czynnoci, ktre IDE wykonuje za Ciebie


Za kadym razem, kiedy zamierzasz rozpocz pisanie programu lub chociaby umieci przycisk na formularzu, Twj program potrzebuje caej masy powtarzalnego kodu.
using System; llections.Generic; using System.Co ndows.Forms; using System.Wi Program namespace A_New_ { gram static class Pro { application. <summary> /// ry point for the /// The main ent /// </summary> [STAThread] n() static void Mai (); { (false); bleVisualStyles Application.Ena CompatibleTextRenderingDefault Application.Set (new Form1()); Application.Run } } }

private void Init ializeComponent( { ) this.button1 = new System.Windows.F this.SuspendLayo orms.Button(); ut(); // // button1 // this.button1.Loc this.button1.Nam ation = new System.Drawing.Point (105, 56); this.button1.Siz e = button1; this.button1.Tab e = new System.Drawing.Size(75, 23); this.button1.Tex Index = 0; t = button1; this.button1.Use this.button1.Cli VisualStyleBackColor = true; ck += new System.E // ventHandler(this .button1_Click); // Form1 // this.AutoScaleDi this.AutoScaleMo mensions = new System.Drawing.S izeF this.ClientSize de = System.Windows.Forms.AutoSca (8F, 16F); leMode.Font; this.Controls.Ad = new System.Drawing.Size(292, 267); this.Name = Ford(this.button1); this.Text = For m1; m1; this.ResumeLayou t(false); }

Co otrzymujesz razem z Visual Studio oraz C#


Wraz z jzykiem C#, przystosowanym do programowania Windows, oraz Visual Studio IDE moesz natychmiast skupi si na tym, co powinien robi Twj program.

Tyle kodu po tr przycisk na fo zeba, aby narysowa niego nieco w rmularzu. Dodanie do wizualnych m ikszej iloci elementw e wynikowy oe spowodowa, kod bdzie dz duszy. iesi razy

Wynikiem jest lep dziaajca aplikac iej napisanie zabiera ja, ktrej mniej czasu.

r Obiekty fo
Studio C# oraz Visual zeniej siadaj wc IDE po ruktury przygotowane st ym kodem, dn zarzdzajce nu em nt ktry jest eleme nywanych jczciej wyko znych. na yc zada programist

mu

larza
Roz wi zan ia .NE T Fra mew ork

42

Rozdzia 1.

Dostp h do danyc

Zwiksz wydajno przy pomocy C#

C# oraz Visual Studio uatwiaj wiele czynnoci


Kiedy uywasz C# i Visual Studio, dostajesz wiele wspaniaych moliwoci bez adnego dodatkowego nakadu pracy. Reasumujc, uzyskujesz moliwo:

Tworzenia aplikacji SZYBKO. Tworzenie programw w C# jest niczym robienie zdj aparatem cyfrowym. Jzyk jest potny i atwy do opanowania, natomiast Visual Studio IDE przejmuje ogromn cz pracy i wykonuje j za Ciebie automatycznie. Moesz zostawi przyziemne sprawy zwizane z kodowaniem IDE, a samemu skupi si na tym, co Twj kod powinien wykonywa. Zaprojektowania wspaniale wygldajcego interfejsu uytkownika. Form Designer w rodowisku Visual Studio IDE jest jednym z najprostszych istniejcych narzdzi do projektowania. Robi za Ciebie tak wiele, e kreowanie oszaamiajcych interfejsw uytkownika stanie si jedn z najbardziej satysfakcjonujcych czynnoci podczas tworzenia aplikacji w C#. Moesz budowa profesjonalne, w peni funkcjonalne programy bez niepotrzebnego tracenia wielu godzin na pisanie po raz kolejny od podstaw graficznego interfejsu uytkownika. Tworzenia i zarzdzania bazami danych. IDE wyposaone jest w prosty interfejs
sucy do budowania baz danych. Pozwala on na bezproblemow integracj z SQL Server Express, jak rwnie z kilkoma innymi systemami bazodanowymi.

Skupienia si na rozwizywaniu PRAWDZIWYCH problemw. IDE robi za Ciebie wiele, ale w dalszym cigu to Ty panujesz nad tym, co tworzysz przy pomocy C#. IDE pozwala Ci skupi si na Twoim programie, pracy (lub zabawie!) oraz klientach, a do tego zajmuje si ca czarn robot, tak jak:

ledzenie wszystkich Twoich projektw, uatwianie edycji kodu, kontrolowanie grafiki, dwikw, ikon oraz innych zasobw w Twoich projektach, zarzdzanie i interakcja z bazami danych.

Oznacza to, e cay ten czas, jaki musiaby spdzi, wykonujc rutynowe zadania, mona przeznaczy na tworzenie zabjczych programw.
Wkrtce dowiesz si, co naprawd mamy na myli.

jeste tutaj

43

Szef potrzebuje Twojej pomocy

Pom dyrektorowi naczelnemu zrezygnowa z papieru


Firma papiernicza Objectville Paper wanie zatrudnia nowego dyrektora naczelnego. Uwielbia on wycieczki piesze, kaw, przyrod i podj decyzj, e bdzie przyczynia si do ratowania lasw. Ma potrzeb zostania kierownikiem elektronicznym. Na pierwszy ogie pjdzie lista jego kontaktw. W najbliszy weekend wybiera si na narty do Aspen i liczy na to, e do czasu jego powrotu powstanie nowy program z ksik adresow. W przeciwnym razie no c nie bdzie ju starym, dobrym dyrektorem naczelnym.

Nazwa: Laverne Smith Firma: XYZ Industries Telefon: (212) 555-8129 E-mail: Laverne.Smith@xyzindustries.com Klient: Tak Ostatni kontakt: 26.05.2007

Lepiej, eby szybko znalaz sposb na umieszczenie tych danych w laptopie kierownika.

44

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

Sprawd potrzeby Twoich uytkownikw, zanim zaczniesz tworzy program


Zanim zaczniesz pisa ksik adresow lub jakkolwiek inn aplikacj musimy zatrzyma si na minut i pomyle o tym, kto bdzie jej uywa i czego od niej oczekuje.
1

Dyrektor naczelny chce uruchamia program w pracy oraz na swoim laptopie. Potrzebuje zatem programu instalacyjnego, aby mie pewno, e wszystkie niezbdne pliki znajd si na kadym komputerze.

Dyrektor naczelny chce uruchamia ksik adresow na komputerze stacjonarnym i laptopie, zatem program instalacyjny jest niezbdny.

Ins

ta

r lato

Win

dow

Dzia sprzeday firmy papierniczej Objectville Paper take chce mie dostp do ksiki adresowej. Chce on uywa danych do budowania list kontaktowych i w ten sposb zwikszy sprzeda papieru. Dyrektor naczelny dochodzi do wniosku, e baza danych bdzie najlepszym rozwizaniem. W ten sposb kady w firmie bdzie mia dostp do tych informacji, a on bdzie musia zarzdza tylko jedn kopi swoich kontaktw.

sual Studio Wiemy ju, e Vi zami danych. z ba uatwia prac informacji Przechowywanie zwala na takiej formie po do nich w p jednoczesny dostelnemu oraz dyrektorowi nacz y, mimo dziaowi sprzeda je tylko jedna e fizycznie istnie kopia danych.

Baza danych SQL

jeste tutaj

45

Oto Twj cel

Oto program, ktry zamierzasz stworzy


Potrzebujesz aplikacji z graficznym interfejsem uytkownika, obiektw niezbdnych do komunikacji z baz danych, waciwej bazy danych oraz programu instalacyjnego. Brzmi to jak wyrok i zapowiada konieczno wygospodarowania ogromnej iloci czasu, ale zbudujesz to wszystko po przeanalizowaniu nastpnych kilku stron. A oto struktura programu, ktry zamierzamy stworzy:
dows ularz Win bszarze. o orzy form dziesz tw ntrolkami na jego B i ko z licznym
Aplikacja posiada oddzieln warstw do obsugi bazy dany

ch.

Polecenie SELECT

Obiekty wizualne .NET

Obiekty bazy danych .NET

Polecenie INSERT Polecenie UPDATE Polecenie DELETE

. Fo r m

ows

danym

ngS

ind

ource

i
Obiekty

Obiekt Syste

reBox

ar

D ia g ra m c h y azy dan b
w ch rysunk Kady z ty je kontrolk j, reprezentu ksiki adresowe a formularz emy tworzy. zi ktry bd

Obie

kt

46

Rozdzia 1.

Potrzebujemy obiektw do komunikacji z tabela diagramu, aby nasza mi, apl wiedziaa, jaka jest str ikacja bazy danych, i innych uktura elementw.

Da

ta S e t

Obiekt Pic

To Obiekt

d Obiekt Bin

tu

olB

in

gN

avigator

Obiekt

aaa

bl
Ta

eA

do

zarzd

nia

za

in Obiekt B

dapter

.W

di

Zwiksz wydajno przy pomocy C#

Wszystkie dane przechowywane s w tabeli bazy danych SQL Express.

Program po utworzeniu umieszczany jest w pliku instalatora Windows.

Pami bazy danych


Ta b e la

Paczka instalatora

Ob iek ty ws pa rci a h dia gra mu ba zy da nyc

.exe
Plik programu
ych Baza dan
Dzia sprzeday bdzie musia jedynie wskaza plik i klikn go, aby zainstalowa program i z niego korzysta.

Baza danych SQL

ktr To jest prawdziwa baza danych, moemy utworzy i zarzdza przy pomocy Visual Studio.

Inst

ala

Win tor

dow

jeste tutaj

47

Zaczynajmy

Co robisz w Visual Studio


Przystp wic do dziea i uruchom Visual Studio, jeeli jeszcze tego nie zrobie. Pomi stron startow i wybierz New Project z menu File. Nazwij swj projekt Contacts i nacinij OK.

Tak wyglda okno New Project w Visual Studio 2008 Express Edition. Jeli uywasz wersji Professional lub Team Foundation, moe ono wyglda nieco inaczej. Ale nie przejmuj si wszystko bdzie dziaao dokadnie tak samo.

Co Visual Studio robi za Ciebie


Gdy tylko zapiszesz projekt, IDE utworzy pliki Form1.cs, Form1. Designer.cs oraz Program.cs. Elementy dodawane s do okna Solution Explorer. Domylnie pliki zapisywane s take w folderze Moje dokumenty\Visual Studio 2008\Projects\Contacts\.
Ten plik zawiera kod C# definiujcy zachowanie si formularza.
Ten zawiera kod ogram uruchamiajcy pr i wywietlajcy formularz.

Upewnij si, e zaraz po utworzeniu projektu zapisae go, wybierajc Save All z menu File spowoduje to zapisanie do katalogu wszystkich jego plikw. Jeeli wybierzesz Save, zapisany zostanie tylko plik, nad ktrym aktualnie pracujesz.

Kod, ktry definiuje wygld formularza ora z jego obiektw, znajdu je si tutaj.

C#
Form1.cs

C#
Program.cs
Visual Studio tworzy wszystkie trzy pliki automatycznie.

C#
Form1.Designer.cs

48

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

Zaostrz owek

Poniej pokazany jest wygld ekranu, jaki prawdopodobnie moesz w tej chwili zaobserwowa. Powiniene odgadn, do czego su poszczeglne okna, bazujc na wiedzy, ktr na tym etapie posiadasz. W kadym z pustych pl wstaw komentarz wyjaniajcy przeznaczenie poszczeglnych obszarw IDE. Na pocztek uzupenilimy jedno pole.
Jeeli Twoje IDE nie wyglda dok na tym obrazku, moesz wybra adnie tak, jak Reset Window Layout z menu Window.

Ten pasek narzdzi posiada przyciski zwizane z tym, co jest aktualnie wykonywane przy pomocy IDE.

Powikszylimy to okno, aby mia wicej miejsca.

jeste tutaj

49

Poznaj swoje IDE

Zaostrz owek Rozwizanie


Ten pasek narzdzi pos przyciski zwizane z iada tym jest aktualnie wykonyw , co ane przy pomocy IDE.

Uzupenilimy komentarze dotyczce rnych obszarw Visual Studio C# IDE. W poszczeglnych miejscach moesz mie napisane inne rzeczy, ale powiniene zna przeznaczenie kadego okna i kadej sekcji IDE.

Powikszylimy to okno, aby mia wicej miejsca.

To jest okno z kontrolkami. Zawiera zestaw kontrolek, ktre moesz przeciga wprost na formularz.

To okno pokazuje waciwoci wszystkich kontrolek znajdujcych si na Twoim formularzu.

Ten obszar na dole suy do debugowania. Pokazuje si wtedy, gdy w Twoim kodzie znajduj si bdy.

Pliki Form1.cs or az zostay utworzone Program.cs przez IDE podcza dla Ciebie nowego projektu s dodawania i si w oknie Solut pojawiaj ion Explorer.

Moesz przecza pomidzy plikami si pomocy okna So przy lution Explorer w IDE

50

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

P: Skoro IDE pisze cay ten

kod za mnie, to czy nauka C# sprowadza si do nauki IDE?

P: Co wtedy, gdy IDE utworzy kod,


ktrego nie chciaem?

O: Nie. IDE jest wspaniae w automa

O: Moesz go zmieni. IDE jest

tycznym generowaniu dla Ciebie czci kodu, ale wicej nie moe zrobi. Jest wiele rzeczy, w ktrych jest naprawd dobre, takich jak wstpna konfiguracja lub automatyczna zmiana waciwoci kontrolek na formularzu. Istnieje jednak znacznie trudniejsza cz programowania, czyli troska o to, co powinien robi program, i zmuszenie go do posuszestwa, a tego adne IDE za Ciebie nie zrobi. Pomimo tego, e Visual Studio IDE jest jednym z najbardziej zaawansowanych spord istniejcych rodowisk, moe ono doj tylko do tego etapu. To Ty, nie adne IDE, jeste odpowiedzialny za pisanie kodu akcji, czyli tego, ktry wykonuje ca prac.
w Visual Studio, ale kiedy sprawdziem podkatalog Projects w folderze Moje dokumenty, nie znalazem go tam. Co si stao?

przystosowane do tworzenia kodu na podstawie tego, w jaki sposb elementy zostay przecignite lub dodane do aplikacji. Czasami nie jest to sposb, jaki byby przez Ciebie podany. Wszystko, co IDE robi dla Ciebie kada linijka kodu, ktr tworzy, kady plik, ktry dodaje moe by zmieniane zarwno rcznie, poprzez bezporedni edycj plikw, jak i przy uyciu atwego w obsudze interfejsu rodowiska.
dziaao dobrze, jeeli pobraem i zainstalowaem Visual Studio Express? Czy nie powinienem uywa jednej z patnych wersji Visual Studio, aby zrobi wszystko, co jest tu opisane?

wprowadzenie nowej nazwy pliku pociga za sob konieczno wprowadzenia zmian we fragmentach kodu lub powoduje dyskomfort ycia z rnymi nazwami pliku oraz klasy w nim zapisanej. W zwizku z tym, e jest to niepodane, zalecamy pozostawienie nazw, chyba e istnieje naprawd powany powd, aby dokona takiej zmiany.

P: Przygldam si wanie

P: Czy wszystko bdzie

mojemu IDE i dochodz do wniosku, e mj ekran wyglda nieco inaczej ni Twj. Brakuje niektrych okien, inne s poprzestawiane. Co si dzieje?

O: Jeeli wybierzesz polecenie

P: Stworzyem nowy projekt

Reset Window Layout z menu Window, to IDE odtworzy oryginalny wygld i pooenie okien. Twj ekran powinien wyglda dokadnie tak samo, jak inne w tym rozdziale.

Studio 2008 w Visual Studio 2005 projekty przechowywane s w innym miejscu. Kiedy zaczynasz tworzy nowy projekt w Visual Studio 2008, IDE umieszcza go w katalogu Ustawienia lokalne\Dane Aplikacji\Temporary Projects. Gdy zapisujesz go po raz pierwszy, jeste pytany o nazw pliku, a po zaakceptowaniu wyboru projekt zostaje zapisany w katalogu Moje dokumenty\Visual Studio 2008\ Projects. Prbujc otworzy nowy projekt lub zamkn tymczasowy, zostaniesz poproszony o wybr jednej z dwch opcji zapisania lub odrzucenia zmian.

O: Po pierwsze, musisz uywa Visual

czego nie daoby si zrobi za pomoc darmowej wersji Visual Studio (ktr mona pobra ze strony Microsoft). Gwne rnice pomidzy edycj Express a pozostaymi (Professional i Team Foundation) nie uniemoliwiaj pisania w peni funkcjonalnych i kompletnych aplikacji w C#.

O: Nie ma w tej ksice niczego,

Visual Studio generuje kod, ktry moe by uyty jako podstawa do dalszego pisania aplikacji. Upewnienie si, e aplikacja robi dokadnie to, do czego zostaa stworzona, naley wycznie do Ciebie.

P: Czy mog zmieni nazwy plikw,


ktre IDE dla mnie generuje?

O: Oczywicie, moesz zmieni kad

cz swojego programu. IDE jest skonfigurowane w taki sposb, e nazywa nowe pliki z zachowaniem ostronoci. Gdy dodajesz plik do projektu, jego nazwa ma wpyw na cz generowanego kodu, ktry j zawiera. W niektrych przypadkach

jeste tutaj

51

PictureBox jest wart tysica sw

Stwrz interfejs uytkownika


Dodawanie kontrolek i nadawanie blasku interfejsowi uytkownika jest tak proste, jak przeciganie i upuszczanie elementw w Visual Studio IDE. Dodajmy zatem logo do formularza.
1

Uyj kontrolki PictureBox, aby doda obrazek.


Kliknij kontrolk PictureBox w oknie Toolbox, a nastpnie przecignij j na formularz. W tle IDE doda jej kod do pliku Form1.Designer.cs.

Jeeli nie widzisz okna Toolbox, sprbuj najecha wskanikiem myszy na sowo Toolbox, ktre znajduje si w lewym grnym rogu IDE. Jeli go tam nie ma, wybierz element Toolbox z menu View, aby pojawio si na ekranie.

Za kadym razem, gdy wprowad zasz zmiany we waciwociach kontrolki form w pliku Form1.Designer.cs jest ularza, kod zmieniany przez IDE.

C#
Form1.Designer.cs

Nie przejmuj si, jeeli nie jeste profesjonalist w projektowaniu graficznych interfejsw uytkownika.
W swoim czasie powiemy znacznie wicej o tworzeniu dobrych interfejsw uytkownika. Na tym etapie wystarczy, e wstawisz logo oraz inne kontrolki do formularza i zadbasz o jego prawidowe zachowanie. O stylowy wygld zatroszczymy si pniej.

52

Rozdzia 1.

Zwiksz wydajno przy pomocy C#


Obiekty wizualne .NET Obiekty bazy danych .NET
d z a ni
Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

o u rc e

in d

da

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

Ustaw tryb Zoom w PictureBox. Kada kontrolka na Twoim formularzu posiada waciwoci, ktre moesz ustawi. Aby dosta si do nich, kliknij ma czarn strzak widoczn na kontrolce. Zmie waciwo Size Mode obiektu PictureBox na Zoom, a zobaczysz, jak to dziaa.
p do Aby uzyska dost lki, oci kontro waciw arn kliknij t ma cz strzak.

Wybierz Zoo m PictureBox zm , aby ramka rozmiar w ce ieniaa swj lu si do obrazk dopasowania umiecisz. a, ktry w niej

Pobierz logo firmy Objectville Paper. Pobierz logo Objectville Paper z serwera ftp (ftp://ftp.helion.pl/przyklady/hfcsh.zip) i zapisz je na twardym dysku. Nastpnie wybierz strzak waciwoci i kliknij Choose Image. Zaznacz pole wyboru Local resource, a nastpnie kliknij Import i znajd Logo. Wszystko powinno ustawi si poprawnie.
o Tutaj znajduje si log Objectville Paper oraz ale kon PictureBox, ktry dos r. asowuje swj rozmia dop

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

a d any m

Jeste tutaj
O bi e k t

m o w s.For

i
O bi ek

ek

Plik programu

Ob

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

or alat Inst dows Win

jeste tutaj

53

Oszczdzajc zasoby naturalne C#

Visual Studio za kulisami


Za kadym razem, gdy zmienisz co w Visual Studio, IDE pisze za Ciebie kod. Kiedy utworzye logo i zdecydowae, eby Visual Studio uywao pobranego obrazka, stworzyo ono zasoby i skojarzyo je z Twoj aplikacj. Zasoby to kady plik graficzny, dwikowy, ikona, a take kady inny rodzaj danych wrzucanych do Twojego programu. Plik graficzny staje si wwczas integraln czci aplikacji, aby podczas jej instalacji na innym komputerze zosta tam zapisany razem z innymi skadnikami i aby PictureBox mg go uywa. Kiedy przecigasz kontrolk PictureBox na formularz, IDE automatycznie tworzy plik Form1.resx, aby przechowywa zasoby i trzyma je razem w projekcie. Kliknij dwukrotnie ten plik, a zobaczysz niedawno zaimportowany obrazek.

Ten obrazek jest teraz w zasobach aplikacji listy kontaktowej.

Gdy klikniesz Form1.re sx, Explorer moesz zobacz w oknie Solution logo. Plik czy obraze y zaimportowane PictureBox, natomias k z kontrolk t odpowiedni kod, niezb IDE dodaje dny do takiego powizania.

C# C#
Form1.cs
ktre Tu s pliki,dio Visual Stu o a wygenerow czeniej. w

Form1.Designer.cs

C#
Program.cs

C#
Form1.resx

Kiedy zaimportowae obrazek, IDE utworzyo ten plik. Zawiera on wszystkie zasoby (grafik, wideo, dwiki i inne przechowywane dane) skojarzone z formularzem Form1.

54

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

Dodaj co do kodu generowanego automatycznie


IDE tworzy du cz kodu za Ciebie, ale zawsze bdziesz chcia go przeglda i co do niego dodawa. Ustawmy zatem logo w ten sposb, aby wywietlao informacje o programie za kadym razem, gdy uytkownik je kliknie. Upewnij si, e IDE wywietla formularz, a nastpnie kliknij dwukrotnie kontrolk PictureBox. Powiniene zobaczy fragment pojawiajcego si kodu podobny do tego:
Gdy dwukrotnie klikne kontrolk PictureBox, IDE utworzyo t metod. Bdzie ona wykonywana za kadym razem, gdy uytkownik kliknie logo podczas dziaania aplikacji.

public partial class Form1 : Form { public Form1() { InitializeComponent(); }

prawidowo Nazwa tej metody wykonywan ruje czynno suge ania, czyli podczas jej wywo PictureBox. ie kontrolki kliknic

private void pictureBox1_Click (object sender, EventArgs e) { } }


Wpisz t linijk kodu. ona pojawianie si oknPowoduje z komunikatem w pos a tac wprowadzonego tekstu i bdzie miao tytu O . Okno programie. fragment kodu, Jeli ju wpisae ten ny Save isz go, uywajc iko poprzez zap lub z paska narzdzi IDE z menu wybr elementu Save do czstego si File. Przyzwyczajaj w swojej pracy zapisywania rezultat ve All. ji Sa przy pomocy opc

Gdy dwukrotnie klikniesz w kontrolk PictureBox, otworzy ona ten kod z kursorem ustawionym w tym miejscu. Ignoruj wszystkie okna, ktre pojawiaj si podczas wpisywania. IDE stara si pomc, ale na razie tej pomocy nie potrzebujemy.

P: Co to jest metoda? O: Metoda to po prostu nazwany fragment


kodu. Powiemy sobie na ten temat znacznie wicej w rozdziale 2.

mwimy C#, aby umieci fragment Lista kontaktowa v1.0. w jednej linii, a nastpnie rozpocz now dla pozostaej czci.

P: Co robi jakie \n w kodzie? O: To symbol amania linii. W ten sposb

jeste tutaj

55

Uruchom aplikacj (ju!)

Moesz ju uruchomi aplikacj


Nacinij F5 na klawiaturze lub kliknij przycisk z zielon strzak ( ) na pasku narzdzi, aby sprawdzi, co udao Ci si do tego momentu napisa. (Nazywa si to debugowaniem, czyli uruchamianiem programu za porednictwem IDE). Moesz zatrzyma debugowanie, wybierajc Stop Debugging z menu Debug lub klikajc w ten przycisk na pasku narzdzi: ( ).

Wszystkie trzy przyciski dziaaj nie musisz pisa w tym celu adnego kodu.

Kliknicie w logo Objectville Paper powoduje pokazanie si okna dialogowego, ktre wanie napisae.

Gdzie s moje pliki?


Kiedy uruchamiasz swj program, Visual Studio kopiuje wszystkie pliki do katalogu Moje Dokumenty\Visual Studio 2008\Projects\Contacts\ Contacts\bin\Debug. Moesz nawet przej do niego i uruchomi poprzez podwjne kliknicie myszk pliku .exe program, ktry zosta utworzony przez IDE.
C# zamienia Twj program na plik, ktry moesz uruchomi, zwany plikiem wykonywalnym. Znajdziesz go tutaj, w folderze Debug.

P: W moim IDE zielona strzaka jest


oznaczona jako Debug. Czy to jaki problem?

przypadku, to uruchamianie aplikacji poprzez IDE. Powiemy sobie wicej na jego temat w dalszej czci ksiki. Na chwil obecn bdzie to po prostu sposb na uruchamianie programw.

O: Nie. Debugowanie, przynajmniej w naszym

P: Nie widz adnego przycisku


C# C# C# C# C#

Program.cs

Form1. Designer.cs

Contacts.csproj Properties

bin

Stop Debugging na moim pasku narzdzi. O co chodzi?

Form1.cs

Form1.resx

O: Przycisk Stop Debugging znajduje si

To nie jest bd. Istniej dwa poziomy katalogw. Wewntrzny folder posiada waciwe pliki z kodem C#.

na specjalnym pasku narzdzi, ktry staje si widoczny dopiero po uruchomieniu programu. Uruchom aplikacj jeszcze raz i sprawd, czy przycisk si pojawi.

56

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

Co zrobilimy do tej pory


Stworzylimy formularz i wstawilimy kontrolk PictureBox, ktra wywietla komunikat w momencie kliknicia. Kolejnym zadaniem bdzie dodanie wszystkich innych pl karty, takich jak nazwa kontaktu i numer telefonu. Zdecydowalimy, e bdziemy przechowywa dane w bazie. Visual Studio moe zarzdza bezporednim poczeniem z tak baz danych, dziki czemu nie bdziemy potrzebowali zamieca kodu licznymi odwoaniami do niej (co jest niewskazane). Aby to wszystko pracowao, musimy stworzy nasz baz. W ten sposb kontrolki bd mogy si do niej odwoywa. Zamierzamy wic przenie si z obszaru obiektw wizualnych .NET bezporednio do sekcji bazy danych.

Baza danych SQL

Obiekty wizualne .NET


Obiekty bazy danych .NET
ng S u rce o
Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami bazy danych


Tabela

Paczka instalatora

Obiekty wsparcia diagramu bazy danych

ia d a n y mi

Fo rm

do

taS et

z a rzd

an

t S y st e m . Wi n d

e k t B i n di

ng

bi

N avigat

ie k

ow

O bi ekt

Da

m Diagra ch ny bazy da

bie

k t P ict u

To zrobilimy do tej pory

eB

Ob

iekt To

ol

ebujemy ale wci potrz nikacji tw do komu obiek bdziemy z danymi, ktre bazie. ywa w przechow

Ten etap ma na celu poczenie formularza z baz danych, na co nie jestemy na razie gotowi. Po prostu nie posiadamy jeszcze bazy danych.

ox

Visual Studio moe wygenerowa kod pozwalajcy na poczenie formularza i bazy danych, ale zanim to bdzie moliwe, musimy tak baz stworzy.
jeste tutaj

ba

or
O

Ob

Ob

Ob

s.

ie kt Ta b

le

ie kt Bin

A d a pt e

Plik programu
nych Baza da
Baza danych SQL

di

Obiekt

lato Insta

d r Win

ows

Musimy wic skupi si na tym kroku: stworzeniu bazy danych i wrzuceniu do niej pewnych informacji.

57

Zachowaj to na pniej

Potrzebujemy bazy danych do przechowywania naszych informacji


Zanim dodamy reszt pl do formularza, musimy stworzy baz, do ktrej bdzie si on odnosi. IDE moe wygenerowa spory kawa kodu odpowiedzialnego za poczenie formularza i danych, ale musimy wczeniej zdefiniowa sam baz.
1

Upewnij si, e skoczye debugowa, zanim przejdziesz dalej.

Dodaj now baz danych SQL do projektu.


W oknie Solution Explorer kliknij prawym przyciskiem myszy projekt Contacts, wybierz Add, a nastpnie New Item. Kliknij ikon SQL Database, a jako nazw wpisz ContactDB.mdf.
Ten plik jest nasz now baz danych.

SQL
ContactDB.mdf
Baza danych SQL moe pracowa tylko wtedy, gdy zainstalowae wczeniej SQL Server Express. Cofnij si do wstpu, jeeli nie wiesz, jak to zrobi.

Wybierz ikon waciw dla Twojej wersji SQL Database, jeeli uywasz Visual Studio Express 2005, lub Service-Based Database, jeli korzystasz z wersji z roku 2008.

Zamknij okno Data Source Configuration Wizard.


Na tym etapie chcemy pomin konfiguracj rda danych, wic kliknij przycisk Cancel. Wrcimy tutaj, jak tylko ustalimy struktur naszej bazy danych.

Wywietl baz danych w oknie Solution Explorer.


Przejd do okna Solution Explorer, a zobaczysz, e baza ContactDB zostaa dodana do listy plikw. Kliknij dwukrotnie ContactDB.mdf i popatrz na lew stron ekranu. Toolbox zosta zastpiony przez Database Explorer. Visual Studio 2008 Professional oraz Team Foundation nie posiadaj okna Database Explorer. Zamiast tego maj okno Server Explorer, ktre potrafi zrobi dokadnie to samo, a oprcz tego umoliwia przegldanie danych w sieci.

58

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

IDE stworzyo baz danych


Kiedy nakazae IDE doda now baz SQL do projektu, IDE j stworzyo. Baza danych SQL to system, ktry przechowuje dane w sposb zorganizowany i relacyjny. Dodatkowo IDE udostpnia wszystkie narzdzia niezbdne do pracy z nimi. Dane w bazie SQL przechowywane s w tabelach. Na biece potrzeby wystarczy wyobrazi sobie, e baza to rodzaj arkusza. Organizuje on dane w ramach wierszy i kolumn. Kolumny reprezentuj ich kategorie, takie jak nazwa kontaktu i numer telefonu, natomiast kady rzd reprezentuje jedn kart kontaktow.

Obiekty wizualne .NET


m o w s.For

Obiekty bazy danych .NET


d z a ni

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

o u rc e

in d

da

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

ane Twoje dane przechowyw s w postaci kolumn i rzdw, podobnie jak w arkuszu.

Baza danych SQL prz echowuje Twoje dane. Zawiera ona dodatkowo informacje o strukturze oraz kod SQ ich pomocny przy dostpie L do nich.

Ta b e le

Baza danych SQL


Procedury skadowane s zestawami instrukcji, ktre pozwalaj na atw prac z danymi.

SQL jest swoim wasnym jzykiem


SQL to skrt od Structured Query Language. Oznacza jzyk programowania pozwalajcy na dostp do danych zgromadzonych w bazie. Posiada on swoj wasn skadni, sowa kluczowe i struktur. Kod SQL przyjmuje posta instrukcji i zapyta, ktre umoliwiaj dostp do danych SQL i ich pobieranie. Baza danych moe posiada tak zwane procedury skadowane, bdce zestawem instrukcji i zapyta SQL przechowywanych w niej i gotowych do ContactDB.mdf uruchomienia w kadej chwili. IDE generuje instrukcje SQL i procedury skadowane automatycznie, aby moliwy by dostp do danych z poziomu programu.
[Notka dziau marketingu: Czy moemy wstawi tutaj reklam Head First SQL?] Baza danych SQL znajduje si w tym pliku. Wkrtce zdefiniujemy tabele i dane dla niej, a wszystko to znajdzie si wanie w tym miejscu.

a d any m

i
O bi ek

ek

Plik programu

Ob

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

or alat Inst dows Win

Jeste tutaj

P ro c e d u s k a d o w a ry ne

jeste tutaj

59

Pami bazy danych uatwia prac

Tworzenie tabeli dla listy kontaktowej


Mamy ju baz danych. Potrzebujemy jeszcze przechowywa w niej informacje, ale musz si one mieci w tabelach, czyli strukturach bazy uywanych do przechowywania poszczeglnych bitw danych. Dla celw naszej aplikacji stwrzmy zatem tabel People, aby w niej przechowywa wszystkie informacje kontaktowe.
1

P: Czy moesz jeszcze raz O

Dodaj tabel do bazy ContactDB.


Kliknij prawym przyciskiem myszy w element Tables w oknie Database Explorer i wybierz Add New Table. Spowoduje to otwarcie okna, w ktrym moesz zdefiniowa nazwy kolumn nowo tworzonej tabeli.

powiedzie, co to jest kolumna?

: Kolumna to jedno pole w tabeli. A zatem w tabeli People moesz mie kolumny FirstName oraz LastName, ktre bd oznaczay imi i nazwisko osoby. Pola takie zawsze bd miay typ, taki jak String, Date lub Bool.

P: Do czego jest nam potrzebna


kolumna ContactID?

O: Umoliwia ona posiadanie unikalnego


identyfikatora przez kady rekord w wikszoci tabel. Dlatego w przypadku przechowywania listy kontaktw do poszczeglnych osb zdecydowalimy si stworzy specjaln kolumn i nazwa j ContactID.

W tej chwili potrzebujemy nowych kolumn w naszej bazie. W pierwszej kolejnoci do tabeli dodajmy kolumn ContactID, tak aby kady rekord posiada swj wasny, unikalny identyfikator.
2

P: Co oznacza Int w polu Data Type?


O: Pole Data Type okrela, jaki rodzaj informacji bdzie przechowywany w danej kolumnie. Int jest skrtem od Integer, co oznacza liczb cakowit. Na tej podstawie wnioskujemy, e kolumna ContactID bdzie przechowywaa liczby cakowite.

Dodaj kolumn ContactID do tabeli People.


Wpisz ContactID w polu Column Name i wybierz Int z listy rozwijalnej Data Type. Upewnij si, e pole Allow Nulls jest odznaczone. Na koniec utwrzmy klucz gwny dla naszej tabeli. Podwietl kolumn ContactID, ktr wanie utworzye, i nacinij przycisk Set Primary Key. Spowoduje to, e kady wpis w tym polu traktowany bdzie jako unikalny klucz gwny.

P: To strasznie duo rnych

informacji. Czy mam to wszystko rozumie?

O: Nie, nie ma problemu, jeeli wszystkiego


w tej chwili nie rozumiesz. Skup si na podstawowych pojciach. Powicimy wicej czasu na tematy zwizane z bazami danych w kolejnych rozdziaach tej ksiki. Jeli umierasz z ciekawoci, zawsze moesz sign po Head First SQL i czyta j rwnolegle z t pozycj.

To jest przycisk Set Primary Key. Klucz gwny pomaga bazie danych przyspiesza procedury wyszukiwania rekordw.

60

Rozdzia 1.

Zwiksz wydajno przy pomocy C#


Obiekty wizualne .NET
m o w s.For

Obiekty bazy danych .NET


d z a ni

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

o u rc e

in d

da

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

Powiedz bazie danych, aby automatycznie generowaa identyfikatory.


Dopki ContactID jest numerem wykorzystywanym wycznie przez baz danych, a nie przez uytkownika, dopty moemy obciy baz obowizkiem automatycznego generowania identyfikatorw. W ten sposb nie musimy si martwi o pisanie adnego kodu potrzebnego do tego celu. Przewi zawarto okna w d, a do odnalezienia we waciwociach poniej tabeli pola Identity Specification. Kliknij przycisk + i wybierz Yes w polu (Is Identity).

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

sz swoj W tym oknie definiuje zie tabel i dane, ktre bd przechowywaa.

a d any m

i
O bi ek

ek

Plik programu

Ob

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

or alat Inst dows Win

Jeste tutaj

Wane jest, aby pozostawi to pole odznaczone. Dopki klucz gwny jest podstawowym sposobem wyszukiwania rekordw, dopty pole ContactID musi mie warto.

Dziki temu pole ContactID aktualizuje si automatycznie za kadym razem, gdy jest dodawany nowy rekord.

jeste tutaj

61

Rozpocznijmy dyskusj

Pola na karcie kontaktowej staj si kolumnami w tabeli People


Teraz, kiedy ju stworzye klucz gwny tabeli, potrzebujesz zdefiniowa pozostae pola, ktre zamierzasz przechowywa w bazie danych. Kada rubryka w naszej pisanej karcie kontaktowej musi mie swj odpowiednik w postaci kolumny tabeli People.

P e o p le
Nazwa: Laverne Smith Firma: XYZ Industries Telefon: (212) 555-8129 E-mail: Laverne.Smith@xyzindustries.com Klient: Tak Ostatni kontakt: 26.05.2007

Chcemy przechowywa dane kad ej osoby znajdujcej si na licie kontaktowej. Nale do nich: nazw a kontaktu, nazwa firmy, numer telefonu, adres e-mail, warto okrelajca, czy jest to klient firm y, oraz data ostatniego kontaktu telefonicznego.

Kade pole na karcie adresowej musi mie swj odpowiednik w tab eli People.

WYT
UMYS
Jakie problemy mog wynikn z przechowywania wielu rekordw dotyczcych tej samej osoby?

62

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

Teraz, kiedy stworzye tabel People oraz kolumn z kluczem gwnym, musisz doda kolumny dla wszystkich pozostaych pl danych. Zobaczmy, czy potrafisz dopasowa okrelone dane do odpowiedniej kolumny w tabeli oraz dobra opis waciwy dla ich typu.

Nazwa kolumny
LastCall

Typ danych

Opis
Ten typ przechowuje dat

int
Name Warto logiczna true/false

bit
ContactID acuch liter, cyfr lub innych symboli o maksymalnej dugoci 50 znakw Liczba cakowita

nvarchar(50)
Client?

datetime

jeste tutaj

63

Elementy oraz odpowiadajce sobie znaczniki

Teraz, kiedy stworzye tabel People oraz kolumn z kluczem gwnym, musisz doda kolumny dla wszystkich pozostaych pl danych. Zobaczmy, czy potrafisz dopasowa okrelone dane do odpowiedniej kolumny w tabeli oraz dobra opis waciwy dla ich typu.

Nazwa kolumny
LastCall

Typ danych

Opis
Ten typ przechowuje dat

int
Name Warto logiczna true/false

bit
ContactID acuch liter, cyfr lub innych symboli o maksymalnej dugoci 50 znakw

nvarchar(50)

Client?

datetime

Liczba cakowita

64

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

Zakocz tworzenie tabeli


Wr do miejsca, gdzie wpisywae nazw kolumny ContactID, i dodaj pi pozostaych kolumn z karty kontaktowej. Tak oto powinna wyglda tabela bazy danych, kiedy skoczysz:

Obiekty wizualne .NET


m o w s.For

Obiekty bazy danych .NET


d z a ni

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

o u rc e

in d

da

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

Pola bitowe przechowuj wartoci True lub False i mog by reprezentowane przez kontrolk CheckBox.

Kliknij przycisk Save na pasku narzdzi, a tabela zostanie zapisana. Zostaniesz poproszony o podanie jej nazwy. Wpisz People i nacinij OK.

m, gdy Za kadym raze li People, o tabe mwilimy t tabel, mielimy na myli z uzyskaa o tera jednak dopier ln nazw. ona swoj oficja

Tutaj tworzym ktra zostanie y tabel People, w bazie dany umieszczona ch ContactDB.

a d any m

i
O bi ek

ek

Plik programu

Ob

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

or alat Inst dows Win

Jeste tutaj

Jeeli odznaczysz pole Allow Nulls, kolumna bdzie musiaa posiada warto.

Niektre karty mog zawiera niepene informacje, wic niektre kolumny pozostan puste.

People

ContactDB

jeste tutaj

65

Zmapuj

Utwrz diagram dla swoich danych, aby aplikacja miaa do nich dostp
Stworzye baz danych i tabel. Nadszed ju czas, aby aplikacja si o tym dowiedziaa. To jest wanie moment, w ktrym diagram wkracza do akcji. Diagram bazy danych jest prostym opisem tabeli, ktrego Visual Studio moe uy do pracy z ni. Pozwala on take IDE automatycznie generowa instrukcje SQL uywane przy dodawaniu, modyfikacji oraz usuwaniu rekordw.
1

Stwrz nowy diagram bazy danych.


Przejd do okna Database Explorer i kliknij prawym przyciskiem myszy element Database Diagrams. Wybierz Add New Diagram.

Pozwl IDE wygenerowa kod dostpu.


Zanim IDE dowie si o konkretnej tabeli, musi najpierw wygenerowa kilka podstawowych procedur skadowanych do komunikacji z baz. Po prostu nacinij Yes i pozwl IDE wykona ca prac.

Pamitaj, e opcje te s wywoywane dla bazy ContactDB i dotycz wanie tej konkretnej bazy danych.

Wybierz tabele, z ktrymi chcesz pracowa.


Z okna, ktre powinno si pojawi, wybierz tabel People i kliknij Add. W tym momencie IDE jest gotowe do wygenerowania kodu specyficznego dla danej tabeli.

lka IDE tworzy kidowanych, edur ska proc na ktre pozwol du interakcj ko worzon programu z ut baz danych.

Jeli posiadasz baz danych z wieloma tab elami, to kada z nich jest reprezentowana przez element w tym oknie.

66

Rozdzia 1.

Zwiksz wydajno przy pomocy C#


Obiekty wizualne .NET
m o w s.For

Obiekty bazy danych .NET


d z a ni

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

o u rc e

in d

da

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

Nazwij diagram PeopleDiagram.


Wybierz File/Save. Zostaniesz poproszony o podanie nazwy dla nowego diagramu bazy danych. Aby dopeni formalnoci, nazwij go PeopleDiagram.

Diagram bazy danych pokazany jest tutaj. Jest to bardzo prosta reprezentacja twojej tabeli.

Jeli masz w bazie danych jakie inne tabele, ktre chciae doda do diagramu, to one take si tutaj pojawi.

Diagram bazy danych jest dla Visual Studio IDE opisem tabeli. IDE uywa go do automatycznego generowania kodu pomocnego w pracy z baz.

a d any m

i
O bi ek

ek

Plik programu

Ob

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

Jeeli uywasz Visual Studio 2005, wybierz zamiast tego File/Save All.

or alat Inst dows Win

Jeste tutaj

ilustracja projektu Jest to jedynie ry utworzye. bazy danych, kt tutaj wszystkie Wywietlane s ContactID jest a kolumny tabeli, cz gwny. oznaczona jako klu

jeste tutaj

67

Wstawiajc dane

Wstaw dane z kart do bazy


Teraz jeste ju gotowy do wstawienia danych z kart do bazy. Mamy tutaj kilka kontaktw szefa uyjemy ich do przygotowania wstpnej bazy danych zawierajcej kilka rekordw.

W oknie Database Explorer (lub Server Explorer) rozwi element Tables, kliknij tabel People prawym przyciskiem myszy i wybierz Show Table Data.

Twoim zadaniem jest wpisanie danych z tych szeciu kart do tabeli People.

Gdy na gwnym ekranie pojawi si tabela, wpisz do niej wszystkie ponisze dane. (Na pocztku bd to same wartoci NULL, ale nie przejmuj si. Zapenij pierwszy rzd prawidowymi danymi, ignorujc ostrzeenia pokazujce si obok nich). Nie musisz uzupenia kolumny ContactID, bo zostanie to zrobione automatycznie.

Nazwa: Liz
Wpisz True lub False w kolumnie Client. To w tej postaci SQL ci przechowuje warto . ie typu Tak lub N

Nelson

Firma: JTP

78 19) 555-25 Telefon: (4 .o P rg Nelson@JT E-mail: Liz 3.2006 ntakt: 04.0 Ostatni ko Klient: Tak

Nazwa: Lucinda Ericson Nazwa: Lloyd Jones Firma: Black Box Inc. Telefon: (718) 555-5638 E-mail: LJones@xblackboxinc.com Klient: Tak Ostatni kontakt: 26.05.2007 Firma: Ericson Events Telefon: (212) 555-9523 E-mail: Lucy@EricsonEvents.info Klient: Nie Ostatni kontakt: 17.05.2007

68

Rozdzia 1.

Zwiksz wydajno przy pomocy C#


Nazwa: Sarah Kalter
Nazwa: Matt Franks Firma: XYZ Industries Telefon: (212) 555-81125 E-mail: Matt.Franks@xyzindustries.com Klient: Tak Ostatni kontakt: 26.05.2007

, Firma: Kalter Riddle and Stoft Telefon: (614) 555-5641 E-mail: Sarah@KRS.org Klient: Nie Ostatni kontakt: 10.12.2005

Nazwa: Laverne Smith Firma: XYZ Industries Telefon: (212) 555-8129 E-mail: Laverne.Smith@xyzindustries.com Klient: Tak Ostatni kontakt: 26.05.2007

Po wpisaniu szeciu rekordw wybierz po raz kolejny Save All z menu File. Powinno to zaowocowa zapisaniem ich wszystkich w bazie.

Save All nakazuje IDE zapisa wszystko to, co naley do aplikacji. e, Tym rni si od zwykego Sav ym zapisujcego tylko plik, nad ktr danej chwili si pracuje. w

: Co si dzieje z danymi po tym, jak je wpisaem? Gdzie one id? : IDE automatycznie zapisuje wprowadzone wartoci w tabeli People w bazie danych. Tabela, jej kolumny, typy i wszystkie dane jej dotyczce, przechowywana jest w pliku ContactDB.mdf SQL Server Express. Plik ten jest integraln czci projektu i IDE aktualizuje go podczas jego zmiany, tak jak kady inny plik z kodem.

P O

: Dobrze, wpisaem te sze rekordw. Czy one bd czci mojego programu na zawsze? : Tak, bd one integraln czci, tak samo jak kod, ktry napisae, i formularz, ktry zaprojektowae. Rnica polega na tym, e baza nie jest kompilowana do postaci programu wykonywalnego. Jej plik jest kopiowany i przechowywany razem z plikiem wykonywalnym. Gdy aplikacja potrzebuje dostpu do danych, wykonuje szereg operacji odczytu i zapisu na pliku ContactDB.mdf znajdujcym si w jej katalogu wyjciowym.
Ten plik jest w rzeczywistoci baz danych SQL i Twj program moe go uywa przy pomocy kodu wygenerowanego dla Ciebie przez IDE.
SQL

P O

ContactDB.mdf

jeste tutaj

69

Wszystkie dane s tutaj

Pocz formularz z baz danych, korzystajc ze rde danych


Nareszcie jestemy gotowi do utworzenia obiektw .NET, ktre bd wykorzystywane przez formularz do integracji z baz danych. Potrzebujemy rda danych, ktre w rzeczywistoci bdzie kolekcj instrukcji SQL uywanych do wymiany informacji pomidzy formularzem a baz ContactDB.
1

Przejd z powrotem do formularza aplikacji. Zamknij tabel People i diagram bazy danych ContactDB. Powiniene w tej chwili widzie zakadk Form1.cs [Design].

Musisz zamkn zarwno tabel z danymi, jak i diagram, aby powrci do widoku formularza.

Dodaj nowe rdo danych do aplikacji.


W tej chwili powinno to by proste. Kliknij menu Data, a nastpnie wybierz z rozwinitej listy Add New Data Source
rdo danych, ktre tworzysz, bdzie miao za zadanie obsug komunikacji pomidzy formularzem i baz danych.

70

Rozdzia 1.

Zwiksz wydajno przy pomocy C#


Obiekty wizualne .NET
m o w s.For

Obiekty bazy danych .NET


d z a ni

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

o u rc e

in d

da

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

Skonfiguruj rdo danych.


Teraz musisz dostosowa rdo danych, aby uywao bazy ContactDB. W tym celu powiniene wykona nastpujce czynnoci:

Jeste tutaj

wybra Database i klikn przycisk Next, klikn Next na ekranie Choose Your Data Connection, upewni si, e pole wyboru Yes, save the connection as: na ekranie Save the Connection jest zaznaczone, i nacisn Next, na ekranie Choose Your Objects zaznaczy pole przy elemencie Tables, upewni si, e w polu DataSet name wpisane jest ContactDBDataSet i klikn Finish.
a Teraz Twj formularz moe uyw rda danych do interakcji z baz danych ContactDB. Przejcie przez poszczeglne etapy pozwala na poczenie rda danych z tabel People w bazie danych ContactDB.

XML
ContactDBDataSet.

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

C#
ContactDBDataSet. Designer.cs
Te pliki zostay wygenerowane przez rdo danych, ktre wanie skonfigurowae.

To jest Twj formularz.

a d any m

i
O bi ek

ek

Plik programu

Ob

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

or alat Inst dows Win

SQL
ContactDB.mdf

Ten plik to Twoja baza danych.

jeste tutaj

71

Pocz to ze sob

Dodaj kontrolki powizane z baz danych do formularza


Teraz moemy powrci do naszego formularza i doda kilka kontrolek. Nie bd to jednak zwyke kontrolki, tylko takie, ktre s powizane z nasz baz danych i kolumnami w tabeli People. Oznacza to, e kada zmiana danych w jednej z nich pocignie za sob automatyczn zmian informacji w odpowiedniej kolumnie bazy danych. A oto sposb na utworzenie kilku kontrolek powizanych z baz danych:
Wymaga to nieco wysiku, ale wracamy tutaj, aby utworzy obiekty formularza, ktre bd wsppracowa z baz danych.

Wybierz rdo danych, ktrego chcesz uywa.


Wybierz Show Data Sources z menu Data. Spowoduje to pojawienie si okna Data Sources z wywietlonymi rdami danych skonfigurowanymi dla tej aplikacji.

Jeeli nie widzisz tej zakadki, wybierz Show Data Sources z menu Data.

To okno pokazuje wszys tkie Twoje rda danych. W skonfigurowane jest tylk tej chwili ale oczywicie nie ma o jedno, przeciwwskaza do posadnych wikszej iloci dla inn iadania ych tabel lub baz danych.

Moesz take poszuka, a nastpnie klikn zakadk Data Sources w dolnej czci okna Database Explorer.

Wybierz tabel People.


Pod elementem ContactDBDataSet powiniene zobaczy tabel People i wszystkie jej kolumny. Jeeli ich nie widzisz, kliknij strzak menu rozwijalnego i wybierz Details.

To jest maa strzaka, w ktr powiniene klikn.

Wszystkie pola, ktre utworzye, powinny si tutaj pojawi.

72

Rozdzia 1.

Zwiksz wydajno przy pomocy C#


Obiekty wizualne .NET
m o w s.For

Obiekty bazy danych .NET


d z a ni

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

o u rc e

in d

da

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

Utwrz kontrolki powizane z tabel People.


Przecignij i upu tabel People na formularz. Powiniene zobaczy wstawione kontrolki, odpowiadajce kadej kolumnie bazy danych. Nie przejmuj si w tej chwili ich wygldem, tylko upewnij si, e wszystkie pojawiy si na formularzu.

Jeste tutaj

Jeeli co przypadkowo klikne i z ekranu znikn formularz, zawsze moesz do tego widoku powrci, wybierajc zakadk Form1.cs [Design], lub otworzy Form1.cs z okna Solution Explorer.

IDE tworzy ten pasek narzdzi do nawigacji po tabeli People.

Kiedy przecigne tabel People na formularz, dla kadej jej kolumny zostay utworzone odpowiednie kontrolki.

Te elementy nie bd wywietlane na formularzu, ale bd reprezentoway zbir danych, ktry zosta utworzony przez IDE do zarzdzania tabel People oraz baz danych ContactDB.

Ten obiekt czy formularz z tabel People bazy danych.

Ten adapter pozwala kontrolkom wykorzystywa wyraenia SQL, ktre IDE oraz rdo danych wczeniej wygeneroway.

Obiekt peopleBindingN czy kontrolki paska avigator narzdzi z tabel bazy danych.

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

a d any m

i
O bi ek

ek

Plik programu

Ob

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

or alat Inst dows Win

jeste tutaj

73

Upiksz to

Dobre programy s intuicyjne w uyciu


Co prawda formularz teraz dziaa, ale nie wyglda dobrze. Twoja aplikacja musi by wicej ni tylko funkcjonalna. Powinna by atwa w uyciu. Dzieli Ci zaledwie kilka etapw od osignicia wygldu formularza zblionego do wygldu papierowych kart, ktrych uywalimy na pocztku niniejszego rozdziau.
Nasz formularz bdzie bardziej intuicyjny, jeeli bdzie wyglda jak karta kontaktowa.

Nazwa: Laverne Smith Firma: XYZ Industries Telefon: (212) 555-8129 E-mail: Laverne.Smith@xyzindustries.com Klient: Tak Ostatni kontakt: 26.05.2007

Wyrwnaj kontrolki i pola tekstowe.


Wyrwnaj kontrolki i pola tekstowe wzgldem lewej krawdzi formularza. Bdzie on wyglda podobnie do innych aplikacji, a uytkownicy bd czuli si znacznie bardziej komfortowo podczas korzystania z programu. Przetumacz angielskie treci etykiet, powstaych automatycznie na podstawie nazw kolumn z tabeli People.

Podczas przecigania kontrolek na formularzu bd pojawiay si niebieskie linie. S one po to, aby uatwi wyrwnywanie poszczeglnych elementw interfejsu.

Zmie waciwo Text kontrolki CheckBox.


Podczas wstawiania kontrolek do formularza obok kontrolki Checkbox pojawia si pole tekstowe, ktre musi by usunite. Po prawej stronie, pod oknem Solution Explorer, powiniene dostrzec okno Properties. Przewi jego zawarto w d, a do napotkania waciwoci Text. Usu fragment checkbox1.

Usu ten napis, aby pozby si tekstu z kontrolki CheckBox.

74

Rozdzia 1.

Zwiksz wydajno przy pomocy C#


Obiekty wizualne .NET Obiekty bazy danych .NET
d z a ni
Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

o u rc e

in d

da

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

Nadaj aplikacji profesjonalny wygld.


Moesz take zmieni nazw formularza. Dokonasz tego poprzez kliknicie w dowolnym jego miejscu i odnalezienie waciwoci Text w oknie Properties. Dla naszych potrzeb zmie nazw na Objectville Paper Co. Lista Kontaktw. Moesz take, w tym samym oknie, wyczy przyciski do minimalizacji i maksymalizacji. W tym celu poszukaj waciwoci MaximizeBox oraz MinimizeBox i ustaw ich wartoci na False.

Powodem, dla ktrego chcesz usun przycisk maksymalizacji, jest to, e nie zmienia ona pozy cji kontrolek na formularzu. Pusta przestrze sprawia, e wyglda to do dziwnie.

Okno Properties powinno si znajdowa zaraz pod oknem Solution Explorer, w dolnej czci prawego panelu IDE.

Waciwo Text okrela tekst wywietlany na pasku tytuowym formularza.

Jeeli nie masz okna Properties, to moesz je uaktywni, wybierajc odpowiedni pozycj z menu View.

Dobra aplikacja to nie tylko taka, ktra dziaa, ale taka, ktra jest take atwa w uyciu. Dobrym zwyczajem programisty jest upewnienie si, e aplikacja zachowuje si dokadnie tak, jak spodziewaby si tego przecitny uytkownik.

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

a d any m

Jeste tutaj
O bi e k t

m o w s.For

i
O bi ek

ek

Plik programu

Ob

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

or alat Inst dows Win

jeste tutaj

75

Dobra, jeszcze jedna rzecz

Jazda prbna
Pozostaa nam do zrobienia tylko jedna rzecz uruchomi program i sprawdzi, czy wszystko dziaa tak, jak powinno. Zrb to tak samo, jak do tej pory nacinij klawisz F5 na klawiaturze albo kliknij w przycisk z zielon strzak na pasku narzdzi (lub wybierz Run z menu Debug). Moesz uruchomi swj program w kadej chwili, nawet jeli nie jest jeszcze skoczony. Jeeli w kodzie s bdy, to IDE Ci o tym przypomni i wstrzyma wykonywanie programu.
Nacinij ten X w rogu, aby zamkn program. W ten sposb moesz przej do nastpnego etapu.

Te kontrolki pozwalaj przeglda kolejne rekordy zapisane w bazie danych.

Powicimy na to wicej czasu w nastpnym rozdziale.

IDE najpierw buduje, potem wykonuje.


Kiedy uruchamiasz swoj aplikacj, IDE waciwie robi dwie rzeczy. Najpierw buduje program, a nastpnie go wykonuje. Proces ten skada si z kilku niezalenych czci. IDE kompiluje kod i zamienia go na posta wykonywaln. W nastpnej kolejnoci umieszcza skompilowany kod razem z zasobami i innymi plikami w podkatalogu katalogu bin. W tym przypadku plik wykonywalny oraz baza danych SQL znajd si w katalogu bin/Debug. Plik bazodanowy jest kopiowany za kadym razem, wic zmiany wprowadzone w trakcie pracy z IDE zostan utracone. Jeeli plik wykonywalny bdzie uruchamiany bezporednio z poziomu systemu Windows, dane bd zapisywane chyba e, po raz kolejny, projekt zostanie zbudowany przy uyciu IDE. W takim przypadku IDE nadpisze baz danych SQL now kopi, zawierajc dane skonfigurowane przy pomocy okna Database Explorer.

Budowanie programu nadpisuje dane w bazie.

76

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

d z a ni

o u rc e

in d

da

W tym momencie posiadasz wspaniay program. Problem polega na tym, e dziaa on tylko na Twoim komputerze. Oznacza to, e nikt inny go nie bdzie uywa, nikt Ci za niego nie zapaci, nikt nie zobaczy, jak wspaniaym programist jeste, i nikt Ci nie zatrudni a Twj szef i klienci nie dostan raportw generowanych z bazy danych. C# znacznie uatwia przeprowadzenie procesu wdroenia aplikacji. Wdroenie aplikacji to zainstalowanie jej na innych komputerach. Z pomoc Visual C# IDE przygotowanie wdroenia sprowadza si do dwch etapw.

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

Wybierz Publish Contacts z menu Build.

Zaakceptuj wszystkie domylne wartoci w oknie Publish Wizard poprzez nacinicie przycisku Finish. Zobaczysz, jak Twoja aplikacja bdzie pakowana, a nastpnie ujrzysz folder, w ktrym znajdzie si plik setup.exe.

a d any m

Jak zamieni TWOJ aplikacj w aplikacj WSZYSTKICH

Obiekty wizualne .NET


m o w s.For

Obiekty bazy danych .NET


Ob

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

i
O bi ek

ek

Plik programu

ie

k t Tab

leA

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

or alat Inst dows Win

Jeste tutaj

Budowanie projektu powoduje kopiowanie plikw na komputer lokalny. Element Publish tworzy instalacyjny plik wykonywalny wraz z plikiem konfiguracyjnym, aby inni uytkownicy take mogli zainstalowa Twj program.

jeste tutaj

77

Dziel si mioci

Daj innym uytkownikom moliwo korzystania z Twojej aplikacji


Z chwil utworzenia paczki instalacyjnej utworzye take folder publish/. Katalog zawiera kilka skadnikw, wszystkie zwizane s z procesem instalacji. Najwaniejszym dla uytkownikw jest setup, czyli program, ktry pozwoli im zainstalowa Twoj aplikacj na ich wasnych komputerach.
To jest miejsce, gdzie s przechowywane wszystkie pomocnicze pliki instalatora.

Ten plik udziela h instalatorowi wszelkic o, informacji na temat teg ktre pliki powinny by doczone do programu podczas instalacji.

W ten sposb uytkownicy Twojego programu bd go instalowa na swoich komputerach!

Moja sekretarka wanie mi powiedziaa, e skoczye pisa now baz kontaktow i e wszystko ju dziaa. Pakuj swoje walizki mamy miejsce w odrzutowcu do Aspen dla takiego pomysowego pracownika jak Ty!

t zadowolony. Wydaje si, e szef jes tylko jedna ra robota! Pozostaa pofruniesz Dob im rzecz do zrobienia, zanchocia szusowa na stokach,

78

Rozdzia 1.

Zwiksz wydajno przy pomocy C#

d z a ni

o u rc e

in d

da

Zanim zaczniesz strzela korkami od szampana, musisz przetestowa wdroenie i instalacj. Nie dasz chyba nikomu swojego programu, dopki sam go nie wyprbujesz? Zamknij Visual Studio IDE. Uruchom program instalacyjny i wybierz katalog na swoim komputerze, w ktrym chcesz umieci aplikacj. Nastpnie uruchom program z podanej lokalizacji i upewnij si, e dziaa dokadnie tak, jak sobie wyobraae. Moesz take doda lub zmodyfikowa kilka rekordw. Zostan one oczywicie zapisane w bazie danych.

ty

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

Teraz moesz dodawa, zmienia i usuwa rek Wszystko to zostanie ordy. zapisane w bazie danych.

Moesz uywa strzaek i pola tekstowego do poruszania si pomidzy rekordami.

Nie bj si wprowad kilka zmian. Aplikacja jest zainstalowana, wic tym razem dane nie zgin.

TESTUJ WSZYSTKO! Przetestuj swj program, przetestuj swoj instalacj, sprawd dane w swojej aplikacji.
jeste tutaj

a d any m

Jeszcze nie skoczye: przetestuj instalacj

Obiekty wizualne .NET


m o w s.For

Obiekty bazy danych .NET


Ob

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

i
O bi ek

ek

Plik programu

ie

k t Tab

leA

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

or alat Inst dows Win

Jeste tutaj

Kady z szeciu rekordw, ktre na pocztku wpisae, bdzie tutaj dostpny.

79

Superszybko

d z a ni

o u rc e

in d

da

ty

Dziki Visual Studio IDE stworzenie aplikacji Windows, zaprojektowanie i utworzenie bazy danych oraz poczenie ich w jedn, zgrabn cao jest do proste. Moesz nawet wygenerowa program instalacyjny za pomoc zaledwie kilku klikni.

do za

t Bi n d in

pt er

rz

Ob

.W

ie k t S y s te m

gS

Pi c t u r e

O b ie k t D

Od tego
Nazwa: Lloyd Jones Firma: Black Box Inc. Telefon: (718) 555-5638 E-mail: LJones@xblackboxinc.com Klient: Tak Ostatni kontakt: 26.05.2007

do tego

at

aSe t

To olbar

Bo

kt

N B i n di n g Diagram ych bazy dan

av

ig at or

Sia Visual C# polega na tym, e moesz szybko utworzy co dziaajcego, a nastpnie skupi si na tym, co rzeczywicie Twj program powinien robi a nie na oprogramowywaniu licznych okien, przyciskw i zestawu instrukcji SQL.
80
Rozdzia 1.

a d any m

Stworzye penowartociow aplikacj bazodanow

Obiekty wizualne .NET


o w s.For

Obiekty bazy danych .NET


Ob

Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE

Pami Paczka bazy danych instalatora


Tabela
Obiekty wsparcia diagramu bazy danych

i
O bi ek

ek

Plik programu

ie

k t Tabl e A

Baza danych SQL

Baza danych

Ob

O bi e k t

O bi

O bi e k t

or alat Inst dows Win

w mgnieniu oka.

You might also like