O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

C#. Programowanie. Wydanie VI

Book Description

Najlepszy podręcznik po?więcony C#! W dzisiejszych czasach szczególnš popularno?ciš cieszš się języki programowania pozwalajšce na pisanie kodu łatwego do przenoszenia między platformami, ponieważ nikt nie ma czasu na pisanie kilku wersji jednej aplikacji. C# to uniwersalny język, który bez trudu spełnia ten wymóg. Dzięki swej elastyczno?ci, wydajno?ci oraz mocnemu wsparciu społeczno?ci zdobył on uznanie programistów. Jego wybór to strzał w dziesištkę!</p><p>Ten bestsellerowy podręcznik pozwoli Ci błyskawicznie poznać wszystkie niuanse języka C# 4.0. Najnowsze wydanie zostało zaktualizowane o nowo?ci w C# oraz zawiera opis tego języka i platformy .NET. W trakcie lektury nauczysz się tworzyć skomplikowane programy przy użyciu technik programowania obiektowego i funkcjonalnego. Ponadto sprawdzisz, jaki potencjał kryje język zapytań LINQ oraz jak przesyłać komunikaty za pomocš Windows Communication Foundation (WCF). Dodatkowo poznasz możliwo?ci C# w zakresie tworzenia aplikacji internetowych w technologii Silverlight. Nauka C# jeszcze nigdy nie była tak przyjemna.

Table of Contents

  1. C#. Programowanie
  2. Wstęp
    1. Struktura książki
      1. Gdzie szukać informacji o nowych możliwościach C# 4.0 oraz .NET 4?
    2. Dla kogo jest przeznaczona ta książka?
    3. Czego potrzeba, by korzystać z tej książki?
    4. Konwencje używane w książce
    5. Korzystanie z przykładów
    6. Podziękowania
      1. Od Iana Griffithsa
      2. Od Matthew Adamsa
  3. 1. Prezentacja C#
    1. Dlaczego C#? Dlaczego .NET?
    2. Biblioteka klas platformy .NET
    3. Styl języka
      1. Łatwość konstruowania oprogramowania
      2. Kod zarządzany
      3. Ciągłość i „ekosystem” Windows
    4. C# 4.0, .NET 4.0 oraz Visual Studio 2010
    5. Podsumowanie
  4. 2. Podstawowe techniki programowania
    1. Początki
    2. Przestrzenie nazw i typy
    3. Projekty i solucje
    4. Komentarze, regiony oraz czytelność
      1. Nieprawidłowe komentarze
      2. Komentarze dokumentujące XML
    5. Zmienne
      1. Typy zmiennych
        1. Liczby całkowite
        2. Typy zmiennoprzecinkowe
        3. Zmiennoprzecinkowe liczby dziesiętne
    6. Wyrażenia i instrukcje
      1. Instrukcje przypisania
      2. Operatory inkrementacji i dekrementacji
    7. Instrukcje sterowania przepływem i wyboru
      1. Instrukcje if
        1. if ... else
      2. Instrukcje switch oraz case
    8. Instrukcje iteracji
      1. Instrukcje foreach
      2. Instrukcje for
      3. Instrukcje while oraz do
      4. Przerywanie wykonywania pętli
    9. Metody
    10. Podsumowanie
  5. 3. Wyodrębnianie idei przy wykorzystaniu klas i struktur
    1. Dziel i rządź
      1. Wyodrębnianie idei w formie metod
      2. Wyodrębnianie idei przy użyciu obiektów i klas
        1. Analiza obiektowa
    2. Definiowanie klas
      1. Reprezentowanie stanu przy użyciu właściwości
      2. Poziomy ochrony
      3. Inicjalizacja przy użyciu konstruktora
      4. Pola: miejsca do zapisywania danych
      5. Pola mogą się zmieniać, lecz stałe nie
      6. Pola i właściwości tylko do odczytu
    3. Typ enum — powiązane ze sobą stałe
    4. Typy wartościowe i referencyjne
    5. Zbyt wiele konstruktorów, Panie Mozart
    6. Przeciążanie
      1. Metody przeciążone oraz domyślne parametry nazwane
    7. Inicjalizatory obiektów
    8. Definiowanie metod
      1. Deklarowanie metod statycznych
    9. Pola i właściwości statyczne
      1. Konstruktory statyczne
    10. Podsumowanie
  6. 4. Rozszerzalność i polimorfizm
    1. Tworzenie asocjacji poprzez kompozycję i agregację
    2. Dziedziczenie i polimorfizm
    3. Zastępowanie metod w klasach pochodnych
      1. Ukrywanie składowych klasy bazowej przy użyciu new
      2. Zastępowanie metod przy użyciu modyfikatorów virtual i override
    4. Dziedziczenie i ochrona
    5. Wywoływanie metod klasy bazowej
    6. Dotąd i ani kroku dalej: modyfikator sealed
    7. Wymuszanie przesłaniania — metody abstrakcyjne
    8. Wszystkie typy dziedziczą po klasie Object
      1. Pakowanie i rozpakowywanie typów wartościowych
    9. C# nie obsługuje wielokrotnego dziedziczenia implementacji
    10. C# obsługuje wielokrotne dziedziczenie interfejsów
    11. Tworzenie jednych interfejsów na bazie innych
      1. Jawna implementacja interfejsów
    12. Ostateczne rozwiązanie: sprawdzanie typów podczas wykonywania programu
    13. Podsumowanie
  7. 5. Delegacje — łatwość komponowania i rozszerzalność
    1. Kompozycja funkcyjna wykorzystująca delegacje
    2. Typ Action<T> — akcje ogólne
    3. Predicate<T> — predykaty ogólne
    4. Stosowanie metod anonimowych
    5. Tworzenie delegacji przy użyciu wyrażeń lambda
    6. Delegacje we właściwościach
    7. Ogólne delegacje do funkcji
    8. Informowanie klientów za pomocą zdarzeń
      1. Udostępnianie dużej liczby zdarzeń
    9. Podsumowanie
  8. 6. Obsługa błędów
    1. Kiedy i jak uznać niepowodzenie
    2. Zwracanie kodu błędu
      1. Debugowanie wartości zwracanych
    3. Wyjątki
      1. Obsługa wyjątków
      2. Kiedy są wykonywane bloki finally?
      3. Określanie, jakie wyjątki będą przechwytywane
      4. Wyjątki niestandardowe
    4. Podsumowanie
  9. 7. Tablice i listy
    1. Tablice
      1. Tworzenie i inicjalizacja
        1. Argumenty tablicowe i słowo kluczowe params
      2. Własne typy w tablicach
      3. Składowe tablic
        1. Odnajdywanie elementów tablic
        2. Porządkowanie elementów tablic
        3. Przenoszenie i kopiowanie elementów
      4. Wielkość tablic
        1. Tablice tablic (czyli tablice nieregularne)
        2. Tablice prostokątne
    2. List<T>
      1. Niestandardowe indeksatory
        1. Niezmienność i klasa List<T>
      2. Wyszukiwanie i sortowanie
    3. Kolekcje i polimorfizm
      1. Tworzenie własnych implementacji IEnumerable<T>
        1. Leniwe kolekcje
    4. Podsumowanie
  10. 8. LINQ
    1. Wyrażenia zapytań
      1. Wyrażenia zapytań a wywołania metod
      2. Metody rozszerzeń a LINQ
      3. Klauzule let
    2. Koncepcje i techniki LINQ
      1. Delegacje i wyrażenia lambda
      2. Styl funkcyjny i kompozycja
      3. Wykonywanie opóźnione
    3. Operatory LINQ
      1. Filtrowanie
      2. Porządkowanie
      3. Konkatenacja
      4. Grupowanie
      5. Projekcje
        1. Typy anonimowe
        2. Stosowanie wielu źródeł danych
        3. Numerowanie elementów
      6. Spinanie
      7. Robimy się wybredni
      8. Testowanie całej kolekcji
      9. Agregacja
      10. Operacje na zbiorach
      11. Łączenie
      12. Konwersje
    4. Podsumowanie
  11. 9. Klasy kolekcji
    1. Słowniki
      1. Popularne zastosowania słowników
        1. Odnajdywanie wartości
        2. Przechowywanie danych w pamięci podręcznej
        3. Właściwości dynamiczne
        4. Rzadkie tablice
      2. IDictionary<TKey, TValue>
      3. Słowniki i LINQ
    2. HashSet oraz SortedSet
    3. Kolejki
    4. Listy połączone
    5. Stosy
    6. Podsumowanie
  12. 10. Łańcuchy znaków
    1. Czym są łańcuchy znaków?
    2. Typy String i Char
    3. Literały łańcuchowe i znakowe
      1. Oznaczanie znaków specjalnych
    4. Formatowanie wyświetlanych danych
      1. Standardowe łańcuchy formatowania liczb
        1. Waluty
        2. Format dziesiętny
        3. Format szesnastkowy
        4. Postać wykładnicza
        5. Format stałoprzecinkowy
        6. Format ogólny
        7. Format liczbowy
        8. Format procentowy
        9. Format powrotny
      2. Niestandardowe łańcuchy formatujące
      3. Daty i godziny
      4. W drugą stronę — konwersja łańcuchów na dane innych typów
      5. Złożone formatowanie przy użyciu metody String.Format
    5. Wrażliwość na ustawienia kulturowe
      1. Poznawanie reguł formatowania
    6. Uzyskiwanie dostępu do znaków na podstawie indeksów
    7. Łańcuchy znaków są niezmienne
    8. Pobieranie ciągu znaków
    9. Składanie łańcuchów znaków
      1. Ponowne dzielenie łańcuchów
      2. Wielkie i małe litery
    10. Operacje na tekście
      1. StringBuilder — modyfikowalne łańcuchy znaków
    11. Odnajdywanie i zastępowanie łańcuchów
    12. Wszelkiego typu „puste” łańcuchy znaków
    13. Usuwanie białych znaków
    14. Sprawdzanie typu znaków
    15. Kodowanie znaków
      1. Dlaczego kodowanie ma znaczenie
      2. Kodowanie i dekodowanie
      3. Po co reprezentować łańcuchy w formie sekwencji bajtów?
    16. Podsumowanie
  13. 11. Pliki i strumienie
    1. Sprawdzanie katalogów i plików
    2. Badanie katalogów
    3. Operacje na ścieżkach
      1. Ścieżka i aktualny katalog roboczy
    4. Zdobywanie informacji o pliku
    5. Tworzenie plików tymczasowych
    6. Usuwanie plików
    7. Powszechnie znane katalogi
    8. Bezpieczne łączenie elementów ścieżek
    9. Tworzenie i zabezpieczanie hierarchii katalogów
    10. Usuwanie katalogu
    11. Zapis plików tekstowych
      1. Zapis całego pliku tekstowego w jednym wywołaniu
      2. Zapis tekstu przy użyciu klasy StreamWriter
    12. Gdy pliki schodzą na złą drogę: obsługa wyjątków
      1. Określanie i modyfikacja uprawnień
    13. Wczytywanie plików do pamięci
    14. Strumienie
      1. Poruszanie się wewnątrz strumienia
      2. Zapis danych przy użyciu strumieni
    15. Odczyt, zapis i blokowanie plików
    16. Konstruktory klasy FileStream
      1. Bufory strumieni
      2. Określanie uprawnień podczas tworzenia strumieni
      3. Opcje zaawansowane
    17. Asynchroniczne operacje na plikach
    18. Mechanizm Isolated Storage
      1. Magazyny
      2. Zapis i odczyt tekstu
      3. Definicja izolowania
        1. Izolowanie na podstawie użytkownika i podzespołu
        2. Izolowanie na podstawie użytkownika, domeny i podzespołu
        3. Izolowanie na podstawie użytkownika i aplikacji
        4. Izolowanie na podstawie komputera
      4. Zarządzanie magazynami użytkownika przy użyciu limitów
      5. Zarządzanie magazynami
    19. Strumienie, które nie są plikami
      1. Strumień adaptujący — CryptoStream
      2. Wszystko w pamięci — MemoryStream
      3. Reprezentowanie danych binarnych jako tekstu przy użyciu kodowania Base64
    20. Podsumowanie
  14. 12. XML
    1. Podstawy XML (krótki przegląd)
      1. Elementy
      2. XHTML
    2. Litera „X” oznacza „rozszerzalny” (eXtensible)
    3. Tworzenie dokumentów XML
      1. Elementy XML
      2. Atrybuty XML
      3. Umieszczanie kodu LINQ w LINQ to XML
    4. Przeszukiwanie kodu XML za pomocą LINQ
      1. Wyszukiwanie pojedynczego węzła
      2. Osie wyszukiwania
      3. Klauzule where
    5. Serializacja XML
      1. Dostosowywanie serializacji XML za pomocą atrybutów
    6. Podsumowanie
  15. 13. Sieci
    1. Wybór technologii sieciowej
      1. Aplikacja WWW z kodem klienta
      2. Klient .NET i serwer .NET
        1. Ściśle kontrolowane wdrażanie
        2. Słabo kontrolowane wdrażanie
      3. Klient .NET i usługa WWW pochodząca z zewnątrz
      4. Klient zewnętrzny i usługa WWW .NET
    2. Platforma WCF
      1. Tworzenie projektu WCF
      2. Kontrakty WCF
      3. Testowy host i klient WCF
      4. Udostępnianie usługi WCF
        1. Konfiguracja WCF
      5. Pisanie klienta WCF
        1. Współdzielenie kontraktów
        2. Obiekt pośredniczący (proxy)
      6. Dwukierunkowa komunikacja z dwustronnymi kontraktami
        1. Komunikacja działająca w oparciu o sesje
        2. Wywoływanie klienta przez serwer
        3. Konfiguracja serwera do komunikacji dwustronnej i korzystania z sesji
        4. Dwustronny klient
    3. Protokół HTTP
      1. Klient WWW
        1. Pobieranie zasobów
        2. Przesyłanie zasobów na serwer
        3. Strumieniowe pobieranie i przesyłanie danych na serwer
      2. Klasy WebRequest i WebResponse
        1. Uwierzytelnianie
        2. Korzystanie z proxy
        3. Kontrolowanie sposobu działania pamięci podręcznej
        4. Korzystanie z ciasteczek
    4. Gniazda
      1. Protokoły IP, IPv6 oraz TCP
      2. Łączenie się z usługami za pomocą klasy Socket
      3. Implementowanie usług za pomocą klasy Socket
    5. Inne możliwości związane z siecią
    6. Podsumowanie
  16. 14. Bazy danych
    1. Krajobraz możliwości dostępu do danych w ramach platformy .NET
      1. Klasyczny mechanizm ADO.NET
        1. Interfejs IDataReader i spółka
        2. Zbiory danych ADO.NET
      2. LINQ i bazy danych
      3. Technologie dostępu do danych nieopracowane przez firmę Microsoft
      4. WCF Data Services
      5. Technologia Silverlight i dostęp do danych
      6. Bazy danych
        1. Pobieranie i uruchamianie bazy danych przy użyciu systemu SQL Server 2008 Express
    2. Model encji danych
      1. Wygenerowany kod
      2. Zmiana odwzorowywania
      3. Związki
        1. Właściwości nawigacji
        2. Krotność
      4. Dziedziczenie
    3. Zapytania
      1. LINQ to Entities
      2. Entity SQL
      3. Mieszanie języków ESQL oraz LINQ
      4. Dostawca ADO.NET EntityClient
    4. Kontekst obiektu
      1. Obsługa połączenia
      2. Tworzenie, aktualizowanie i usuwanie
      3. Transakcje
      4. Optymistyczna współbieżność
      5. Czas życia kontekstu i encji
    5. WCF Data Services
    6. Podsumowanie
  17. 15. Podzespoły
    1. Komponenty .NET — podzespoły
      1. Odwołania
      2. Pisanie bibliotek
      3. Ochrona
        1. Ochrona wewnętrzna (internal)
    2. Nazwy
      1. Podpisywanie i silne nazwy
    3. Ładowanie
      1. Ładowanie z folderu aplikacji
      2. Ładowanie z bufora GAC
      3. Ładowanie z pliku Silverlight o rozszerzeniu xap
      4. Jawne ładowanie
        1. Wyładowywanie
    4. Podsumowanie
  18. 16. Wątki i kod asynchroniczny
    1. Wątki
      1. Wątki i systemowy mechanizm szeregujący
      2. Stos
      3. Pula wątków
      4. Powinowactwo oraz kontekst wątków
      5. Popularne błędne opinie dotyczące wątków
        1. Mit: Wątki są konieczne do wykonania pracy
        2. Mit: Większa liczba logicznych procesorów na pewno przyspieszy działanie
        3. Mit: Uzyskanie maksymalnego obciążenia procesora oznacza, że zadania są wykonywane naprawdę szybko
      6. Tworzenie kodu wielowątkowego jest trudne
        1. Wyścig
        2. Zakleszczenia i uwięzienia
      7. Strategie tworzenia kodu wielowątkowego
        1. Wstrzemięźliwość
        2. Izolacja
        3. Niezmienność
        4. Synchronizacja
    2. Podstawowe narzędzia synchronizacji
      1. Monitor
        1. Powiadomienia
      2. Inne typy blokad
        1. SpinLock
        2. Blokady odczytu i zapisu
        3. Muteksy
      3. Inne mechanizmy synchronizacji
      4. Zdarzenia
      5. Odliczanie
        1. BlockingCollection
    3. Programowanie asynchroniczne
      1. Model programowania asynchronicznego
      2. Programowanie asynchroniczne bazujące na zdarzeniach
      3. Doraźne operacje asynchroniczne
    4. Task Parallel Library
      1. Zadania
        1. Relacja rodzic-dziecko
        2. Współbieżność precyzyjna
        3. Zadania zwracające wyniki
        4. Kontynuacje
        5. Mechanizmy szeregujące
        6. Zadania i model programowania asynchronicznego
      2. Obsługa anulowania
      3. Obsługa błędów
    5. Równoległość danych
      1. Metody Parallel.For oraz Parallel.ForEach
      2. PLINQ — równoległe LINQ
    6. Podsumowanie
  19. 17. Atrybuty i odzwierciedlanie
    1. Atrybuty
      1. Typy atrybutów
        1. Cele atrybutów
        2. Stosowanie atrybutów
      2. Własne atrybuty
        1. Definiowanie własnych atrybutów
        2. Nazywanie atrybutów
        3. Konstruowanie atrybutów
        4. Używanie atrybutów
    2. Odzwierciedlanie
      1. Badanie metadanych
      2. Odkrywanie typów
      3. Odzwierciedlanie na rzecz określonego typu
        1. Odszukiwanie wszystkich składowych typu
        2. Odszukiwanie metod typu
      4. Późne wiązanie
    3. Podsumowanie
  20. 18. Typ dynamic
    1. Styl statyczny kontra styl dynamiczny
      1. Styl dynamiczny i automatyzacja COM
    2. Typ dynamic
      1. Typy obiektów i słowo dynamic
        1. Obiekty COM
        2. Obiekty skryptów Silverlight
        3. Zwykłe obiekty .NET
        4. Obiekty pochodzące z innych języków dynamicznych
        5. Obiekty ExpandoObject
        6. Własne obiekty dynamiczne
    3. Typ dynamic w zastosowaniach niezwiązanych z interoperacyjnością?
    4. Podsumowanie
  21. 19. Współdziałanie z COM i Win32
    1. Importowanie kontrolek ActiveX
      1. Importowanie kontrolek do projektów .NET
    2. Podzespoły współdziałania
      1. Bez PIA
    3. 64 czy 32 bity?
    4. Mechanizm P/Invoke
    5. Wskaźniki
    6. Rozszerzenia składni C# 4.0
      1. Właściwości indeksowane
      2. Opcjonalny modyfikator ref
    7. Podsumowanie
  22. 20. WPF i Silverlight
    1. XAML i kod ukryty
      1. XAML i obiekty
    2. Elementy i kontrolki
      1. Panele układów
        1. Ogólne właściwości układów
        2. Przekształcenia
      2. Elementy graficzne
        1. Kształty
        2. Obrazy
        3. Media
        4. Animacje
        5. Grafika trójwymiarowa
      3. Kontrolki
        1. Kontrolki z zawartością
        2. Kontrolki z wieloma elementami
      4. Kontrolki użytkownika
    3. Szablony kontrolek
      1. Style
      2. Menedżer stanu wizualnego
    4. Wiązanie danych
      1. Szablony danych
    5. Podsumowanie
  23. 21. Tworzenie aplikacji w ASP.NET
    1. Podstawy technologii Web Forms
      1. Zdarzenia formularzy sieciowych
        1. Zdarzenia przesyłane i nieprzesyłane
        2. Stan widoku
      2. Cykl życia stron w technologii Web Forms
    2. Tworzenie aplikacji internetowych
      1. Pliki kodu ukrytego
      2. Dodawanie kontrolek
      3. Kontrolki serwerowe
    3. Wiązanie danych
      1. Sprawdzanie kodu
      2. Dodawanie kontrolek i formularzy
    4. Podsumowanie
  24. 22. Windows Forms
    1. Tworzenie aplikacji
      1. Dodawanie źródła wiązania
    2. Kontrolki
      1. Dokowanie i kotwiczenie
    3. Wiązanie danych
    4. Obsługa zdarzeń
    5. Podsumowanie
  25. A. O autorach
  26. Indeks
  27. Kolofon
  28. Copyright