Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00083 015609 13842751 na godz. na dobę w sumie
C#. Rusz głową! - książka
C#. Rusz głową! - książka
Autor: , Liczba stron: 800
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-2953-4 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c# - programowanie
Porównaj ceny (książka, ebook, audiobook).

Rozpocznij przygodę z C# i platformą .NET!

C# to jeden z języków, dzięki którym możesz pisać przenośny kod. Nie musisz się martwić o to, jakiego systemu używa Twój klient. Najważniejsze, żeby posiadał środowisko uruchomieniowe: .NET Framework, Mono lub DotGNU. Czyż nie zawsze marzyłeś o tym żeby napisać kod raz, a potem beż żadnych dodatkowych nakładów uruchamiać go na różnych platformach? Twoje marzenia właśnie się spełniają!

Dzięki tej książce, należącej do cenionej serii 'Rusz głową', opanujesz język C# w mgnieniu oka! Tylko kilkaset stron dzieli Cię od swobodnego poruszania się w kodzie napisanym w tym języku. Każda z tych stron charakteryzuje się odpowiednią dawką humoru, doskonałą przejrzystością oraz perfekcyjnie przekazaną wiedzą. Czego się nauczysz? Przede wszystkim dowiesz się, jak stworzyć działający program w 10 minut. Następnie poznasz elementy programowania obiektowego - takie pojęcia jak hermetyzacja czy dziedziczenie nie będą Ci obce! Kolejne strony przynoszą szeroki zakres wiedzy dotyczący operacji na plikach, obsługi wyjątków oraz tworzenia interfejsu użytkownika. Wreszcie poznasz język LINQ służący do efektywnego operowania na zbiorach danych. 'C#. Rusz głową!' to idealna propozycja dla wszystkich czytelników chcących rozpocząć przygodę z językiem C# oraz platformą .NET.

Zobacz, jakie możliwości kryje język C#. To nie jest trudne!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Idź do • Spis treści • Przykładowy rozdział • Skorowidz Katalog książek • Katalog online • Zamów drukowany katalog Twój koszyk • Dodaj do koszyka Cennik i informacje • Zamów informacje o nowościach • Zamów cennik Czytelnia • Fragmenty książek online Kontakt Helion SA ul. Kościuszki 1c 44-100 Gliwice tel. 32 230 98 63 e-mail: helion@helion.pl © Helion 1991–2011 C#. Rusz głową! Autorzy: Andrew Stellman, Jennifer Greene PSE Tłumaczenie: Piotr Rajca na podstawie „Head First C#. Edycja polska” w tłumaczeniu Pawła Dyla ISBN: 978-83-246-2953-4 Tytuł oryginału: Head First C#: A Learner s Guide to Real-World Programming with Visual C# and .NET Format: 200×230, stron: 800 Rozpocznij przygodę z C# i platformą .NET! • Jak tworzyć kod dla różnych platform? • Jak przygotować środowisko pracy? • Jak operować na dużych zbiorach danych z użyciem LINQ? C# to jeden z języków, dzięki którym możesz pisać przenośny kod. Nie musisz się martwić o to, jakiego systemu używa Twój klient. Najważniejsze, żeby posiadał środowisko uruchomieniowe: .NET Framework, Mono lub DotGNU. Czyż nie zawsze marzyłeś o tym żeby napisać kod raz, a potem beż żadnych dodatkowych nakładów uruchamiać go na różnych platformach? Twoje marzenia właśnie się spełniają! Dzięki tej książce, należącej do cenionej serii „Rusz głową”, opanujesz język C# w mgnieniu oka! Tylko kilkaset stron dzieli Cię od swobodnego poruszania się w kodzie napisanym w tym języku. Każda z tych stron charakteryzuje się odpowiednią dawką humoru, doskonałą przejrzystością oraz perfekcyjnie przekazaną wiedzą. Czego się nauczysz? Przede wszystkim dowiesz się, jak stworzyć działający program w 10 minut. Następnie poznasz elementy programowania obiektowego – takie pojęcia jak hermetyzacja czy dziedziczenie nie będą Ci obce! Kolejne strony przynoszą szeroki zakres wiedzy dotyczący operacji na plikach, obsługi wyjątków oraz tworzenia interfejsu użytkownika. Wreszcie poznasz język LINQ służący do efektywnego operowania na zbiorach danych. „C#. Rusz głową!” to idealna propozycja dla wszystkich czytelników chcących rozpocząć przygodę z językiem C# oraz platformą .NET. • Przygotowanie środowiska pracy, zapoznanie z Visual Studio • Wsparcie Visual Studio dla programisty • Anatomia programu • Praca z debuggerem • Pętle, instrukcje warunkowe • Elementy programowania obiektowego • Typy zmiennych • Referencje • Tablice • Hermetyzacja obiektów • Implementacja interfejsów • Typy wyliczeniowe • Operowanie strumieniami danych • Obsługa wyjątków • Wykorzystanie języka LINQ do operacji na bazach danych i dużych zbiorach informacji • Tworzenie interfejsu użytkownika Zobacz, jakie możliwości kryje język C#. To nie jest trudne! Spis treści Spis treści (skrócony) Wstęp To tylko kod: Pod maską 1 Zwiększ wydajność przy pomocy C#: Aplikacje Visual Studio w 10 minut lub mniej 2 3 Obiekty: zorientuj się! Tworzenie kodu ma sens 4 Typy i referencje: Jest 10:00. Czy wiesz, gdzie są Twoje dane? Laboratorium C# numer 1: Dzień na wyścigach 5 Hermetyzacja: Co ma być ukryte... niech będzie ukryte 6 Dziedziczenie: Drzewo genealogiczne Twoich obiektów 7 8 Interfejsy i klasy abstrakcyjne: Klasy, które dotrzymują swoich obietnic Typy wyliczeniowe i kolekcje: Przechowywanie dużej ilości danych Laboratorium C# numer 2: Wyprawa Powtórka i pokaz: Wiedza, moc i tworzenie ciekawych rzeczy 9 Odczyt i zapis plików: Zapisz tablice bajtów, zapisz świat 10 Obsługa wyjątków: Gaszenie pożarów nie jest już popularne 11 Zdarzenia i delegaty: Co robi Twój kod, kiedy nie patrzysz 12 13 Kontrolki i grafika: Upiększ to 14 Kapitan Wspaniały: Śmierć obiektu 15 LINQ: Przejmij kontrolę nad danymi Laboratorium C# numer 3: Invaders Dodatek A Pozostałości: 11 najważniejszych rzeczy, które chcieliśmy umieścić w tej książce Skorowidz 29 41 79 121 159 201 211 247 299 355 411 433 487 529 563 611 669 707 735 757 791 Spis treści (z prawdziwego zdarzenia) Wstęp W Przygotuj się na C#. Właśnie sobie siedzisz i próbujesz się czegoś nauczyć, ale mózg wciąż powtarza Ci, że cała ta nauka nie jest ważna. Twój umysł mówi: „Lepiej wyjdź z pokoju i zajmij się ważniejszymi sprawami, takimi jak to, których dzikich zwierząt unikać, oraz to, że strzelanie z łuku na golasa nie jest dobrym pomysłem”. W jaki sposób oszukać mózg, tak aby myślał, że Twoje życie naprawdę zależy od nauki C#? Dla kogo jest ta książka? Wiemy, o czym myślisz Metapoznanie: myślenie o myśleniu Zmuś swój mózg do posłuszeństwa Przeczytaj to Grupa korektorów technicznych Podziękowania 30 31 33 35 37 38 39 9 009-028.indd 9 2011-02-19 13:21:18 Spis treści 1 Zwiększ wydajność przy pomocy C# Aplikacje Visual Studio w 10 minut lub mniej Czy chcesz tworzyć wspaniałe programy naprawdę szybko? Wraz z C# dostajesz do ręki potężny język programowania i wartościowe narzędzie. Dzięki Visual Studio IDE do historii przejdą sytuacje, w których musiałeś pisać jakiś nędzny kod, by ponownie zapewnić prawidłowe działanie przycisku. I to nie wszystko. Dodatkowo będziesz mógł skupić się na faktycznym wykonywaniu swojej pracy, zamiast starać się zapamiętać, który parametr metody nazwę przycisku, a który za odpowiadał za nazwę przycisku, a który za wyświetlany na nim tekst. Brzmi zachęcająco? Przewróć nazwę zatem stronę i przystąpmy do programowania. Dlaczego powinieneś uczyć się C# C# oraz Visual Studio ułatwiają wiele czynności Pomóż dyrektorowi naczelnemu zrezygnować z papieru Sprawdź potrzeby Twoich użytkowników, zanim zaczniesz tworzyć program Oto program, który zamierzasz stworzyć Co robisz w Visual Studio Co Visual Studio robi za Ciebie Stwórz interfejs użytkownika Za kulisami Visual Studio Dodaj coś do automatycznie wygenerowanego kodu Potrzebujemy bazy danych do przechowywania naszych informacji IDE utworzyło bazę danych SQL jest swoim własnym językiem Tworzenie tabeli dla listy kontaktowej Zakończ tworzenie tabeli Wstaw dane z kart do bazy Połącz formularz z bazą danych, korzystając ze źródeł danych Dodaj kontrolki powiązane z bazą danych do formularza Jak zamienić TWOJĄ aplikację w aplikację WSZYSTKICH Przekaż aplikację innym użytkownikom Jeszcze nie skończyłeś: przetestuj instalację Stworzyłeś pełnowartościową aplikację bazodanową 42 43 44 45 46 48 48 52 54 55 58 59 59 60 65 66 68 70 75 76 77 78 2011-02-19 13:21:21 Nazwa: Laverne Smith Firma: XYZ Industries Telefon: (212) 555-8129 E-mail: Laverne.Smith@xyzindustries.com Klient: Tak Tak Tak 26.05.2007 Ostatni kontakt: Ostatni kontakt: a z z r r r a ull t yfofofrmrmr ObObOiek Rozwiązania .NET Framework Dostęp do danych 10 009-028.indd 10 Spis treści 2 To tylko kod Pod maską Jesteś programistą, nie jedynie użytkownikiem IDE. IDE może wykonać za Ciebie wiele pracy, ale na razie jest to wszystko, co może dla Ciebie zrobić. Oczywiście, istnieje wiele powtarzalnych czynności podczas pisania aplikacji i IDE okazuje się tu bardzo pomocne. Praca z nim to jednak dopiero początek. Możesz wycisnąć ze swoich programów znacznie więcej — pisanie kodu C# to właśnie droga, która doprowadzi Cię do tego celu. Jak tylko żadnej rzeczy, której Twój program osiągniesz mistrzowski poziom w kodowaniu, nie będzie żadnej rzeczy, której Twój program żadnej nie umiałby zrobić. Kiedy robisz to… …IDE robi to Skąd się biorą programy IDE pomaga Ci kodować Kiedy zmieniasz coś w IDE, zmieniasz także swój kod Anatomia programu Twój program wie, gdzie zacząć W tej samej przestrzeni nazw mogą być dwie klasy Twoje programy używają zmiennych do pracy z danymi C# używa znanych symboli matematycznych Użyj debugera by zobaczyć jak zmieniają się wartości zmiennych Pętle wykonują czynność wielokrotnie Kodowanie czas zacząć Instrukcje if/else podejmują decyzje Ustal warunki i sprawdź, czy są prawdziwe Stwórz ten formularz Za każdym razem, kiedy tworzysz nowy Za każdym razem, kiedy tworzysz nowy Za każdym razem, kiedy tworzysz nowy program, definiujesz dla niego przestrzeń nazw. program, definiujesz dla niego przestrzeń nazw. program, definiujesz dla niego przestrzeń nazw. program, definiujesz dla niego przestrzeń nazw. W ten sposób jego kod jest odseparowany W ten sposób jego kod jest odseparowany W ten sposób jego kod jest odseparowany W ten sposób jego kod jest odseparowany od innych klas platformy .NET. od innych klas platformy .NET. Klasy zawierają fragmenty Klasy zawierają fragmenty fragmenty fragmenty fragmenty fragmenty fragmenty fragmenty fragmenty fragmenty fragmenty fragmenty Klasy zawierają kodu Twojego programu kodu Twojego programu kodu Twojego programu kodu Twojego programu kodu Twojego programu kodu Twojego programu kodu Twojego programu kodu Twojego programu kodu Twojego programu kodu Twojego programu (chociaż istnieją także bar- (chociaż istnieją także bar- (chociaż istnieją także bar- (chociaż istnieją także bar- dzo małe aplikacje składają- dzo małe aplikacje składają- dzo małe aplikacje składają- dzo małe aplikacje składają- ce się z tylko jednej klasy). ce się z tylko jednej klasy). ce się z tylko jednej klasy). Klasa posiada jedną lub wię- Klasa posiada jedną lub wię- Klasa posiada jedną lub wię- cej metod. Twoje metody cej metod. Twoje metody cej metod. Twoje metody cej metod. Twoje metody zawsze będą umieszczane zawsze będą umieszczane zawsze będą umieszczane zawsze będą umieszczane zawsze będą umieszczane zawsze będą umieszczane wewnątrz klas wewnątrz klas wewnątrz klas wewnątrz klas wewnątrz klas wewnątrz klas wewnątrz klas , a każda , a każda z nich będzie się składała z nich będzie się składała z nich będzie się składała z nich będzie się składała z nich będzie się składała z nich będzie się składała z instrukcji i wyrażeń — z instrukcji i wyrażeń — z instrukcji i wyrażeń — z instrukcji i wyrażeń — jak te, które do tej pory jak te, które do tej pory jak te, które do tej pory jak te, które do tej pory widziałeś. widziałeś. Przestrzeń nazw Klasa Metoda 1 instrukcja instrukcja Metoda 2 instrukcja instrukcja 80 81 82 84 86 88 90 97 98 100 101 103 104 105 106 11 009-028.indd 11 2011-02-19 13:21:21 Spis treści 3 N a v i g a t o r ( ) n e w new Navigator() n new Navigator() r o O O O b b iekt N a vigatata r o O O O b b iekt N a vigatata r o O O O b b iekt N a vigatata Kiedy definiujesz klasę, definiujesz także jej metody, podobnie jak projekt definiuje układ pomieszczeń w domu. Możesz użyć jednego projektu do zbudowania dowolnej liczby domów. Możesz również przy użyciu jednej klasy utworzyć każdą liczbę obiektów. 12 009-028.indd 12 Obiekty: zorientuj się! Tworzenie kodu ma sens Każdy pisany przez Ciebie program rozwiązuje jakiś problem. Rozpoczynając pisanie programu zawsze warto zacząć od zastanowienia się, jaki problem ma on rozwiązywać. Pozwalają one tworzyć strukturę kodu tak, by odpowiadała ona rozwiązywanemu problemowi, dzięki czemu będziesz mógł skoncentrować się na samym problemie, a nie ma mechanice tworzenia kodu. Prawidłowe użycie obiektów spowoduje, intuicyjny, a jego późniejsza analiza i modyfikacja że proces pisania kodu stanie się bardziej intuicyjny, a jego późniejsza analiza i modyfikacja intuicyjny — znacznie łatwiejsze. W jaki sposób Maciek myśli o swoich problemach W jaki sposób system nawigacyjny w samochodzie Maćka rozwiązuje jego problemy Klasa Navigator napisana przez Maćka posiada metody do ustalania i modyfikacji tras Wykorzystaj to, czego się nauczyłeś, do napisania prostego programu używającego klas Maciek może użyć obiektów do rozwiązania swojego problemu Używasz klasy do utworzenia obiektu Kiedy tworzysz obiekt na podstawie klasy, to taki obiekt nazywamy instancją klasy Lepsze rozwiązanie... uzyskane dzięki obiektom! Instancja używa pól do przechowywania informacji Stwórzmy kilka instancji! Dzięki za pamięć Co Twój program ma na myśli Możesz używać nazw klas i metod w celu uczynienia kodu bardziej intuicyjnym Nadaj swojej klasie naturalną strukturę Diagramy klas pozwalają w sensowny sposób zorganizować klasy Utwórz klasę do pracy z kilkoma facetami Utwórz projekt dla facetów Utwórz formularz do interakcji z facetami Jest jeszcze prostszy sposób inicjalizacji obiektów 122 123 124 125 128 129 130 131 136 137 138 139 140 142 144 148 149 150 153 2011-02-19 13:21:24 Spis treści 4 Typy i referencje Jest 10:00. Czy wiesz, gdzie są Twoje dane? Typ danych, baza danych, dane komandora porucznika… wszystko to są ważne rzeczy. Bez danych Twoje programy są bezużyteczne. Potrzebujesz informacji dostarczanych przez użytkowników. Na jej podstawie wyszukujesz lub tworzysz nową informację i zwracasz ją użytkownikom. W rzeczywistości prawie wszystko, co robisz podczas programowania, sprowadza się do pracy z danymi w taki czy w inny sposób. W tym rozdziale dowiesz się o różnych aspektach typów danych C#, nauczysz się pracować z danymi w programie, a nawet odkryjesz kilka pilnie strzeżonych sekretów o obiektach (psssst... obiekty to także dane). Typ zmiennej określa rodzaj danych, jakie zmienna może przechowywać Zmienna jest jak kubek z danymi 10 kilogramów danych w pięciokilogramowej torebce Nawet wtedy, gdy liczba ma prawidłowy rozmiar, nie możesz przypisać jej do każdej zmiennej Kiedy rzutujesz wartość, która jest zbyt duża, C# dopasowuje ją automatycznie C# przeprowadza niektóre rzutowania automatycznie Kiedy wywołujesz metodę, zmienne muszą pasować do typów parametrów Połączenie = z operatorem Także obiekty używają zmiennych Korzystaj ze swoich obiektów za pomocą zmiennych referencyjnych Referencje są jak etykiety do Twoich obiektów Jeżeli nie ma już żadnej referencji, Twoje obiekty są usuwane z pamięci Referencje wielokrotne i ich efekty uboczne Dwie referencje oznaczają DWA sposoby na zmianę danych obiektu Specjalny przypadek: tablice Witamy w barze Niechlujny Janek — najtańsze kanapki w mieście! Obiekty używają referencji do komunikacji między sobą Tam, gdzie obiektów jeszcze nie było Napisz grę w literki 160 162 163 164 165 166 167 172 173 174 175 176 177 182 183 185 187 188 193 13 11 r e l u c k y OO O O bb b iiekktktk DD o g numumu fi do 22 r e OO O OO O bb b b iiektktk Do g numumu l u c k y 11 r e OO O OO O bb b b iieekkttktk DD o g numumu pyk! fi do 22 r e OO O OO O bb b b iektktk Do g numumu 009-028.indd 13 2011-02-19 13:21:25 Spis Spis Spis Spis treści Laboratorium C# numer 1 Dzień na wyścigach Janek, Bartek i Arek uwielbiają chodzić na tor wyścigowy, ale ciągła utrata pieniędzy powoduje u nich frustrację. Potrzebują symulatora, aby mogli określić zwycięzcę, zanim wyłożą pieniądze na zakłady. Jeśli dobrze wywiążesz się z zadania, będziesz miał procenty z ich wygranych. Specyfikacja: stwórz symulator wyścigów Końcowy produkt 202 210 14 14 14 14 009-028.indd 14 2011-02-19 13:21:25 Spis treści 5 Hermetyzacja Co ma być ukryte… niech będzie ukryte Czy kiedykolwiek marzyłeś o odrobinie prywatności? Czasami Twoje obiekty czują się tak samo. Na pewno nie lubisz sytuacji, w których ktoś, komu nie ufasz, czyta Twój pamiętnik lub przegląda wykazy Twoich operacji bankowych. Dobre obiekty nie pozwalają innym obiektom na oglądanie swoich pól. W tym rozdziale nauczysz się wykorzystywać potęgę innym obiektom na oglądanie swoich pól. W tym rozdziale nauczysz się wykorzystywać potęgę innym hermetyzacji. Sprawisz, że dane obiektów będą prywatne i dodasz metody, które pozwolą Ci na zabezpieczenie dostępu do danych. Krystyna planuje przyjęcia Co powinien robić program szacujący? Jazda próbna Krystyny Każda opcja powinna być obliczana osobno Bardzo łatwo przez przypadek źle skorzystać z obiektów Hermetyzacja oznacza, że niektóre dane w klasie są prywatne Użyj hermetyzacji w celu kontroli dostępu do metod i pól Twojej klasy Ale czy jego prawdziwa tożsamość jest NAPRAWDĘ chroniona? Dostęp do prywatnych pól i metod można uzyskać tylko z wnętrza klasy Hermetyzacja utrzymuje Twoje dane w nieskazitelnym stanie Właściwości sprawią, że hermetyzacja będzie łatwiejsza Stwórz aplikację do przetestowania klasy Farmer Użyj automatycznych właściwości do ukończenia klasy Co wtedy, gdy chcemy zmienić pole mnożnika wyżywienia? Użyj konstruktora do inicjalizacji pól prywatnych 212 213 218 220 222 223 224 225 226 234 235 236 237 238 239 ciaAaAa gA gA e nt kgbbAAbAbbAb g ent mi5A5A5 g ent Ilość gości. Jedzenie (25 zł od osoby) Opcja zdrowa? Tak NieNie Soki i napoje gazowane (5 zł od osoby + 5 rabatu na całe przyjęcie) Alkohol (20 zł od osoby) Dekoracje fantazyjne? Tak Dekoracje fantazyjne (15 zł od osoby + 50 zł opłaty za dekoracje) NieNieNie Zwykła deko- racja (7,50 zł od osoby + 30 zł opłaty za dekoracje) 009-028.indd 15 15 2011-02-19 13:21:27 Spis treści 6 Dziedziczenie Drzewo genealogiczne Twoich obiektów Czasami CHCIAŁBYŚ być dokładnie taki sam jak Twoi rodzice. Czy kiedykolwiek natknąłeś się na obiekt, który robiłby prawie wszystko, czego byś sobie od niego życzył? prawie wszystko, czego byś sobie od niego życzył? prawie Czy kiedykolwiek znalazłeś się w takiej sytuacji, że gdybyś zmienił dosłownie kilka rzeczy, obiekt byłby doskonały? Cóż, to tylko jeden z wielu powodów, które sprawiają, rzeczy, obiekt byłby doskonały? Cóż, to tylko jeden z wielu powodów, które sprawiają, rzeczy że dziedziczenie zalicza się do najważniejszy koncepcji i technik w języku C#. Kiedy skończysz czytać ten rozdział, dowiesz się jak rozszerzać obiekty, by móc wykorzystać ich zachowania i jednocześnie dysponować elastycznością, która pozwoli Ci te zachowania modyfikować. Unikniesz wielokrotnego pisania kodu, przedstawisz prawdziwy świat znacznie dokładniej, a w efekcie otrzymasz kod łatwiejszy do zarządzania. Krystyna organizuje także przyjęcia urodzinowe Potrzebujemy klasy BirthdayParty Stwórz program Planista przyjęć w wersji 2.0 Kiedy klasy używają dziedziczenia, kod musi być napisany tylko raz Zbuduj model klasy, rozpoczynając od rzeczy ogólnych i przechodząc do bardziej konkretnych W jaki sposób zaprojektowałbyś symulator zoo? Użyj dziedziczenia w celu uniknięcia zwielokrotniania kodu w klasach potomnych Pomyśl, w jaki sposób pogrupować zwierzęta Stwórz hierarchię klas Każda klasa pochodna rozszerza klasę bazową Klasa pochodna może przesłaniać odziedziczone metody w celu ich modyfikacji lub zmiany W każdym miejscu, gdzie możesz skorzystać z klasy bazowej, możesz zamiast niej użyć jednej z jej klas pochodnych Klasa pochodna może ukrywać metody klasy bazowej Używaj override i virtual by dziedziczyć zachowania Teraz jesteś już gotowy do dokończenia zadania Krystyny Stwórz system zarządzania ulem Najpierw stworzysz system podstawowy Użyj dziedziczenia, aby rozszerzyć system zarządzania pszczołami 248 249 250 258 259 260 261 263 264 265 270 271 278 280 284 289 290 294 16 009-028.indd 16 2011-02-19 13:21:27 Spis treści 7 Interfejsy i klasy abstrakcyjne Klasy, które dotrzymują swoich obietnic Czyny potrafią powiedzieć więcej niż słowa. Czasami potrzebujesz pogrupować swoje obiekty na podstawie tego, co robią, zamiast tego, po jakiej klasie dziedziczą. To jest moment, w którym należy powiedzieć o interfejsach. Pozwalają one na pracę z każdą klasą, która jest w stanie wykonać daną czynność. Z wielkimi możliwościami przychodzą wielkie obowiązki i każda klasa, która implementuje interfejs, musi wypełnić wszystkie swoje… albo kompilator połamie Ci kolana, zrozumiałeś? Wróćmy do pszczelej korporacji Możemy użyć dziedziczenia do utworzenia klas dla różnych typów pszczół Interfejs daje klasie do zrozumienia, że musi ona zaimplementować określone metody i właściwości Użyj słowa kluczowego interface do zdefiniowania interfejsu Klasy implementujące interfejsy muszą zawierać WSZYSTKIE ich metody Nie możesz utworzyć instancji interfejsu, ale możesz uzyskać jego referencję Referencje interfejsów działają tak samo jak referencje obiektów Za pomocą „is” możesz sprawdzić, czy klasa implementuje określony interfejs Interfejsy mogą dziedziczyć po innych interfejsach Rzutowanie w górę działa w odniesieniu do obiektów i interfejsów Rzutowanie w dół pozwala zamienić urządzenie z powrotem w ekspres do kawy Rzutowanie w górę i w dół działa także w odniesieniu do interfejsów Jest coś więcej niż tylko public i private Modyfikatory dostępu zmieniają widoczność Obiekty niektórych klas nigdy nie powinny być tworzone Klasa abstrakcyjna jest jak skrzyżowanie klasy i interfejsu Metoda abstrakcyjna nie ma ciała Polimorfizm oznacza, że jeden obiekt może przyjmować wiele różnych postaci Dziedziczenie Abstrakcja Hermetyzacja Polimorfizm Salon Jadalnia Kuchnia Podwórko przed domem Podwórko za domem Ogród 300 301 302 303 305 308 309 310 311 315 316 317 321 322 325 326 329 337 17 009-028.indd 17 2011-02-19 13:21:27 Spis treści 8 Typy wyliczeniowe i kolekcje Przechowywanie dużej ilości danych Z deszczu pod rynnę. W rzeczywistym świecie nie musisz się zwykle zajmować danymi w małych ilościach i w niewielkich fragmentach. Nie, Twoje dane przychodzą do Ciebie w grupach, stosach, pękach, kopach. Potrzebujesz jakiegoś potężnego narzędzia do ich zorganizowania. Nadszedł czas, aby przedstawić kolekcje. Pozwalają one przechowywać i sortować dane, a także zarządzać wszystkimi danymi, które Twój program musi przeanalizować. W ten sposób możesz myśleć o pisaniu programów do pracy z danymi, a samo ich przechowywanie zostawić kolekcjom. Łańcuchy znaków nie zawsze sprawdzają się przy kategoryzowaniu danych Typy wyliczeniowe pozwalają Ci wyliczyć prawidłowe wartości Typy wyliczeniowe pozwalają na reprezentowanie liczb za pomocą nazw Możesz użyć tablicy, aby stworzyć talię kart... Listy są bardziej elastyczne niż tablice Typy generyczne mogą przechowywać każdy typ Inicjalizatory kolekcji działają tak samo jak inicjalizatory obiektu Stwórzmy listę kaczek Listy są proste, ale SORTOWANIE może być skomplikowane IComparable T pomoże Ci posortować listę kaczek Użyj interfejsu IComparer, aby powiedzieć liście, jak ma sortować Utwórz instancję obiektu porównującego IComparer może wykonywać złożone porównania Przesłonienie metody ToString() pozwala obiektom przedstawiać się Zmień pętle foreach tak, by obiekty Duck i Card same się opisywały Używając IEnumerable możesz rzutować całą listę w górę Możesz tworzyć własne przeciążone metody Wybrane funkcjonalności słownika Napisz program korzystający ze słownika I jeszcze WIĘCEJ typów kolekcji... Kolejka działa według reguły: pierwszy przyszedł, pierwszy wyszedł Stos działa według reguły: ostatni przyszedł, pierwszy wyszedł 356 357 358 361 364 368 372 373 374 375 376 377 378 381 382 384 385 392 393 405 406 407 pyk! 18 009-028.indd 18 2011-02-19 13:21:27 Spis Spis Spis Spis treści Laboratorium C# numer 2 Wyprawa Twoim zadaniem jest stworzenie gry przygodowej, w której potężny 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 następnie ruch wykonuje przeciwnik. Gracz może przesunąć się lub zaatakować; potem możliwość ruchu i ataku dostaje każdy z wrogów. Gra toczy się do czasu, aż gracz pokona wszystkich przeciwników na wszystkich siedmiu poziomach lub zginie. Specyfikacja: stwórz grę przygodową Zabawa dopiero się zaczyna! 412 432 009-028.indd 19 19191919 2011-02-19 13:21:27 Spis treści 9 Odczyt i zapis plików Zapisz tablice bajtów, zapisz świat Czasami opłaca się być trwałym. Do tej pory wszystkie programy były krótkotrwałe. Uruchamiały się, działały przez chwilę i były zamykane. Czasami nie jest to wystarczające, zwłaszcza jeżeli zajmujesz się ważnymi danymi. Musisz mieć możliwość zapisania swojej pracy. W tym rozdziale pokażemy sposób zapisywania danych do pliku, a następnie wczytania tych informacji z powrotem do programu. Dowiesz się co nieco o klasach strumieni .NET i zetkniesz się z tajemnicami systemów szesnastkowego i dwójkowego. C# używa strumieni do zapisu i odczytu danych Różne strumienie zapisują i odczytują różne rzeczy FileStream zapisuje bajty do pliku W jaki sposób zapisać tekst do pliku w trzech prostych krokach Zapis i odczyt wymaga dwóch obiektów Dane mogą przechodzić przez więcej niż jeden strumień Użyj wbudowanych obiektów do wyświetlenia standardowych okien dialogowych Okna dialogowe są kolejnymi kontrolkami .NET Okna dialogowe także są obiektami Używaj wbudowanych klas File oraz Directory do pracy z plikami i katalogami Używaj okien dialogowych do otwierania i zapisywania plików Dzięki IDisposable obiekty usuwane są prawidłowo Unikaj błędów systemowych, korzystając z instrukcji using Zapisywanie danych do plików wymaga wielu decyzji Użyj instrukcji switch do wyboru właściwej opcji Serializacja pozwala Ci zapisywać lub odczytywać całe obiekty na raz .NET automatycznie konwertuje tekst do postaci Unicode C# może użyć tablicy bajtów do przesyłania danych Pliki utworzone dzięki serializacji można także zapisywać i odczytywać ręcznie Praca z plikami binarnymi może być skomplikowana StreamReader i StreamWriter będą do tego odpowiednie Użyj Stream.Read() do odczytywania bajtów ze strumienia 434 435 436 437 441 442 445 446 447 448 451 453 454 460 461 468 473 474 477 479 481 482 m m a a O O O bb b iektFi l e Strea m m a a O O O bb b iektFi l e Strea m m a a O O O b b iektFi l e Strea 6 9 117 114101107973 33 m m a a O O O b b iektFi l e Strea 20 009-028.indd 20 2011-02-19 13:21:28 Spis treści 10 Obsługa wyjątków Gaszenie pożarów nie jest już popularne Programiści nie mają być strażakami. Pracowałeś jak wół, przebrnąłeś przez dokumentacje techniczne i kilka zajmujących książek Rusz Głową!, wspiąłeś się na szczyt swoich możliwości: jesteś mistrzem programistów. W dalszym ciągu musisz jednak odrywać się od pracy, ponieważ program wyłącza się lub nie zachowuje się tak, jak powinien. Nic nie wybija Cię z rytmu tak, jak obowiązek naprawienia dziwnego błędu... Z obsługą wyjątków możesz jednak napisać kod, który poradzi sobie z pojawiającymi się problemami. Jest nawet lepiej, możesz bowiem zareagować na ich pojawienie się i sprawić, że wszystko będzie dalej działało. Praca jest dzisiaj nudna. Chciałbym ponurkować. Czas na uruchomienie mojego generatora wymówek. Damian potrzebuje swoich wymówek, aby być mobilnym Kiedy program zgłasza wyjątek, .NET tworzy obiekt Exception Wszystkie obiekty wyjątków dziedziczą po Exception Debuger pozwala Ci wyśledzić wyjątki w kodzie i zapobiec im Użyj debugera wbudowanego w IDE, aby znaleźć problem w programie do zarządzania wymówkami Obsłuż wyjątki za pomocą try i catch Co się stanie, jeżeli wywoływana metoda będzie niebezpieczna? Użyj debugera do prześledzenia przepływu w blokach try/catch Jeśli posiadasz kod, który ZAWSZE musi zostać wykonany, zastosuj finally Jedna klasa zgłasza wyjątek, inna klasa go wyłapuje Pszczoły potrzebują wyjątku OutOfHoney Łatwy sposób na uniknięcie licznych problemów: using umożliwia Ci stosowanie try i finally za darmo Unikanie wyjątków: zaimplementuj IDisposable, aby przeprowadzić własne procedury sprzątania Najgorszy z możliwych bloków catch: komentarze Tymczasowe rozwiązania są dobre (tymczasowo) Kilka wskazówek dotyczących obsługi wyjątków Damian w końcu pojechał na urlop... 488 492 496 497 498 503 504 506 508 515 516 519 520 522 523 524 527 21 009-028.indd 21 2011-02-19 13:21:30 Spis treści 11 Zdarzenia i delegaty Co robi Twój kod, kiedy nie patrzysz Twoje obiekty zaczynają myśleć o sobie. Nie możesz zawsze kontrolować tego, co robią Twoje obiekty. Czasami różne rzeczy... zdarzają się. Kiedy to następuje, chciałbyś, aby Twoje obiekty były wystarczająco sprytne i odpowiednio reagowały. To miejsce, w którym do akcji wkraczają zdarzenia. Jeden obiekt udostępnia zdarzenie, inny je obsługuje i wszystko obsługuje i wszystko obsługuje udostępnia zdarzenie, inny je udostępnia pracuje razem, aby całość działała sprawnie. Jest to wspaniałe, o ile nie chcesz, by Twój obiekt mógł kontrolować kto będzie mógł nasłuchiwać jego zdarzeń. Wtedy bardzo pomocne okazują się funkcje zwrotne. Czy kiedykolwiek marzyłeś o tym, aby Twoje obiekty potrafiły samodzielnie myśleć? Ale skąd obiekt WIE, że ma odpowiedzieć? Kiedy wystąpi ZDARZENIE... obiekty nasłuchują Jeden obiekt wywołuje zdarzenie, inne nasłuchują... Potem inne obiekty obsługują zdarzenie Łącząc punkty IDE automatycznie tworzy za Ciebie procedury obsługi zdarzeń Ogólny typ EventHandler pozwala definiować własne typy zdarzeń Wszystkie formularze, które utworzyłeś, używają zdarzeń Jedno zdarzenie, wiele procedur obsługi Połączenie nadawców zdarzenia z jego odbiorcami Delegat ZASTĘPUJE właściwą metodę Delegat w akcji Każdy obiekt może subskrybować publiczne zdarzenie... Użyj funkcji zwrotnej, by wiedzieć kto nasłuchuje Funkcje zwrotne są jedynie sposobem używania delegatów 530 530 531 532 533 534 538 544 545 546 548 549 550 553 554 556 Kiedy piłka zostaje uderzona, wywoływana jest metoda BallHasBeenHit(). Piłka została uderzona pod kątem 70 stopni w stosunku do poziomu i poleci na odle- głość 82 metrów. OO biekt B a ll 22 O bb iektPitc hh e r Chcemy, aby obiekt Pitcher złapał tę piłkę. Zawodnik może zająć się piłką uderzoną pod tym kątem i na daną odległość (90 jest większe niż 82). 009-028.indd 22 2011-02-19 13:21:30 Spis treści 12 Powtórka i pokaz Wiedza, moc i tworzenie ciekawych rzeczy Uczenie się nie jest dobre, dopóki czegoś nie ZBUDUJESZ. Dopóki nie napiszesz kodu, który działa, nie będziesz miał pewności czy na pewno zrozumiałeś najtrudniejsze zagadnienia języka C#. W tym rozdziale mamy zamiar sprawdzić czego się nauczyłeś. Przedstawimy w nim także kilka nowych zagadnień, którymi już niebawem się zajmiemy. Wszystko to będzie stanowić pierwszy etap prac nad naprawdę złożoną aplikacją, która ma Ci pokazać, czy naprawdę dobrze opanowałeś zagadnienia opisywane w poprzednich rozdziałach. A zatem przygotuj się… nadszedł czas pisania programu! Życie i śmierć kwiatów Age = 0 Nectar = 1.5 Flower Obiek tk tk Age = 17809 Nectar = 3.2 Flower Obiek tk tk Age = 30291 ŚM I E R Ć Nectar = .83 Alive = false FFllower Obiek tk tk Przebyłeś długą drogę Zajmowaliśmy się także pszczołami Architektura symulatora ula Budowanie symulatora ula Życie i śmierć kwiatów Teraz potrzebujemy klasy Bee PPBP (Programiści Przeciwko Bezdomnym Pszczołom) Ul działa na miód Wypełnianie klasy Hive Metoda Go() klasy Hive Jesteśmy gotowi na stworzenie świata Tworzymy system turowy Oto kod klasy World Uczenie pszczół zachowań Główny formularz wywołuje Go() dla całego świata Możemy użyć obiektu World do pobrania statystyk Zegary sygnalizują zdarzenia wielokrotnie Za kulisami zegar używa zdarzeń Pracujmy z grupami pszczół Kolekcje kolekcjonują... DANE LINQ ułatwia pracę z danymi w kolekcjach i bazach danych Ostatnie wyzwanie: Otwórz i Zapisz 564 565 566 567 571 572 576 576 580 581 582 583 584 590 592 593 594 595 602 603 605 607 23 009-028.indd 23 2011-02-19 13:21:30 Spis treści 13 Kontrolki i grafika Upiększ to Czasami musisz wziąć sprawy grafiki we własne ręce. Przez większość czasu polegaliśmy na kontrolkach i w naszych aplikacjach korzystaliśmy z ich możliwości obsługi grafiki. Czasami to wszystko nie wystarcza — na przykład wtedy, gdy chcesz animować obrazek. Jeśli już przejdziesz do animacji, będziesz musiał dla programu .NET stworzyć własne kontrolki, być może dodając podwójne buforowanie. Czasem nawet będziesz zmuszony do rysowania bezpośrednio na formularzach. Wszystko to zaczyna się od obiektu Graphics, obiektów Bitmap i determinacji, aby zburzyć dotychczasowy porządek w zarządzaniu grafiką. Cały czas do interakcji z programami używałeś kontrolek Kontrolki formularza są tylko obiektami Użyj kontrolek do animacji symulatora ula Dodaj do projektu rendering Kontrolki są dobrze dostosowane do wyświetlania różnych elementów wizualnych Stwórz swoją pierwszą animowaną kontrolkę Utwórz przycisk, aby dodać BeeControl do formularza Twoje kontrolki także muszą usuwać swoje kontrolki! UserControl to dobry sposób na tworzenie kontrolek Mechanizm renderujący używa BeeControl do rysowania animowanych pszczół na formularzu Dodaj do projektu formularze reprezentujące ul i pole Stwórz klasę Renderer Zmieniłeś rozmiar bitmap przy pomocy obiektu Graphics Zasoby Twoich obrazków przechowywane są w postaci obiektów Bitmap Użyj System.Drawing, by samemu PRZEJĄĆ KONTROLĘ nad grafiką 30-sekundowa podróż do świata tajemnic grafiki GDI+ Użyj Graphics, aby na formularzu narysować obrazek Klasa Graphics może usunąć problem przezroczystości... Użyj zdarzenia Paint, aby grafika była mocno związana z formularzem Bliższe spojrzenie na sposób rysowania formularzy i kontrolek Podwójne buforowanie czyni animację bardziej płynną Użyj obiektu Graphics i procedury obsługi zdarzenia do drukowania 612 613 614 616 618 621 624 625 626 628 630 631 640 641 642 643 644 649 650 653 656 662 24 009-028.indd 24 2011-02-19 13:21:31 Spis treści Kapitan Wspaniały Kapitan Wspaniały Kapitan Wspaniały Kapitan Wspaniały 14 Kapitan Wspaniały Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Śmierć obiektu Twoją ostatnią szansą na ZROBIENIE czegoś… jest użycie finalizatora Kiedy DOKŁADNIE wywoływany jest finalizator? Dispose() działa z using, a finalizatory działają z mechanizmem oczyszczania pamięci Finalizatory nie mogą polegać na stabilności Spraw, aby obiekt serializował się w Dispose() Struktura jest podobna do obiektu… … ale nie jest obiektem Wartości są kopiowane, referencje są przypisywane Stos i sterta: więcej na temat pamięci Używaj parametrów wyjściowych by zwracać z metody więcej niż jedną wartość Przekazuj referencje, używając modyfikatora ref Używaj parametrów opcjonalnych, by określać wartości domyślne Jeśli musisz używać wartości pustych, stosuj typy, które je akceptują Typy akceptujące wartości puste poprawiają odporność programów Kapitan Wspaniały… nie tak bardzo Metody rozszerzające zwiększają funkcjonalność ISTNIEJĄCYCH klas Rozszerzanie podstawowego typu: string Obiektowie 676 677 678 680 681 685 685 686 689 692 693 694 695 696 699 700 702 25 009-028.indd 25 2011-02-19 13:21:32 Spis treści 15 LINQ Przejmij kontrolę nad danymi To świat przepełniony danymi... lepiej żebyś wiedział, jak w nim żyć. Czasy, gdy mogłeś programować kilka dni, a nawet kilka tygodni, bez konieczności pracy z ogromem danych, minęły już bezpowrotnie. Nadeszła epoka, w której wszystko opiera się na danych. W rzeczywistości dość często będziesz musiał pracować z danymi, które pochodzą z więcej niż jednego źródła... i będą zapisane w różnych formatach. Bazy danych, XML, kolekcje z innych programów... wszystko to jest częścią pracy dobrego programisty C#. W tym miejscu do dzieła wkracza LINQ. To nie tylko sposób na pobieranie danych w prosty, intuicyjny sposób. Pozwala on także grupować i łączyć dane pochodzące z różnych źródeł. Łatwy projekt… …ale dane są w różnych miejscach Dzięki LINQ możesz pobrać dane z różnych źródeł Kolekcje .NET są przystosowane do działania z LINQ LINQ ułatwia wykonywanie zapytań LINQ jest prosty, ale Twoje zapytania wcale takie być nie muszą LINQ ma wiele zastosowań LINQ może połączyć Twoje wyniki w grupy Połącz wartości Janka w grupy Użyj Join do połączenia dwóch kolekcji w jednym zapytaniu Janek zaoszczędził mnóstwo szmalu Połącz LINQ z bazą danych SQL Użyj join, aby połączyć dane Starbuzz i Papierni Obiektowo 708 709 710 711 712 713 716 721 722 725 726 728 732 26 009-028.indd 26 2011-02-19 13:21:32 Spis Spis Spis Spis treści Laboratorium C# numer 3 Invaders Dzięki temu laboratorium oddasz hołd jednej z najbardziej popularnych, czczonych i powielanych ikon w historii gier komputerowych. Nie potrzebuje ona żadnego wprowadzenia. Czas utworzyć grę Invaders. Dziadek wszystkich gier Można zrobić znacznie więcej... 736 755 009-028.indd 27 27272727 2011-02-19 13:21:33 Spis treści A Pozostałości 11 najważniejszych rzeczy, które chcieliśmy umieścić w tej książce Zabawa dopiero się zaczyna! Pokazaliśmy Ci mnóstwo wspaniałych narzędzi do tworzenia naprawdę potężnych programów w C#. Nie jest jednak możliwe, abyśmy w tej książce zmieścili każde narzędzie, technologię i technikę — nie ma ona po prostu tylu stron. Musieliśmy podjąć naprawdę przemyślaną decyzję, co umieścić, a co pominąć. Oto kilka tematów, których nie mogliśmy przedstawić. Pomimo tego, że nie zajęliśmy się nimi, w dalszym ciągu myślimy, że są one ważne i przydatne. Należałoby więc chociaż o nich wspomnieć — tak też zrobiliśmy. 1. Podstawy 2. Przestrzenie nazw i złożenia 3. Użyj BackgroundWorker, by poprawić działanie interfejsu użytkownika 4. Klasa Type oraz metoda GetType() 5. Równość, IEquatable oraz Equals() 6. Stosowanie yield return do tworzenia obiektów umożliwiających iterację 7. Refaktoryzacja 8. Anonimowe typy i metody oraz wyrażenia lambda 9. Serializacja przy użyciu DataContractSerializer 10. Zastosowanie LINQ to XML 11. Windows Presentation Foundation Czy wiesz, że C# i .NET Framework potrafią… S Skorowidz 758 764 768 771 772 775 778 780 782 784 786 788 791 2011-02-19 13:21:33 28 009-028.indd 28 1. Zwiększ wydajność przy pomocy C# Aplikacje Visual Studio w 10 minut lub mniej Nie martw się mamo. Z Visual Studio oraz C# będziesz mogła programować tak szybko, że już nigdy więcej nie przypalisz garnka z pieczenią. z pieczenią. Czy chcesz tworzyć wspaniałe programy naprawdę szybko? Wraz z C# dostajesz do ręki potężny język programowania i wartościowe narzędzie. Dzięki Visual Studio IDE do historii przejdą sytuacje, w których musiałeś pisać jakiś nędzny kod, by ponownie zapewnić prawidłowe działanie przycisku. I to nie wszystko. Dodatkowo będziesz mógł skupić się na faktycznym wykonywaniu swojej pracy, zamiast starać się zapamiętać, nazwę przycisku, a który za który parametr metody odpowiadał za nazwę przycisku, a który za nazwę Brzmi zachęcająco? Przewróć zatem stronę i przystąpmy do programowania. wyświetlany na nim tekst. 041-078.indd 41 2011-02-19 13:33:27 to jest nowy rozdział 41 C# to ułatwia Dlaczego powinieneś uczyć się C# Dlaczego powinieneś uczyć się C# C# oraz Visual Studio IDE ułatwiają Ci poznanie tajników pisania kodu i, co ważne, pisania go szybko. Kiedy pracujesz z C#, pakiet Visual Studio jest Twoim najlepszym przyjacielem oraz stałym kompanem. IDE — lub Visual Studio Integrated Development Environment — pełni ważną rolę w pracy z C#. To program, który pozwala Ci edytować kod, zarządzać plikami, a także publikować Twoje projekty. A oto lista czynności, które IDE wykonuje za Ciebie: Za każdym razem, kiedy zamierzasz rozpocząć pisanie programu lub chociażby umieścić przycisk na formularzu, Twój program potrzebuje całej masy powtarzającego się kodu. using System; using System.Collections.Generic; using System.Windows.Forms; namespace A_New_Program namespace A_New_Program namespace A_New_Program { { static class Program { /// The main entry point for the application. /// The main entry point for the application. /// The main entry point for the application. /// The main entry point for the application. /// summary /// summary /// summary /// /summary /// /summary [STAThread] static void Main() Application.EnableVisualStyles(); { Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } Co otrzymujesz razem z Visual Studio oraz C#? Z językiem C#, przystosowanym do programowania Windows, oraz Visual Studio IDE możesz natychmiast skupić się na tym, co powinien robić Twój program. private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // // // button1 // button1 // button1 // button1 // // this.button1.Location = new System.Drawing.Point(105, 56); this.button1.Name = “button1”; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = “button1”; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); this.button1.Click += new System.EventHandler(this.button1_Click); this.button1.Click += new System.EventHandler(this.button1_Click); // // // // // Form1 // Form1 // Form1 // Form1 // // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 267); this.Controls.Add(this.button1); this.Name = “Form1”; this.Text = “Form1”; this.ResumeLayout(false); } Tyle kodu potrzeba, aby narysować przycisk na formularzu. Dodanie do niego nieco większej ilości elementów wizualnych może spowodować, że wynikowy kod będzie dziesięć razy dłuższy. Wynikiem jest lepiej działająca aplikacja, której napisanie zabiera mniej czasu. a z r a ul f ormrmr Obiekt y Rozwiązania .NET Framework C# oraz Visual Studio IDE posiadają wcześniej przygotowane struktury zarządzające nudnym kodem, który jest elementem najczęściej wykonywanych zadań programistycznych. 42 Rozdział 1. D o s t ę p D o s t ę p d o d a n y c h 041-078.indd 42 2011-02-19 13:33:28 Zwiększ wydajność za pomocą C# C# oraz Visual Studio ułatwiają wiele czynności Kiedy używasz C# i Visual Studio, dostajesz wiele wspaniałych możliwości bez żadnego dodatkowego nakładu pracy. Reasumując, uzyskujesz możliwość: 1 2 3 4 Tworzenia aplikacji SZYBKO. Tworzenie programów w C# jest niczym robienie zdjęć aparatem cyfrowym. Język jest potężny i łatwy do opanowania, natomiast Visual Studio IDE przejmuje ogromną część pracy i wykonuje ją za Ciebie automatycznie. Możesz zostawić przyziemne sprawy związane z kodowaniem IDE, a samemu skupić się na tym, co Twój kod powinien wykonywać. Zaprojektowania wspaniale wyglądającego interfejsu użytkownika. Form Designer w środowisku Visual Studio IDE jest jednym z najprostszych istniejących narzędzi do projektowania. Robi za Ciebie tak wiele, że kreowanie oszałamiających interfejsów staje się jedną z najbardziej satysfakcjonujących czynności podczas tworzenia aplikacji w C#. Możesz budować profesjonalne, w pełni funkcjonalne programy bez niepotrzebnego tracenia wielu godzin na pisanie po raz kolejny od podstaw graficznego interfejsu użytkownika. Tworzenia i zarządzania bazami danych. IDE wyposażone jest w prosty interfejs służący do budowania baz danych. Pozwala on na bezproblemową integrację z SQL Server Compact Edition, jak również z kilkoma innymi systemami bazodanowymi. Skupienia się na rozwiązywaniu PRAWDZIWYCH problemów. IDE robi za Ciebie wiele, ale w dalszym ciągu to Ty panujesz nad tym, co tworzysz za pomocą C#. IDE pozwala Ci skupić się na Twoim programie, pracy (lub zabawie!) oraz klientach, a do tego zajmuje się całą czarną robotą, taką jak: N śledzenie wszystkich Twoich projektów, N ułatwianie edycji kodu, N kontrolowanie grafiki, dźwięków, ikon oraz innych zasobów w Twoich projektach, N zarządzanie i interakcja z bazami danych. Oznacza to, że cały ten czas, jaki musiałbyś spędzić, wykonując rutynowe zadania, można przeznaczyć na tworzenie zabójczych programów. Wkrótce dowiesz się, Wkrótce dowiesz się, Wkrótce dowiesz się, co naprawdę mamy na myśli. co naprawdę mamy na myśli. jesteś tutaj 43 041-078.indd 43 2011-02-19 13:33:28 potrzebuje Twojej pomocy Szef potrzebuje Twojej pomocy potrzebuje Pomóż dyrektorowi naczelnemu zrezygnować z papieru Firma papiernicza Papiernia Obiektowo właśnie zatrudniła nowego dyrektora naczelnego. Uwielbia on wycieczki piesze, kawę, przyrodę… i podjął decyzję, że będzie przyczyniał się do ratowania lasów. Ma potrzebę zostania kierownikiem „elektronicznym”. Na pierwszy ogień pójdzie lista jego kontaktów. W najbliższy weekend wybiera się na narty do Aspen i liczy na to, że do jego powrotu powstanie nowy program z książką adresową. W przeciwnym razie… no cóż… nie tylko stary dyrektor naczelny będzie szukał pracy. Lepiej, żebyś szybko znalazł sposób na umieszczenie tych danych w laptopie kierownika. Nazwa: Leokadia Kowalska Firma: Balonex sp. z o.o. Telefon: (11) 9853752 E-mail: l.kowalska@balonex.com.pl Tak Ostatni kontakt: Klient: Tak Ostatni kontakt: Tak 10.07.2010 44 Rozdział 1. 041-078.indd 44 2011-02-19 13:33:30 Zwiększ wydajność za pomocą C# Sprawdź potrzeby Twoich użytkowników, zanim zaczniesz tworzyć program zanim zaczniesz tworzyć program Zanim zaczniesz pisać książkę adresową — lub jakąkolwiek inną aplikację — musimy zatrzymać się na minutę i pomyśleć o tym, kto będzie jej używał i kto będzie jej używał i kto będzie jej używał czego od niej oczekuje. 1 2 Dyrektor naczelny chce uruchamiać program w pracy oraz na swoim laptopie. Potrzebuje zatem programu instalacyjnego, aby mieć pewność, że wszystkie niezbędne pliki znajdą się na każdym komputerze. Dyrektor naczelny chce uruchamiać książkę adresową na komputerze stacjonarnym i laptopie, zatem program instalacyjny jest niezbędny. s s w w o o d d W i n W i n r r o o t t a l a a l a t t s s n n I I Dział sprzedaży firmy papierniczej Papiernia Obiektowo także chce mieć dostęp do książki adresowej. Chce on używać danych do budowania list kontaktów i w ten sposób zwiększyć sprzedaż papieru. Dyrektor naczelny dochodzi do wniosku, że baza danych będzie najlepszym rozwiązaniem. W ten sposób każdy w firmie będzie miał dostęp do tych informacji, a on będzie musiał zarządzać tylko jedną kopią swoich kontaktów. Wiemy już, że Visual Studio ułatwia pracę z bazami danych. Przechowywanie informacji w takiej formie umożliwia jednoczesny dostęp do nich dyrektorowi naczelnemu oraz działowi sprzedaży, mimo że fizycznie istnieje tylko jedna kopia danych. B a z a d a n y c h d a n y c h d a n y c h S Q L S Q L Zanim zaczniesz tworzyć kod, tworzyć kod, tworzyć kod, pomyśl o swoich pomyśl o swoich pomyśl o swoich pomyśl o swoich użytkownikach użytkownikach użytkownikach użytkownikach oraz ich oraz ich potrzebach; oni na pewno to oni na pewno to oni na pewno to docenią i będą docenią i będą docenią i będą docenią i będą zadowoleni zadowoleni z finalnego z finalnego z finalnego produktu, kiedy produktu, kiedy go wreszcie go wreszcie go wreszcie skończysz. skończysz. jesteś tutaj 45 041-078.indd 45 2011-02-19 13:33:30 Oto Twój cel Oto program, który zamierzasz stworzyć Potrzebujesz aplikacji z graficznym interfejsem użytkownika, obiektów niezbędnych do komunikacji z bazą danych, właściwej bazy danych oraz programu instalacyjnego. Brzmi to jak wyrok i zapowiada konieczność wygospodarowania ogromnej ilości czasu, ale zbudujesz to wszystko po przeanalizowaniu następnych kilku stron. A oto struktura programu, który zamierzamy stworzyć: B ę d z i e s z t w o r z y ł f o r m u l a r z W i n d o w s z l i c z n y m i k o n t r o l k a m i w j e g o o b s z a r z e . Aplikacja posiada oddzielną warstwę do obsługi bazy danych. Obiekty wizualne .NET Obiekty bazy danych .NET m r o F . s w o e m.Wind Obiekt S y s t O b i e k t y ddozar z ą ii m y n a dd dd zania x o B e P ictur Obiek t r a olB ToToT Obie k t K a ż d y z t y c h r y s u n k ó w r e p r e z e n t u j e k o n t r o l k ę f o r m u l a r z a k s i ą ż k i a d r e s o w e j , k t ó r y b ę d z i e m y t w o r z y ć . 46 Rozdział 1. e c r u o S Binding Obi e k t r o t a g i v a B indingN Obiek t D i a g r a m D i a g r a m D i a g r a m b a z y d a n y c h b a z y d a n y c h b a z y d a n y c h Potrzebujemy obiektów do komunikacji z tabelami, diagramu, aby nasza aplikacja wiedziała, jaka jest struktura bazy danych, i innych elementów. Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE r e t p a d bleA TaTaT Obi e k t a a a a a ata a a a a a a a ta a e S a Dat O b i e kt 041-078.indd 46 2011-02-19 13:33:31 Zwiększ wydajność za pomocą C# Wszystkie dane przechowywane są w tabeli bazy danych SQL Server Compact. Program po utworzeniu umieszczany jest w pliku instalatora Windows. Pamięć bazy danych Paczka instalatora T a b e l a Procedury składowane B a z a d a n y c h B a z a d a n y c h B a z a d a n y c h B a z a d a n y c h Baza danych SQL To jest prawdziwa baza danych, którą możemy utworzyć i którą można zarządzać za pomocą Visual Studio. .exe Plik Plik programu Dział sprzedaży będzie musiał jedynie wskazać plik i kliknąć go, aby zainstalować program i z niego korzystać. s s w w o o d d W i n W i n r r o o t t a l a a l a t t s s n n I I jesteś tutaj 47 041-078.indd 47 2011-02-19 13:33:31 Zaczynajmy Co robisz w Visual Studio Przystąp więc do dzieła i uruchom Visual Studio, jeżeli jeszcze tego nie zrobiłeś. Pomiń stronę startową i wybierz New Project z menu File. Nazwij swój projekt „Kontakty” i naciśnij OK. Do wyboru masz kilka różnych typów projektów. Wybierz Windows Forms Application, a jako nazwę swojego nowego projektu wpisz „Kontakty”. Wygląd IDE może się nieco różnić od Twojego. Uwaga! Uwaga! Tak wygląda okno New Project w Visual Studio 2010 Express Edition. Jeśli używasz wersji Professional lub Team Foundation, może ono wyglądać nieco inaczej. Ale nie przejmuj się — wszystko będzie działało dokładnie tak samo. Co Visual Studio robi za Ciebie Gdy tylko zapiszesz nowy projekt, IDE utworzy pliki Form1.cs, Form1.Designer.cs oraz Program.cs. Elementy dodawane są do okna Solution Explorer. Domyślnie pliki zapisywane są także w folderze Moje dokumentyVisual Studio 2010ProjectsKontakty. Ten plik zawiera kod C# definiujący zachowanie formularza. Ten zawiera kod uruchamiający program i wyświetlający formularz. Upewnij się, że zaraz po utworzeniu projektu zapisałeś go, wybierając Save All z menu File — spowoduje to zapisanie do katalogu wszystkich jego plików. Jeżeli wybierzesz Save, zapisany zostanie tylko plik, nad którym aktualnie pracujesz. Kod, który definiuje wygląd formularza oraz jego obiektów, znajduje się tutaj. C# Form1.cs 48 Rozdział 1. C# C# Program.cs Form1.Designer.cs Visual Studio tworzy wszystkie trzy pliki automatycznie. 041-078.indd 48 2011-02-19 13:33:32 Zwiększ wydajność za pomocą C# Zaostrz ołówek Zaostrz ołówek Zaostrz ołówek Poniżej pokazany jest wygląd ekranu, jaki prawdopodobnie możesz w tej chwili zaobserwować. Powinieneś odgadnąć, do czego służą poszczególne okna, bazując na wiedzy, którą na tym etapie posiadasz. Upewnij się, że okna Toolbox oraz Error List są widoczne, wybierając odpowiednie opcje z menu View/Other Windows. W każdym z pustych pól wstaw komentarz wyjaśniający przeznaczenie danego obszaru IDE. Na początek uzupełniliśmy jedno pole. Ten pasek narzędzi posiada przyciski związane z tym, co jest aktualnie wykonywane za pomocą IDE. Jeżeli Twoje IDE nie wygląda dokładnie tak jak na tym obrazku, możesz wybrać Reset Window Layout z menu Window. Powiększyliśmy to okno, abyś miał więcej miejsca. Jeśli okna Error List lub Toolbox nie są widoczne, to możesz je wyświetlić, wybierając odpowiednie opcje z menu View/Other Windows. 041-078.indd 49 2011-02-19 13:33:33 jesteś tutaj 49 Poznaj swoje IDE Zaostrz ołówek Zaostrz ołówek Zaostrz ołówek Rozwiązanie Ten pasek narzędzi posiada przyciski związane z tym, co jest aktualnie wykonywa- ne za pomocą IDE. To jest okno z kontrolkami. Zawiera zestaw kon- trolek, które możesz przeciągać wprost na formularz. Jeśli w kodzie pojawią się jakieś błędy, zostaną wyświetlone w oknie Error List (lista błędów). Ten dolny panel pokazuje wiele informacji diagnostycznych dotyczących tworzonego programu. W oknie Solution Explorer są wyświetlone pliki Form1.cs oraz Program.cs, które zostały utworzone dla Ciebie przez IDE podczas dodawania nowego projektu. 50 Rozdział 1. Uzupełniliśmy komentarze dotyczące różnych obszarów Visual Studio C# IDE. W poszczególnych miejscach możesz mieć napisane inne rzeczy, ale powinieneś znać przeznaczenie każdego okna i każdej sekcji. To okno pokazuje wszystkie właściwości aktualnie wybranej kontrolki formularza. Czy widzisz tę niewielką ikonkę pineski? Klikając ją, możesz włączać lub wyłączać automatyczne ukrywanie okna. W przypadku okna Toolbox automatyczne ukrywanie jest domyślnie włączone. Możesz przełączać się pomiędzy plikami za pomocą okna Solution Explorer w IDE 041-078.indd 50 2011-02-19 13:33:34 Zwiększ wydajność za pomocą C# P: Skoro IDE pisze cały ten kod za mnie, to czy nauka C# sprowadza się do nauki IDE? O: Nie. IDE jest wspaniałe w automa- tycznym generowaniu dla Ciebie części kodu, ale więcej nie może zrobić. Jest wiele rzeczy, w których jest naprawdę dobre, takich jak wstępna konfiguracja lub automatyczna zmiana właściwości kontrolek na formularzu. Istnieje jednak znacznie trudniejsza część programowania, czyli troska o to, co powinien robić program, i zmuszenie go do posłuszeństwa, a tego żadne IDE za Ciebie nie zrobi. Pomimo tego, że Visual Studio IDE jest jednym z najbardziej zaawansowanych spośród istniejących środowisk, może ono dojść tylko do tego etapu. To Ty, nie żadne IDE, jesteś odpowiedzialny za pisanie kodu, który wykonuje właściwą pracę. P: Utworzyłem nowy projekt w Visual Studio, ale kiedy sprawdziłem podkatalog Projects w folderze Moje dokumenty, nie znalazłem go tam. Co się stało? O: Kiedy zaczynasz tworzyć nowy projekt w Visual Studio 2010, IDE umieszcza go w katalogu Ustawienia lokalne Dane aplikacjiTemporary Projects. Gdy zapisujesz go po raz pierwszy, jesteś pytany o nazwę pliku, a po zaakceptowaniu wyboru projekt zostaje zapisany w katalogu Moje dokumentyVisual Studio 2010 Projects. Próbując otworzyć nowy projekt lub zamknąć tymczasowy, zostaniesz poproszony o wybór jednej z dwóch opcji — zapisania lub odrzucenia zmian. (Uwaga: inne wersje Visual Studio nie używają tego tymczasowego katalogu do przechowywania projektów — tworzą je od razu w katalogu Projects !) Nie istnieją Nie istnieją Nie istnieją głupie pytania głupie pytania głupie pytania głupie pytania głupie pytania głupie pytania P: Co wtedy, gdy IDE utworzy kod, którego nie chciałem? O: Możesz go zmienić. IDE jest przystosowane do tworzenia kodu na podstawie tego, w jaki sposób elementy zostały przeciągnięte lub dodane do aplikacji. Czasami nie jest to sposób, jaki byłby przez Ciebie pożądany. Wszystko, co IDE robi dla Ciebie — każda linijka kodu, którą tworzy, każdy plik, który dodaje — może być zmieniane zarówno ręcznie, poprzez bezpośrednią edycję plików, jak i przy użyciu łatwego w obsłudze interfejsu środowiska. P: Czy wszystko będzie działało dobrze, jeżeli pobrałem i zainstalowałem Visual Studio Express? Czy nie powinienem używać jednej z płatnych wersji Visual Studio, aby zrobić wszystko, co jest tu opisane? O: Nie ma w tej książce niczego, czego nie dałoby się zrobić za pomocą darmowej wersji Visual Studio (którą można pobrać ze strony Microsoftu). Główne różnice pomiędzy edycją Express a pozostałymi (Professional i Team Foundation) nie uniemożliwiają pisania w pełni funkcjonalnych i kompletnych aplikacji w C#. P: Czy mogę zmienić nazwy plików, które IDE dla mnie generuje? O: Oczywiście. Podczas tworzenia nowe- go projektu IDE generuje domyślny formu- larz o nazwie Form1 — w jego skład wcho- Form1 — w jego skład wcho- Form1 dzą trzy pliki: Form1.cs, Form1.Designer.cs oraz Form1.resx. Możesz jednak skorzystać Solution Explorer, by nadać tym z okna Solution Explorer, by nadać tym Solution Explorer plikom dowolne inne nazwy. Domyślnie odpowiadają one nazwie formularza. Jeśli zmienisz nazwy plików, to w oknie Properties będziesz miał okazję przekonać Properties będziesz miał okazję przekonać Properties się, że formularz wciąż nosi nazwę Form1. Jego nazwę możesz zmienić w wierszu „(Name)” w oknie Properties. Jeśli to zro- bisz, nazwa pliku nie ulegnie zmianie. C# nie zwraca uwagi na nazwy plików i formularzy (ani jakichkolwiek innych elementów projektu), choć istnieje kilka reguł, którymi należy się kierować podczas ich określania. Niemniej jednak dobieranie odpowiednich nazw może ułatwić Ci pracę. Póki co nie przejmuj się nimi — w dalszej części książki zamieścimy znacznie więcej informacji dotyczących dobierania nazw dla różnych elementów programów. P: Przyglądam się właśnie mojemu IDE i dochodzę do wniosku, że mój ekran wygląda nieco inaczej niż Twój. Brakuje niektórych okien, inne są poprzestawiane. Co się dzieje? O: Jeżeli wybierzesz polecenie Reset Window Layout z menu Reset Window Layout z menu Reset Window Layout to IDE odtworzy oryginalny wygląd i położenie okien. Następnie możesz skorzystać z opcji View/Other Windows, by upodobnić swoje okno Visual Studio do tych pokazanych w tym rozdziale. Window, Window, Window Visual Studio generuje Visual Studio generuje Visual Studio generuje kod, który może być kod, który może być kod, który może być kod, który może być użyty jako podstawa do użyty jako podstawa do użyty jako podstawa do użyty jako podstawa do dalszego pisania aplikacji. dalszego pisania aplikacji. Upewnienie się, Upewnienie się, Upewnienie się, że aplikacja robi że aplikacja robi że aplikacja robi że aplikacja robi dokładnie to, do czego dokładnie to, do czego dokładnie to, do czego dokładnie to, do czego została stworzona, została stworzona, należy wyłącznie należy wyłącznie należy wyłącznie do Ciebie. do Ciebie. jesteś tutaj 51 041-078.indd 51 2011-02-19 13:33:34 PictureBox jest wart tysiąca słów Stwórz interfejs użytkownika Dodawanie kontrolek i nadawanie blasku interfejsowi użytkownika jest bardzo proste i sprowadza się do przeciągania i upuszczania elementów w Visual Studio IDE. Dodajmy zatem logo do formularza. 1 Użyj kontrolki PictureBox, aby dodać obrazek. Kliknij kontrolkę PictureBox w oknie Toolbox, a następnie przeciągnij ją na formularz. W tle IDE doda jej kod do pliku Form1.Designer.cs. Jeżeli nie widzisz okna Toolbox, spróbuj najechać wskaźnikiem myszy na słowo Toolbox, które znajduje się w lewym górnym rogu IDE. Jeśli go tam nie ma, wybierz element Toolbox z menu View, aby pojawiło View, aby pojawiło View się na ekranie. Za każdym razem, gdy wprowadzasz zmiany we właściwościach kontrolki formularza, kod w pliku Form1.Designer.cs jest zmieniany przez IDE. C# Form1.Designer.cs k ojnie k ojnie k ojnie k ojnie S p o S p o S p o S p o Nie przejmuj się, jeżeli nie jesteś profesjonalistą w projektowaniu graficznych interfejsów użytkownika. W swoim czasie powiemy znacznie więcej o tworzeniu dobrych interfejsów użytkownika. Na tym etapie wystarczy, że wstawisz logo oraz inne kontrolki do formularza i zadbasz o jego prawidłowe zachowanie. O stylowy wygląd zatroszczymy się później. 52 Rozdział 1. 041-078.indd 52 2011-02-19 13:33:34 Zwiększ wydajność za pomocą C# Obiekty wizualne .NET Obiekty bazy danych .NET Jesteś tutaj m r o o F F F . s w o e m.Wind Obiekt S y s t a n iaddany mi ktyddo zarzą z dd O b i e O bb iekt Bi n e c r u dd ingSSo r o O O O b b i e kk t Pict u r eBox O O O b b i e kk t ToToTolbb a r t a O bb i e g Navig ktBind i n D i a g r a m b a z y d a n y c h b a z y d a n y c h Polecenie SELECT Polecenie INSERT Polecenie UPDATE Polecenie DELETE r e t OOO apapa bbiekkt TaTaT bb l e AddAdA t e t DDataSS Obbiie kk Pamięć bazy danych Obiekty wsparcia Ta b e l a diagramu bazy danych Paczka instalatora Baza danych SQL Plik Plik programu programu B a z a d a n y c h d a n y c h r r s s o o w w t t o o n n I I a l a a l a t t s s d d W i n W i n 2 Ustaw tryb Zoom dla obiektu PictureBox. Każda kontrolka na Twoim formularzu posiada właściwości, które możesz ustawić. Aby dostać się do nich, kliknij małą czarną strzałkę widoczną na kontrolce. Zmień właściwość Size Mode obiektu PictureBox na „Zoom”, a zobaczysz, jak to działa. Wartość właściwości Size Mode można także określić w oknie Properties IDE. Ta niewielka czarna strzałka ma jedynie zapewnić łatwiejszy dostęp do najczęściej używanych właściwości kontrolek. Aby uzyskać dostęp do właściwości kontrolki, kliknij tę małą czarną strzałkę. Wybierz Zoom, aby ramka PictureBox zmieniała swój rozmiar w celu dopasowania się do obrazka, który w niej umieścisz. Następnie kliknij opcję Choose Image, aby wyświetlić okno dialogowe Select Resource i za jego pomocą zaimportować wybrany obrazek z lokalnego dysku. 3 Pobierz logo firmy Papiernia Obiektowo. Pobierz logo Papierni Obiektowo z serwera ftp (ftp://ftp.helion.pl/przyklady/cshrug.zip Pobierz logo Papierni Obiektowo z serwera ftp (ftp://ftp.helion.pl/przyklady/cshrug.zip Pobierz logo Papierni Obiektowo z serwera ftp ( je na twardym dysku. Następnie wybierz strzałkę właściwości kontrolki PictureBox i kliknij Choose Image. Na ekranie pojawi się okno dialogowe Select Resource. Zaznacz przycisk opcji Local Resource, aby uaktywnić przycisk Import; kliknij ten przycisk a następnie odszukaj na dysku obrazek, którego chcesz użyć. I to już wszystko. ) i zapisz Tutaj znajduje się logo Papierni Obiektowo oraz kontrolka PictureBox, która dopasowała swój rozmiar do jego wielkości. jesteś tutaj 53 041-078.indd 53 2011-02-19 13:33:36 naturalne C# Oszczędzając zasoby naturalne C# natura
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

C#. Rusz głową!
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: