Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00447 008679 10464282 na godz. na dobę w sumie
C#. Programowanie - książka
C#. Programowanie - książka
Autor: Liczba stron: 600
Wydawca: Helion Język publikacji: polski
ISBN: 83-246-0213-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c# - programowanie
Porównaj ceny (książka, ebook, audiobook).

Podręcznik podstawowego języka programowania dla platformy .NET

Język C# został opracowany przez firmę Microsoft jako podstawowe narzędzie programistyczne dla platformy .NET. C# łączący w sobie najlepsze cechy języków C, C++, Java i Visual Basic doskonale nadaje się do tworzenia aplikacji bazujących na komponentach. Jest prosty, bezpieczny ze względu na typy, oparty na obiektach i komponentach i przygotowany do obsługi mechanizmów komunikacji sieciowej. Za pomocą C# tworzone są nie tylko aplikacje na 'duże' komputery, ale także programy dla platformy PocketPC. Popularność C# nadal rośnie, a jego producent stale inwestuje w dalszy rozwój tego narzędzia i platformy .NET.

'C#. Programowanie' to podręcznik przedstawiający tajniki tworzenia aplikacji dla .NET w języku C#. Przeczytasz w nim o podstawowych elementach i strukturach C#, zasadach programowania obiektowego oraz obsłudze wyjątków i błędów. Poznasz sposoby tworzenia aplikacji z wykorzystaniem podstawowych technologii tworzenia aplikacji dla platformy .NET -- ASP.NET, Windows Forms i ADO.NET. Nauczysz się wykorzystywać metadane i łączyć swoje aplikacje z API Windows oraz obiektami COM.

Poznaj nowoczesne techniki programowania.

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

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREŒCI SPIS TREŒCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOŒCIACH O NOWOŒCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl C#. Programowanie Autor: Jesse Liberty T³umaczenie: Tomasz Walczak ISBN: 83-246-0213-5 Tytu³ orygina³u: Programming C# Format: B5, stron: 600 Podrêcznik podstawowego jêzyka programowania dla platformy .NET (cid:127) Poznaj elementy jêzyka C# (cid:129) Stwórz w³asn¹ aplikacjê (cid:129) Komunikuj siê z bazami danych Jêzyk C# zosta³ opracowany przez firmê Microsoft jako podstawowe narzêdzie programistyczne dla platformy .NET. C# ³¹cz¹cy w sobie najlepsze cechy jêzyków C, C++, Java i Visual Basic doskonale nadaje siê do tworzenia aplikacji bazuj¹cych na komponentach. Jest prosty, bezpieczny ze wzglêdu na typy, oparty na obiektach i komponentach i przygotowany do obs³ugi mechanizmów komunikacji sieciowej. Za pomoc¹ C# tworzone s¹ nie tylko aplikacje na „du¿e” komputery, ale tak¿e programy dla platformy PocketPC. Popularnoœæ C# nadal roœnie, a jego producent stale inwestuje w dalszy rozwój tego narzêdzia i platformy .NET. „C#. Programowanie” to podrêcznik przedstawiaj¹cy tajniki tworzenia aplikacji dla .NET w jêzyku C#. Przeczytasz w nim o podstawowych elementach i strukturach C#, zasadach programowania obiektowego oraz obs³udze wyj¹tków i b³êdów. Poznasz sposoby tworzenia aplikacji z wykorzystaniem podstawowych technologii tworzenia aplikacji dla platformy .NET — ASP.NET, Windows Forms i ADO.NET. Nauczysz siê wykorzystywaæ metadane i ³¹czyæ swoje aplikacje z API Windows oraz obiektami COM. (cid:129) Typy w jêzyku C# (cid:129) Zmienne i sta³e (cid:129) Instrukcje, operatory i dyrektywy preprocesora (cid:129) Regu³y programowania obiektowego (cid:129) Operacje na ³añcuchach znaków (cid:129) Stosowanie wyra¿eñ regularnych (cid:129) Tworzenie aplikacji dla systemu Windows (cid:129) £¹czenie z bazami danych za pomoc¹ ADO.NET (cid:129) Pisanie aplikacji i us³ug sieciowych (cid:129) Zdalne korzystanie z obiektów (cid:129) W¹tki i synchronizacja (cid:129) Operacje na plikach Poznaj nowoczesne techniki programowania Spis treści Przedmowa .................................................................................................................... 9 Część I Język C# 17 1. Język C# i platforma .NET.............................................................................................19 19 20 22 22 Platforma .NET .NET Framework Kompilacja i język MSIL Język C# 2. Pierwszy program — „Witaj świecie” ........................................................................ 25 25 31 36 Klasy, obiekty i typy Tworzenie programu „Witaj świecie” Usuwanie błędów w Visual Studio .NET 3. Podstawy języka C#.....................................................................................................39 39 43 50 51 51 65 73 Typy Zmienne i stałe Wyrażenia Odstępy Instrukcje Operatory Dyrektywy preprocesora 4. Klasy i obiekty ...............................................................................................................77 78 82 88 92 95 101 Definiowanie klas Tworzenie obiektów Używanie składowych statycznych Usuwanie obiektów Przekazywanie parametrów Przeciążanie metod i konstruktorów 3 Hermetyzacja danych za pomocą właściwości Pola tylko do odczytu 103 107 5. Dziedziczenie i polimorfizm.......................................................................................109 109 111 112 118 122 124 126 Specjalizacja i uogólnianie Dziedziczenie Polimorfizm Klasy abstrakcyjne Klasa główna — Object Pakowanie i rozpakowywanie typów Zagnieżdżanie klas 6. Przeciążanie operatorów ...........................................................................................129 129 130 130 130 131 131 Używanie słowa kluczowego operator Obsługa innych języków platformy .NET Tworzenie użytecznych operatorów Pary logiczne Operator równości Operatory konwersji 7. Struktury......................................................................................................................137 137 140 Definiowanie struktur Tworzenie struktur 8. Interfejsy .................................................................................................................... 145 146 Definiowanie i implementowanie interfejsu Dostęp do metod interfejsu 154 160 Przesłanianie implementacji interfejsu Jawna implementacja interfejsu 164 9. Tablice, kolekcje i mechanizm indeksowania............................................................173 173 178 191 199 202 207 217 Tablice Instrukcja foreach Mechanizm indeksowania Interfejsy kolekcji Ograniczenia Klasa List T Kolejki 4 | Spis treści Stosy Słowniki 219 221 10. Łańcuchy znaków i wyrażenia regularne ................................................................. 225 225 239 Łańcuchy znaków Wyrażenia regularne 11. Obsługa wyjątków......................................................................................................251 252 261 263 266 Zgłaszanie i przechwytywanie wyjątków Wyjątki jako obiekty Własne wyjątki Ponowne zgłaszanie wyjątków 12. Delegaty i zdarzenia ...................................................................................................271 272 281 285 296 297 Delegaty Delegaty zbiorowe Zdarzenia Używanie anonimowych metod Pobieranie wartości delegatów zbiorowych Część II Programowanie w języku C# 305 13. Tworzenie aplikacji dla systemu Windows............................................................... 307 308 313 334 Tworzenie prostego formularza Tworzenie aplikacji dla systemu Windows Komentarze w stylu języka XML 14. Obsługa danych za pomocą ADO.NET....................................................................... 337 337 341 343 345 347 Relacyjne bazy danych i SQL Model obiektowy ADO.NET Używanie ADO.NET Używanie zarządzanych dostawców danych OLE DB Używanie kontrolek DataBound 15. Tworzenie aplikacji ASP.NET i Web Services ............................................................ 355 356 360 363 Czym jest Web Forms? Tworzenie formularza Web Form Dodawanie kontrolek Spis treści | 5 Wiązanie danych Usługi Web Service SOAP, WSDL i Discovery Tworzenie usługi Web Tworzenie pośrednika 366 375 375 376 380 16. Łączenie różnych technik........................................................................................... 387 387 387 396 404 Ogólny projekt Tworzenie klienta usługi Web Wyświetlanie informacji Przeszukiwanie na podstawie kategorii Część III CLR i platforma .NET 409 17. Podzespoły i kontrola wersji ......................................................................................411 411 411 412 412 413 421 421 Pliki wykonywalne Metadane Granice zabezpieczeń Manifesty Podzespoły wielomodułowe Podzespoły prywatne Podzespoły współdzielone 18. Atrybuty i mechanizm refleksji ................................................................................. 427 427 433 Atrybuty Mechanizm refleksji 19. Szeregowanie i zdalne korzystanie z obiektów.......................................................443 444 453 455 Domeny aplikacji Kontekst Zdalne korzystanie z obiektów 20. Wątki i synchronizacja...............................................................................................465 466 473 483 Wątki Synchronizacja Sytuacja wyścigu i zakleszczenie 6 | Spis treści 21. Strumienie ..................................................................................................................485 485 495 502 506 523 525 533 Pliki i katalogi Odczyt i zapis danych Asynchroniczne operacje wejścia i wyjścia Sieciowe operacje wejścia i wyjścia Strumienie w internecie Serializacja Izolowana pamięć 22. Platforma .NET a model COM .................................................................................... 537 537 544 552 555 557 Importowanie kontrolek ActiveX Importowanie komponentów COM Eksportowanie komponentów .NET P/Invoke Wskaźniki Dodatki 563 A Słowa kluczowe języka C# ........................................................................................565 Skorowidz ...................................................................................................................571 Spis treści | 7 ROZDZIAŁ 2. Pierwszy program — „Witaj świecie” Zgodnie z niepisaną tradycją wiele książek programistycznych rozpoczyna się od opisu pro- gramu wyświetlającego napis „Witaj świecie”. W tym rozdziale opisuję, jak stworzyć, skom- pilować i uruchomić prosty program napisany w języku C#. Analiza tego programu pozwoli zaprezentować kluczowe cechy języka C#. Kod na listingu 2.1 zawiera podstawowe elementy bardzo prostego programu w języku C#. Listing 2.1. Prosty program w języku C# class Hello { static void Main() { // Używa konsoli systemowej System.Console.WriteLine( Witaj świecie ); } } Po skompilowaniu i uruchomieniu programu w konsoli zostanie wyświetlony napis „Witaj świecie”. Jednak przed kompilacją i uruchomieniem warto przyjrzeć się bliżej temu prostemu programowi. Klasy, obiekty i typy Istotą programowania obiektowego jest tworzenie nowych typów. Typ to reprezentacja jakie- goś bytu. Czasem jest to byt abstrakcyjny, jak tabela danych lub wątek, czasem zaś coś bar- dziej widocznego, jak przycisk w oknie. Typ definiuje ogólne właściwości i zachowanie bytu. Jeśli w programie znajdują się trzy egzemplarze klasy przycisku, na przykład przyciski OK, Anuluj i Pomoc, wszystkie one mają rozmiar, ale konkretny rozmiar każdego przycisku może być inny. Podobnie wszystkie przyciski obsługują te same operacje (wyświetlenie, kliknięcie), ale sposób wykonywania tych operacji może być odmienny. Dlatego poszczególne przyciski mogą się różnić szczegółami, ale wszystkie są tego samego typu. Podobnie jak w wielu innych obiektowych językach programowania, w C# typ definiowany jest przez klasę, a konkretne egzemplarze klasy są znane jako obiekty. W kolejnych rozdziałach przedstawiam również inne typy języka C#, między innymi wyliczenia, struktury i delegaty, ale na razie proponuję skoncentrować się na klasach. 25 W programie wyświetlającym napis „Witaj świecie” znajduje się deklaracja tylko jednego ty- pu — klasa Hello. Aby zdefiniować typ w języku C#, wystarczy zadeklarować go jako klasę za pomocą słowa kluczowego class, nadać mu nazwę — w tym przypadku Hello — i zde- finiować potrzebne właściwości i zachowanie. Właściwości i zachowanie klasy w języku C# muszą znajdować się wewnątrz nawiasów ({}). Dla programistów języka C++. Po zamykającym nawiasie klasy nie ma średnika. Metody Do cech klasy należą właściwości i zachowanie. Zachowanie zdefiniowane jest za pomocą metod składowych. Właściwości opisuję w rozdziale 3. Metoda to funkcja należąca do klasy. Metody składowe są nawet czasem nazywane funkcjami składowymi. Metody definiują, co klasa może zrobić i jak się zachowuje. Zwykle nazwy metod odzwierciedlają ich działanie, na przykład WriteLine() lub AddNumbers(). Jednak w tym przypadku metoda klasy ma specjalną nazwę, Main(), która nie opisuje działania, ale infor- muje środowisko CLR, że jest to główna metoda klasy. Dla programistów języka C++. Nazwa Main() w języku C# jest pisana wielką literą i musi być składową klasy (nie może być globalna). Metoda Main() może zwracać typ int lub void. Środowisko CLR wywołuje metodę Main() w momencie uruchomienia programu. Main() to punkt startowy programu i każdy program w języku C# musi zawierać tę metodę1. Deklaracje metod to kontrakt między twórcą metody i jej użytkownikiem. Często autor me- tody i jej użytkownik to ta sama osoba, ale nie musi tak być. Zdarza się, że jeden z programi- stów w zespole tworzy metodę, a inny jej używa. Dla programistów języka Java. Main() jest punktem startowym wszystkich progra- mów języka C#, co w pewien sposób przypomina metodę run() w apletach i meto- dę main() w programach w języku Java. Aby zadeklarować metodę, należy określić zwracany przez nią typ oraz podać jej nazwę. De- klaracje metod wymagają także nawiasów, niezależnie od tego, czy metoda przyjmuje para- metry. Na przykład wyrażenie: int myMethod(int size) to deklaracja metody o nazwie myMethod, która przyjmuje jeden parametr — liczbę całkowitą, która w metodzie jest dostępna jako size. Metoda zwraca liczbę całkowitą. Typ zwracanej wartości informuje użytkownika, jaki typ danych zwraca metoda po zakończeniu działania. 1 Teoretycznie możliwe jest umieszczenie w programie w języku C# wielu metod Main(). W takim przypadku należy użyć opcji /main wiersza poleceń i wybrać, która klasa zawierająca metodę Main() powinna służyć jako punkt startowy. 26 | Rozdział 2. Pierwszy program — „Witaj świecie” Niektóre metody nie zwracają żadnej wartości. Mówi się, że zwracają typ void, określany przez specjalne słowo kluczowe. Na przykład: void myVoidMethod(); to deklaracja metody zwracającej typ void i nieprzyjmującej parametrów. W języku C# zaw- sze trzeba pamiętać o określaniu zwracanego typu, nawet jeśli jest to void. Komentarze W programach C# mogą się znajdować komentarze. Na listingu 2.1 w pierwszym wierszu po początkowym nawiasie metody Main() znajduje się komentarz: // Używa konsoli systemowej Tekst rozpoczyna się od dwóch ukośników (//). Oznaczają one komentarz. Komentarz to no- tatka wpisana przez programistę, która nie wpływa na działanie programu. W języku C# moż- na używać trzech rodzajów komentarzy. Pierwszy rodzaj, przedstawiony powyżej, oznacza, że cały tekst od symboli (//) do końca wiersza jest traktowany jako komentarz. Jest to komentarz w stylu języka C++. Drugi rodzaj komentarzy, nazywany komentarzem w stylu języka C, rozpoczyna się od sym- boli (/*) i kończy parą znaków (*/). Pozwala to na dodania komentarza ciągnącego się przez kilka wierszy bez konieczności wpisywania w każdym wierszu symboli (//). Przykład zasto- sowania tego rodzaju komentarzy znajduje się na listingu 2.2. Listing 2.2. Przykład zastosowania komentarzy w stylu języka C namespace HalloWorld { class HelloWorld { static void Main() { /* Używa konsoli systemowej, jak jest to wyjaśnione w tekście */ System.Console.WriteLine( Witaj świecie ); } } } Choć zagnieżdżanie komentarzy języka C++ nie jest możliwe, można zagnieżdżać komenta- rze w stylu języka C++ w komentarzach w stylu języka C. Dlatego zwykle używa się komen- tarzy w stylu języka C++, a komentarze w stylu języka C służą głównie do „wykomentowa- nia” bloków kodu. Trzeci i ostatni rodzaj komentarzy obsługiwanych w języku C# służy do powiązania z kodem zewnętrznej dokumentacji opartej na XML, co opisuję w rozdziale 13. Aplikacje konsolowe „Witaj świecie” to przykład programu konsolowego. Aplikacja konsolowa zwykle nie ma gra- ficznego interfejsu użytkownika (ang. graphical user interface — GUI). Nie ma tam list rozwija- nych, przycisków ani okien. Dane wejściowe i wyjściowe przekazywane są przez standardo- wą konsolę — zwykle jest to wiersz poleceń systemu. Ograniczenie się na tym etapie książki Klasy, obiekty i typy | 27 do aplikacji konsolowych pozwala uprościć przykłady i ułatwia przedstawienie podstawo- wych właściwości języka. W kolejnych rozdziałach częściej występują aplikacje okienkowe i internetowe, przy okazji których przedstawiam narzędzia środowiska Visual Studio .NET służące do projektowania GUI. Metoda Main() w prostym przykładzie przedstawionym na listingu 2.1 przekazuje tekst „Witaj świecie” do standardowego urządzenia wyjścia, którym najczęściej jest okno konsoli. Standardo- wym urządzeniem wyjścia zarządza obiekt zwany Console. Jedna z metod tego obiektu na- zywa się WriteLine(). Przyjmuje ona jako parametr łańcuch znaków, który następnie wyświe- tla w standardowym urządzeniu wyjścia. Kiedy program zostanie uruchomiony, na ekranie monitora pojawi się okno konsoli wiersza poleceń lub okno DOS-a z napisem „Witaj świecie”. Metody wywoływane są za pomocą operatora kropki (.). Dlatego aby wywołać metodę Wri- teLine() obiektu Console, należy napisać Console.WriteLine(…), podając w miejscu trzech kropek tekst, który ma zostać wyświetlony. Przestrzenie nazw Console to tylko jeden z wielu użytecznych typów wchodzących w skład biblioteki klas plat- formy .NET. Każda klasa nazywa się inaczej, dlatego FCL zawiera tysiące nazw, jak Array- List, Hashtable, FileDialog, DataException czy EventArgs. Istnieją setki, tysiące, a może nawet dziesiątki tysięcy nazw. Powoduje to pewne problemy. Żaden programista nie jest w stanie zapamiętać wszystkich nazw używanych przez platformę .NET, a wcześniej czy później może zdarzyć się, że pro- gramista stworzy obiekt i użyje dla niego nazwy, która jest już wykorzystywana przez inną jednostkę. Co się stanie, kiedy programista kupi klasę Hashtable i odkryje, że powoduje ona konflikt nazw z klasą Hashtable udostępnianą przez .NET? Należy pamiętać, że każda klasa w języku C# musi mieć niepowtarzalną nazwę, a zwykle nie jest możliwa zmiana nazw w za- kupionym kodzie. Rozwiązaniem tego problemu jest używanie przestrzeni nazw. Ograniczają one zasięg nazwy, w wyniku czego nazwa ma znaczenie tylko wewnątrz zdefiniowanej przestrzeni nazw. Dla programistów języka C++. Przestrzenie nazw w języku C++ są ograniczane opera- torem zakresu (::). W języku C# służy do tego operator kropki (.). Wskazówka dla programistów języka Java. Przestrzenie nazw mają wiele podobnych za- let co pakiety. Jacek jest inżynierem. Słowo „inżynier” może być związane z wieloma zawodami i wprowa- dzać niepewność. Czy Jacek projektuje budynki? A może opracowuje architekturę systemu operacyjnego? Można dookreślić to stwierdzenie mówiąc, że Jacek skończył Wyższą Szkołę Budownictwa lub pracuje przy komputerach. Programista języka C# mógłby powiedzieć, że Jacek to raczej system.inzynier niż budynki.inzynier. Przestrzeń nazw, w tym przypadku system lub budynki, ogranicza zasięg słowa występującego po operatorze kropki. Pozwala to utworzyć „przestrzeń”, w której nazwa ma określone znaczenie. Może się też okazać, że Jacek nie jest dowolnym system.inzynier. Możliwe, że specjalizuje się w tworzeniu architektury systemów Linux. Wtedy obiekt reprezentujący Jacka można 28 | Rozdział 2. Pierwszy program — „Witaj świecie” opisać bardziej szczegółowo jako system.linux.inzynier. Taka klasyfikacja sugeruje, że przestrzeń nazw linux ma znaczenie w obrębie przestrzeni nazw system, a inzynier w tym kontekście ma znaczenie w przestrzeni linux. Jeśli w przyszłości okaże się, że Krzysztof jest budynki.gospodarcze.inzynier, łatwo będzie się zorientować, jakim jest inżynierem i czym się zajmuje. Dwa wystąpienia nazwy inzynier mogą współistnieć dzięki temu, że każda na- zwa znajduje się we własnej przestrzeni. Podobnie, jeśli okaże się, że klasa Hashtable platformy .NET znajduje się w przestrzeni nazw System.Collections, a programista utworzył własną klasę Hashtable w przestrzeni ProgCSharp.DataStructures, nie spowoduje to konfliktu, ponieważ nazwa klasy występuje w dwóch różnych przestrzeniach nazw. Na listingu 2.1 fakt przynależności klasy Console do przestrzeni nazw System jest wyrażony za pomocą poniższego wiersza: System.Console.WriteLine(); Operator kropki (.) Na listingu 2.1 operator kropki (.) pozwala uzyskać dostęp do metody i danych klasy (w tym przypadku jest to metoda WriteLine()), a także do określenia przestrzeni nazw (w tym przy- padku do zaznaczenia, że klasa Console znajduje się w przestrzeni nazw System). Ten me- chanizm działa poprawnie, ponieważ w obu przypadkach kompilator przeszukuje podaną przestrzeń, aby znaleźć konkretną nazwę. Przeszukiwanie rozpoczyna się od przestrzeni nazw System, która zawiera wszystkie obiekty systemowe udostępniane przez FCL. Typ Console znajduje się właśnie w przestrzeni nazw System, a metoda WriteLine() jest funkcją składo- wą klasy Console. W wielu przypadkach przestrzenie nazw są podzielone na podprzestrzenie. Na przykład przestrzeń nazw System zawiera wiele podprzestrzeni, jak Data, Configuration czy Collec- tions. Z kolei sama przestrzeń nazw Collections zawiera wiele kolejnych podprzestrzeni. Przestrzenie nazw pomagają w organizacji i porównywaniu typów. Kiedy programista pisze złożoną aplikacją w języku C#, może chcieć stworzyć własną hierarchię przestrzeni nazw. Hierarchia ta może być dowolnie głęboka. Używanie przestrzeni nazw pomaga w podziale hierarchii obiektów i przezwyciężeniu jej złożoności. Słowo kluczowe using Zamiast pisać słowo System przed nazwą klasy Console, można określić, że w kodzie uży- wane będą nazwy z przestrzeni nazw System. Służy do tego dyrektywa using: using System; umieszczana na początku kodu, jak na listingu 2.3. Listing 2.3. Słowo kluczowe using using System; class Hello { static void Main() { Klasy, obiekty i typy | 29 // Klasa Console z przestrzeni nazw System Console.WriteLine( Witaj świecie ); } } Warto zwrócić uwagę, że dyrektywa using znajduje się przed definicją klasy Hello. Domyśl- nie w środowisku Visual Studio .NET do każdej aplikacji konsolowej dodawane są trzy dy- rektywy using — System, System.Collections.Generics oraz System.Text. Choć można określić, że w programie używane są obiekty z przestrzeni nazw System, w od- różnieniu od niektórych języków nie można zrobić tego samego w przypadku obiektu Sys- tem.Console. Kod przedstawiony na listingu 2.4 nie skompiluje się. Listing 2.4. Niepoprawny kod w języku C# using System.Console; class Hello { static void Main() { // Konsola z przestrzeni nazw System WriteLine( Witaj świecie ); } } Próba kompilacji takiego kodu spowoduje wygenerowanie błędu: error CS0138: A using namespace directive can only be applied to namespaces; (cid:31)System.Console(cid:31) is a type not a namespace Użytkownicy Visual Studio będą wiedzieć, kiedy popełnili błąd, ponieważ po wpi- saniu using System i kropki środowisko wyświetla listę poprawnych przestrzeni nazw, a Console nie jest jedną z nich. Słowo kluczowe using pozwala oszczędzić wpisywania dużych ilości kodu, jednak zmniejsza korzyści używania przestrzeni nazw, zaśmiecając zasięg wieloma nieodróżnialnymi nazwa- mi. Często stosowanym rozwiązaniem jest używanie słowa kluczowego using, kiedy korzy- sta się z wbudowanych i własnych przestrzeni nazw, a unikanie tego w przypadku kompo- nentów dostarczanych przez innych producentów. Niektóre grupy programistyczne stosują politykę wpisywania długich nazw obiek- tów, wraz z przestrzeniami nazw (na przykład System.Console.WriteLine() zamiast Console.WriteLine()). Ma to służyć jako forma dokumentowania kodu. Jednak w przypadku wielokrotnie zagnieżdżonych przestrzeni nazw takie rozwiąza- nie może szybko stać się niewygodne. Wrażliwość na wielkość znaków W języku C# wielkość znaków ma znaczenie. Oznacza to, że writeLine to coś innego niż WriteLine, a jeszcze czymś innym jest WRITELINE. Niestety, w przeciwieństwie do VB, w śro- dowisku języka C# błędna wielkość liter nie jest automatycznie poprawiana. Błąd spowodo- wany przez napisanie tego samego słowa za pomocą liter o odmiennej wielkości może być trudny do wykrycia. 30 | Rozdział 2. Pierwszy program — „Witaj świecie” Użyteczną sztuczką jest umieszczenie kursora nad nazwą, w której jedynym błędem jest niepoprawna wielkość znaków, a następnie użycie kombinacji klawiszy Ctrl+Space. Mechanizm uzupełniania kodu Intellisense zmieni wtedy nazwę na poprawną. Aby zapobiec takim czasochłonnym i męczącym błędom, warto ustalić konwencję nazywania zmiennych, funkcji, stałych i innych elementów kodu. W tej książce do nazw zmiennych sto- suję notację wielbłądzią (na przykład jakasNazwaZmiennej), a do nazw funkcji, stałych i wła- ściwości używam notacji z języka Pascal (na przykład JakasFunkcja). Jedyna różnica między notacją wielbłądzią a notacją z języka Pascal polega na roz- poczynaniu nazw wielką literą w tym drugim przypadku. Microsoft udostępnia wskazówki dotyczące stylu kodowania, które są bardzo dobrym punktem wyjścia, a często w zupełności wystarczają do tworzenia czytelnego kodu. Można je znaleźć na stronie http://msdn.microsoft.com/library/default.asp?url=/library/ en-us/cpgenref/html/cpconNETFrameworkDesingGuidlines.asp. Słowo kluczowe static Przed metodą Main() przedstawioną na listingu 2.1 znajduje się modyfikator. Zaraz przed zwracanym typem void (co oznacza, że metoda nie zwraca żadnej wartości) znajduje się sło- wo kluczowe static: static void Main() Słowo kluczowe static informuje kompilator, że można wywołać metodę Main() bez ko- nieczności tworzenia obiektu typu Hello. To dość złożone zagadnienie opisuję bardziej szcze- gółowo w kolejnych rozdziałach. Jednym z problemów uczenia się nowego języka progra- mowania jest konieczność poznawania niektórych skomplikowanych mechanizmów, zanim możliwe jest ich pełne zrozumienie. Na razie można więc traktować deklarację metody Main() jako czystą magię. Tworzenie programu „Witaj świecie” Istnieją przynajmniej dwa sposoby pisania, kompilowania i uruchamiania programów przed- stawionych w tej książce. Można użyć zintegrowanego środowiska programowania (ang. In- tegrated Development Environment — IDE) Visual Studio .NET lub edytora tekstu i kompilato- ra uruchamianego z wiersza poleceń (wraz z pewnymi dodatkowymi narzędziami opisanymi w kolejnych rozdziałach). Choć możliwe jest tworzenie programów bez korzystania z Visual Studio .NET, używanie do- brego IDE związane jest z wieloma udogodnieniami. Są to między innymi automatyczne wci- nanie kodu, mechanizm uzupełniania słów Intellisense, kolorowanie składni czy integracja z systemem pomocy. Co najważniejsze, IDE zawiera wydajne mechanizmy do usuwania błę- dów i mnóstwo innych narzędzi. Zakładam po cichu, że Czytelnicy tej książki używają Visual Studio .NET. Jednak opis przy- kładowych programów kładzie większy nacisk na sam język i platformę niż na używane na- rzędzia. Można przepisać wszystkie przykłady korzystając z Notatnika lub Emacs, zapisać je Tworzenie programu „Witaj świecie” | 31 z rozszerzeniem .cs i skompilować za pomocą kompilatora uruchamianego z wiersza poleceń, który udostępniany jest wraz z .NET Framework SDK. Można także użyć jednego ze zgod- nych z .NET narzędzi, jak Mono lub Microsoft Shared Source CLI. Warto zauważyć, że nie- które przykłady w późniejszych rozdziałach wymagają użycia narzędzi Visual Studio .NET do tworzenia formularzy Windows i Web, jednak zdeterminowani programiści mogą nawet te przykłady wpisać samodzielnie, korzystając z Notatnika. Pisanie kodu „Witaj świecie” Aby utworzyć program „Witaj świecie” w środowisku IDE, należy wybrać Visual Studio .NET z menu Start lub kliknąć ikonę na pulpicie, a następnie wybrać z menu paska narzędzi File→New→Project. Spowoduje to otwarcie okna New Project. Przy pierwszym użyciu Visual Studio okno New Project może pojawić się bez dalszych zapytań. Okno New Project przedsta- wione jest na rysunku 2.1. Rysunek 2.1. Tworzenie aplikacji konsolowej w środowisku Visual Studio .NET Aby utworzyć aplikację, należy zaznaczyć Visual C# w oknie Project Types, a następnie wy- brać opcję Console Application w oknie Templates. W środowisku Express Edition języka Visual C# wystarczy wybrać opcję Console Application. Następnie można podać nazwę projektu i wybrać katalog, w którym przechowywane będą pliki. Potem wystarczy kliknąć przycisk OK i pojawi się nowe okno, w którym można wpisać kod z listingu 2.1, co pokazane jest na rysunku 2.2. Warto zwrócić uwagę, że Visual Studio .NET automatycznie tworzy przestrzeń nazw we- dług nazwy projektu (w tym przypadku jest to HelloWorld), a także dodaje dyrektywy using 32 | Rozdział 2. Pierwszy program — „Witaj świecie” Rysunek 2.2. Edytor przygotowany do pracy z nowym projektem przestrzeni nazw System, System.Collections.Generic i System.Text, ponieważ potrzebu- je ich prawie każdy program. Visual Studio .NET tworzy klasę o nazwie Program, którą programista może nazwać w inny sposób. Przy zmianie nazwy klasy warto zmienić również nazwę pliku. Przy zmianie nazwy pliku środowisko Visual Studio automatycznie zmienia nazwę klasy. Aby odtworzyć kod z listingu 2.1, można na przykład zmienić nazwę pliku Program.cs (znajduje się ona w oknie Solution Explorer) na hello.cs a nazwę klasy Program na HelloWorld. Jeśli wykona się te czynno- ści w odwrotnej kolejności, Visual Studio automatycznie zmieni nazwę klasy na Hello. Visual Studio tworzy szkielet programu. Aby napisać program z listingu 2.1, należy usunąć argumenty (string[] args) metody Main(), a następnie wpisać w ciele tej metody dwa po- niższe wiersze kodu: // Używa konsoli systemowej System.Console.WriteLine( Witaj świecie ); Można też napisać kod, nie używając środowiska Visual Studio. W tym celu należy otworzyć Notatnik lub inny edytor tekstu, wpisać kod z listingu 2.1, zapisać plik jako tekstowy i nadać mu nazwę hello.cs. Tworzenie programu „Witaj świecie” | 33 Kompilacja i uruchamianie „Witaj świecie” W Visual Studio istnieje wiele sposobów na skompilowanie i uruchomienie programu „Witaj świecie”. Zwykle robi się to za pomocą poleceń z menu na pasku narzędzi, przycisków lub, w wielu przypadkach, używając klawiszy skrótu. Klawisze skrótu można ustawić wybierając opcję Tools→Options→Keyboard. W książ- ce przedstawiam najpopularniejsze domyślne klawisze skrótu. Na przykład, aby skompilować program „Witaj świecie”, należy przycisnąć kombinację kla- wiszy Ctrl+Shift+B lub wybrać opcję Build→Build Solution. Jeszcze inne rozwiązanie to kliknię- cie przycisku Build na pasku narzędzi Build. Jeśli pasek ten nie jest widoczny, należy kliknąć prawym przyciskiem myszy na pasku narzędzi i uaktywnić go. Pasek narzędzi Build przed- stawiony jest na rysunku 2.3. Przycisk Build znajduje się po lewej stronie i jest zaznaczony na rysunku. Rysunek 2.3. Pasek narzędzi Build Aby uruchomić program „Witaj świecie” w trybie bez usuwania błędów, należy przycisnąć kombinację klawiszy Ctrl+F5, wybrać opcję Debug→Start Without Debugging z menu IDE z paska narzędzi lub kliknąć przycisk Start Without Debugging na pasku narzędzi IDE Build. Ta ostatnia możliwość przedstawiona jest na rysunku 2.4. Jeśli przycisk ten nie jest widoczny, należy zmienić ustawienia paska narzędzi. Możliwe jest uruchomienie programu bez wcze- śniejszej jego budowy. Ustawienia opcji (można je zmienić, wybierając Tools→Options) mogą spowodować, że IDE zapisze plik, zbuduje program, a następnie uruchomi go, zapewne py- tając o pozwolenie wykonania każdej kolejnej czynności. Rysunek 2.4. Przycisk Start Without Debugging Gorąco zalecam zapoznanie się ze środowiskiem Visual Studio 2005. Jest to podsta- wowe narzędzie programisty tworzącego aplikację na platformę .NET i warto dobrze poznać jego działanie. Czas poświęcony na zapoznanie się ze środowiskiem Visual Studio zwróci się wielokrotnie w trakcie kolejnych miesięcy programowania. Propo- nuję odłożyć na chwilę książkę i przyjrzeć się dobrze środowisku. Aby skompilować i uruchomić program „Witaj świecie” używając kompilatora C# uruchamia- nego z wiersza poleceń, udostępnianego wraz z .NET Framework SDK, z Mono (http://www. mono-project.com) lub z Shared Source CLI (http://msdn.microsoft.com/net/sscli/), należy wykonać następujące czynności: 34 | Rozdział 2. Pierwszy program — „Witaj świecie” 1. Zapisać kod z listingu 2.1 w pliku hello.cs. 2. Otworzyć okno poleceń platformy .NET (Start→Programs→Visual Studio .NET→Visual Studio Tools→Visual Studio Command Prompt). Użytkownicy systemu Unix powinni uru- chomić konsolę, xterm lub inne narzędzie umożliwiające wpisywanie poleceń powłoki. 3. W wierszu poleceń należy wpisać: csc /debug hello.cs jeśli używa się kompilatora z .NET lub z Shared Source CLI, albo: mcs –debug hello.cs jeśli używa się kompilatora z Mono. Powoduje to utworzenie pliku .EXE. Jeśli program zawiera błędy, kompilator wyświetli je. Opcja wiersza poleceń /debug powoduje umiesz- czenie w kodzie symboli, które umożliwiają uruchomienie pliku o rozszerzeniu EXE w programie uruchomieniowym lub zobaczenie numerów wierszy kodu w czasie pod- glądania stosu. Obraz stosu zostanie wyświetlony, jeśli program wygeneruje nieobsługi- wany błąd. 4. Aby uruchomić program, należy wpisać: hello jeśli używa się kompilatora z .NET, lub: clix hello.exe jeśli używa się kompilatora z Shared Source CLI, a: mono hello.exe w przypadku korzystania z kompilatora z Mono. W oknie powinien pojawić się wtedy napis „Witaj świecie”. Kompilacja JIT W trakcie kompilacji hello.cs za pomocą polecenia csc powstaje plik wykonywalny. Należy jednak pamiętać, że zawiera on kod w języku MSIL, opisanym w rozdziale 1. Co ciekawe, kiedy napisze się aplikację w języku VB.NET lub w dowolnym języku zgodnym systemem .NET CLS, zostanie ona skompilowana do bardzo podobnego kodu w języku MSIL. Kod IL utworzony na podstawie kodu pisanego w różnych językach jest praktycznie nieroz- różnialny. Oprócz tworzenia kodu IL, który jest podobny do kodu bajtowego języka Java, kompilator tworzy w pliku o rozszerzeniu .EXE segment tylko do odczytu, w którym znajduje się stan- dardowy nagłówek plików wykonywalnych systemu Win32. W tym segmencie kompilator określa punkt startowy, do którego w momencie uruchamiania programu przechodzi program ładujący systemu operacyjnego. System operacyjny nie potrafi jednak wykonać kodu IL, dlatego punkt startowy prowadzi do uruchomienia kompilatora JIT platformy .NET (kompilator ten został opisany w rozdziale 1.). W wyniku kompilacji JIT powstaje kod maszynowy procesora, taki sam, jak w zwykłych pli- kach wykonywalnych. Kluczową cechą kompilacji JIT jest to, że funkcje kompilowane są je- dynie wtedy, kiedy są używane, bezpośrednio przed ich wykonaniem. Tworzenie programu „Witaj świecie” | 35 Usuwanie błędów w Visual Studio .NET Najważniejszym elementem każdego środowiska programistycznego jest program urucho- mieniowy. Narzędzie udostępniane w Visual Studio jest bardzo wydajne i czas poświęcony na jego dobre poznanie na pewno nie będzie stracony. Podstawy używania programu urucho- mieniowego są bardzo proste. Wystarczy nauczyć się wykonywać trzy kluczowe czynności: • ustawianie punktów przerwania i wykonywanie programów do danego punktu, • wkraczanie w ciało metody i przeskakiwanie nad wywołaniami metod, • sprawdzanie i zmiana wartości zmiennych, danych składowych i innych wartości. Ten rozdział nie obejmuje całej dokumentacji programu uruchomieniowego, ale wymienione powyżej czynności są tak istotne, że z pewnością wystarczą do rozpoczęcia pracy. Program uruchomieniowy umożliwia dostęp do tych samych operacji na różne sposoby, zwy- kle przez opcje menu i przyciski. Najłatwiejszy sposób na ustawienie punktu przerwania to kliknięcie na lewym marginesie. Środowisko IDE zaznacza punkty przerwania jako czerwone kropki, jak przedstawione to jest na rysunku 2.5. Rysunek 2.5. Punkt przerwania Analiza działania programu uruchomieniowego wymaga przykładowego kodu. W tym punkcie używam fragmentów kodu z rozdziału 5., który na razie może być niezrozumiały. Czytelnicy znający język C++ lub Java powinni jednak rozumieć jego znaczenie. Aby uruchomić program uruchomieniowy, należy wybrać opcję Debug→Start lub przycisnąć klawisz F5. Program zostanie wtedy skompilowany, a następnie wykonany do punktu prze- rwania. W tym momencie wykonywanie zatrzyma się, a żółta strzałka wskaże instrukcję, któ- ra powinna zostać wykonana jako kolejna, co pokazane jest na rysunku 2.6. Rysunek 2.6. Dojście do punktu wstrzymania Po dojściu do punktu wstrzymania łatwo jest sprawdzić wartości poszczególnych obiektów. Na przykład można sprawdzić wartość zmiennej i umieszczając nad nią kursor i odczekując chwilę. Pojawi się wtedy lista taka jak na rysunku 2.7. 36 | Rozdział 2. Pierwszy program — „Witaj świecie” Rysunek 2.7. Sprawdzanie wartości Środowisko programu uruchomieniowego udostępnia także liczne użyteczne okna, jak okno Locals wyświetlające wartości wszystkich zmiennych lokalnych (patrz rysunek 2.8). Rysunek 2.8. Okno Locals W przypadku zmiennych należących do typów wbudowanych, na przykład liczb całkowi- tych, wyświetlana jest ich wartość. Obiekty złożonych typów posiadają przy sobie znak plus (+). Można je rozwinąć, jak widać na rysunku 2.9. Więcej informacji o obiektach i ich danych znajduje się w kolejnych rozdziałach. Rysunek 2.9. Obiekt rozwinięty w oknie Locals Można wkroczyć w ciało kolejnej metody przyciskając klawisz F11. W tym przypadku spo- woduje to wejście w ciało metody DrawWindow() klasy Window, co przedstawione jest na ry- sunku 2.10. Można zobaczyć, że kolejną instrukcją jest teraz WriteLine() w metodzie DrawWindow(). Okno Autos zostało uaktualnione i przedstawia aktualny stan obiektów. Oczywiście to nie wszystkie możliwości programu uruchomieniowego, jednak materiał przed- stawiony w tym rozdziale pozwala na rozpoczęcie pracy z tym narzędziem. Pisanie krótkich programów demonstracyjnych i sprawdzanie ich działania za pomocą programu uruchomie- niowego pozwala udzielić odpowiedzi na wiele pytań programistycznych. Dobry program uru- chomieniowy jest, w pewnym sensie, najbardziej istotnym narzędziem języka programowania. Usuwanie błędów w Visual Studio .NET | 37 Rysunek 2.10. Wkraczanie w ciało metody 38 | Rozdział 2. Pierwszy program — „Witaj świecie”
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

C#. Programowanie
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ą: