C#. Programowanie. Wydanie VI - Helion
Tytuł oryginału: Programming C# 4.0: Building Windows, Web, and RIA Applications for the .NET 4.0 Framework
Tłumaczenie: Piotr Rajca, Łukasz Suma
ISBN: 978-83-246-5694-3
stron: 840, Format: ebook
Data wydania: 2012-10-22
Księgarnia: Helion
Cena książki: 96,75 zł (poprzednio: 129,00 zł)
Oszczędzasz: 25% (-32,25 zł)
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ę!
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!
- Pisz złożone programy z użyciem technik programowania obiektowego oraz funkcjonalnego
- Przetwarzaj duże kolekcje danych dzięki wbudowanym w język zapytaniom LINQ
- Komunikuj się przez sieć za pomocą Windows Communication Foundation (WCF)
- Poznaj zalety technik programowania dynamicznego, dostępnych w C# 4.0
- Twórz interaktywne aplikacje Windows z Windows Presentation Foundation (WPF)
- Twórz bogate aplikacje internetowe z wykorzystaniem możliwości Silverlight oraz ASP.NET
Wykorzystaj potencjał języka C#!
Ian Griffiths jest autorem kursu WPF oraz instruktorem w firmie Pluralsight, specjalizującej się w prowadzeniu kursów Microsoft .NET. Pracuje także jako niezależny konsultant. Jest współautorem książek "Windows Forms in a Nutshell", "Mastering Visual Studio .NET" oraz "Programming WPF", wydanych przez wydawnictwo O"Reilly.
Matthew Adams jest kierownikiem do spraw tworzenia aplikacji w firmie Digital Healthcare Ltd. oraz autorem wielu artykułów i publikacji dotyczących znaczenia .NET w przemyśle informatycznym.
Jesse Liberty jest starszym kierownikiem programu Microsoft Silverlight. Jest doskonale znany w środowisku jako jeden z czołowych ekspertów oraz autor bestsellerowych książek, takich jak "Programming C# 3.0" (O"Reilly) oraz "ASP.NET 3.5. Programowanie" i "ASP.NET 2.0 i Ajax".
Osoby które kupowały "C#. Programowanie. Wydanie VI", wybierały także:
- Język C. Kurs video. Praktyczne wprowadzenie do programowania 99,00 zł, (29,70 zł -70%)
- Wzorce projektowe dla programistów C#. Kurs video 99,00 zł, (29,70 zł -70%)
- C# 9.0 w pigułce 173,87 zł, (53,90 zł -69%)
- Gray Hat C#. Język C# w kontroli i łamaniu zabezpieczeń 57,74 zł, (17,90 zł -69%)
- ASP.NET Core 6. Kurs video. Rozwijaj aplikacje webowe z Entity Framework Core 178,97 zł, (62,64 zł -65%)
Spis treści
C#. Programowanie. Wydanie VI eBook -- spis treści
Wstęp (13)
1. Prezentacja C# (19)
- Dlaczego C#? Dlaczego .NET? (19)
- Biblioteka klas platformy .NET (20)
- Styl języka (21)
- Łatwość konstruowania oprogramowania (22)
- Kod zarządzany (23)
- Ciągłość i "ekosystem" Windows (24)
- C# 4.0, .NET 4.0 oraz Visual Studio 2010 (25)
- Podsumowanie (27)
2. Podstawowe techniki programowania (29)
- Początki (29)
- Przestrzenie nazw i typy (32)
- Projekty i solucje (37)
- Komentarze, regiony oraz czytelność (42)
- Nieprawidłowe komentarze (43)
- Komentarze dokumentujące XML (44)
- Zmienne (45)
- Typy zmiennych (46)
- Wyrażenia i instrukcje (52)
- Instrukcje przypisania (55)
- Operatory inkrementacji i dekrementacji (55)
- Instrukcje sterowania przepływem i wyboru (56)
- Instrukcje if (58)
- Instrukcje switch oraz case (62)
- Instrukcje iteracji (64)
- Instrukcje foreach (65)
- Instrukcje for (67)
- Instrukcje while oraz do (69)
- Przerywanie wykonywania pętli (70)
- Metody (71)
- Podsumowanie (74)
3. Wyodrębnianie idei przy wykorzystaniu klas i struktur (77)
- Dziel i rządź (77)
- Wyodrębnianie idei w formie metod (77)
- Wyodrębnianie idei przy użyciu obiektów i klas (80)
- Definiowanie klas (81)
- Reprezentowanie stanu przy użyciu właściwości (82)
- Poziomy ochrony (84)
- Inicjalizacja przy użyciu konstruktora (86)
- Pola: miejsca do zapisywania danych (90)
- Pola mogą się zmieniać, lecz stałe nie (92)
- Pola i właściwości tylko do odczytu (93)
- Typ enum - powiązane ze sobą stałe (96)
- Typy wartościowe i referencyjne (100)
- Zbyt wiele konstruktorów, Panie Mozart (105)
- Przeciążanie (105)
- Metody przeciążone oraz domyślne parametry nazwane (106)
- Inicjalizatory obiektów (108)
- Definiowanie metod (112)
- Deklarowanie metod statycznych (115)
- Pola i właściwości statyczne (116)
- Konstruktory statyczne (117)
- Podsumowanie (119)
4. Rozszerzalność i polimorfizm (121)
- Tworzenie asocjacji poprzez kompozycję i agregację (122)
- Dziedziczenie i polimorfizm (124)
- Zastępowanie metod w klasach pochodnych (126)
- Ukrywanie składowych klasy bazowej przy użyciu new (127)
- Zastępowanie metod przy użyciu modyfikatorów virtual i override (129)
- Dziedziczenie i ochrona (132)
- Wywoływanie metod klasy bazowej (134)
- Dotąd i ani kroku dalej: modyfikator sealed (136)
- Wymuszanie przesłaniania - metody abstrakcyjne (138)
- Wszystkie typy dziedziczą po klasie Object (144)
- Pakowanie i rozpakowywanie typów wartościowych (144)
- C# nie obsługuje wielokrotnego dziedziczenia implementacji (149)
- C# obsługuje wielokrotne dziedziczenie interfejsów (149)
- Tworzenie jednych interfejsów na bazie innych (152)
- Jawna implementacja interfejsów (153)
- Ostateczne rozwiązanie: sprawdzanie typów podczas wykonywania programu (157)
- Podsumowanie (158)
5. Delegacje - łatwość komponowania i rozszerzalność (159)
- Kompozycja funkcyjna wykorzystująca delegacje (166)
- Typ Action
- akcje ogólne (172) - Predicate
- predykaty ogólne (175) - Stosowanie metod anonimowych (177)
- Tworzenie delegacji przy użyciu wyrażeń lambda (178)
- Delegacje we właściwościach (180)
- Ogólne delegacje do funkcji (182)
- Informowanie klientów za pomocą zdarzeń (186)
- Udostępnianie dużej liczby zdarzeń (194)
- Podsumowanie (197)
6. Obsługa błędów (199)
- Kiedy i jak uznać niepowodzenie (204)
- Zwracanie kodu błędu (207)
- Debugowanie wartości zwracanych (213)
- Wyjątki (214)
- Obsługa wyjątków (219)
- Kiedy są wykonywane bloki finally? (226)
- Określanie, jakie wyjątki będą przechwytywane (227)
- Wyjątki niestandardowe (230)
- Podsumowanie (232)
7. Tablice i listy (233)
- Tablice (233)
- Tworzenie i inicjalizacja (234)
- Własne typy w tablicach (237)
- Składowe tablic (242)
- Wielkość tablic (247)
- List
(254)
- Niestandardowe indeksatory (257)
- Wyszukiwanie i sortowanie (264)
- Kolekcje i polimorfizm (264)
- Tworzenie własnych implementacji IEnumerable
(268)
- Tworzenie własnych implementacji IEnumerable
- Podsumowanie (274)
8. LINQ (275)
- Wyrażenia zapytań (275)
- Wyrażenia zapytań a wywołania metod (277)
- Metody rozszerzeń a LINQ (278)
- Klauzule let (280)
- Koncepcje i techniki LINQ (281)
- Delegacje i wyrażenia lambda (281)
- Styl funkcyjny i kompozycja (283)
- Wykonywanie opóźnione (284)
- Operatory LINQ (285)
- Filtrowanie (285)
- Porządkowanie (286)
- Konkatenacja (289)
- Grupowanie (289)
- Projekcje (291)
- Spinanie (298)
- Robimy się wybredni (299)
- Testowanie całej kolekcji (300)
- Agregacja (302)
- Operacje na zbiorach (304)
- Łączenie (304)
- Konwersje (305)
- Podsumowanie (306)
9. Klasy kolekcji (307)
- Słowniki (307)
- Popularne zastosowania słowników (309)
- IDictionary
(315) - Słowniki i LINQ (317)
- HashSet oraz SortedSet (318)
- Kolejki (319)
- Listy połączone (320)
- Stosy (321)
- Podsumowanie (322)
10. Łańcuchy znaków (323)
- Czym są łańcuchy znaków? (324)
- Typy String i Char (325)
- Literały łańcuchowe i znakowe (326)
- Oznaczanie znaków specjalnych (327)
- Formatowanie wyświetlanych danych (330)
- Standardowe łańcuchy formatowania liczb (331)
- Niestandardowe łańcuchy formatujące (337)
- Daty i godziny (340)
- W drugą stronę - konwersja łańcuchów na dane innych typów (343)
- Złożone formatowanie przy użyciu metody String.Format (345)
- Wrażliwość na ustawienia kulturowe (346)
- Poznawanie reguł formatowania (348)
- Uzyskiwanie dostępu do znaków na podstawie indeksów (349)
- Łańcuchy znaków są niezmienne (349)
- Pobieranie ciągu znaków (351)
- Składanie łańcuchów znaków (352)
- Ponowne dzielenie łańcuchów (354)
- Wielkie i małe litery (355)
- Operacje na tekście (356)
- StringBuilder - modyfikowalne łańcuchy znaków (357)
- Odnajdywanie i zastępowanie łańcuchów (361)
- Wszelkiego typu "puste" łańcuchy znaków (362)
- Usuwanie białych znaków (365)
- Sprawdzanie typu znaków (368)
- Kodowanie znaków (368)
- Dlaczego kodowanie ma znaczenie (370)
- Kodowanie i dekodowanie (371)
- Po co reprezentować łańcuchy w formie sekwencji bajtów? (378)
- Podsumowanie (378)
11. Pliki i strumienie (379)
- Sprawdzanie katalogów i plików (379)
- Badanie katalogów (382)
- Operacje na ścieżkach (383)
- Ścieżka i aktualny katalog roboczy (384)
- Zdobywanie informacji o pliku (385)
- Tworzenie plików tymczasowych (388)
- Usuwanie plików (389)
- Powszechnie znane katalogi (390)
- Bezpieczne łączenie elementów ścieżek (393)
- Tworzenie i zabezpieczanie hierarchii katalogów (394)
- Usuwanie katalogu (401)
- Zapis plików tekstowych (402)
- Zapis całego pliku tekstowego w jednym wywołaniu (402)
- Zapis tekstu przy użyciu klasy StreamWriter (403)
- Gdy pliki schodzą na złą drogę: obsługa wyjątków (406)
- Określanie i modyfikacja uprawnień (410)
- Wczytywanie plików do pamięci (414)
- Strumienie (418)
- Poruszanie się wewnątrz strumienia (424)
- Zapis danych przy użyciu strumieni (425)
- Odczyt, zapis i blokowanie plików (426)
- Konstruktory klasy FileStream (428)
- Bufory strumieni (428)
- Określanie uprawnień podczas tworzenia strumieni (429)
- Opcje zaawansowane (429)
- Asynchroniczne operacje na plikach (430)
- Mechanizm Isolated Storage (433)
- Magazyny (434)
- Zapis i odczyt tekstu (435)
- Definicja izolowania (436)
- Zarządzanie magazynami użytkownika przy użyciu limitów (440)
- Zarządzanie magazynami (441)
- Strumienie, które nie są plikami (444)
- Strumień adaptujący - CryptoStream (447)
- Wszystko w pamięci - MemoryStream (448)
- Reprezentowanie danych binarnych jako tekstu przy użyciu kodowania Base64 (449)
- Podsumowanie (452)
12. XML (453)
- Podstawy XML (krótki przegląd) (453)
- Elementy (453)
- XHTML (455)
- Litera "X" oznacza "rozszerzalny" (eXtensible) (456)
- Tworzenie dokumentów XML (456)
- Elementy XML (459)
- Atrybuty XML (460)
- Umieszczanie kodu LINQ w LINQ to XML (463)
- Przeszukiwanie kodu XML za pomocą LINQ (464)
- Wyszukiwanie pojedynczego węzła (467)
- Osie wyszukiwania (468)
- Klauzule where (469)
- Serializacja XML (469)
- Dostosowywanie serializacji XML za pomocą atrybutów (472)
- Podsumowanie (473)
13. Sieci (475)
- Wybór technologii sieciowej (475)
- Aplikacja WWW z kodem klienta (476)
- Klient .NET i serwer .NET (480)
- Klient .NET i usługa WWW pochodząca z zewnątrz (482)
- Klient zewnętrzny i usługa WWW .NET (483)
- Platforma WCF (483)
- Tworzenie projektu WCF (483)
- Kontrakty WCF (484)
- Testowy host i klient WCF (486)
- Udostępnianie usługi WCF (489)
- Pisanie klienta WCF (496)
- Dwukierunkowa komunikacja z dwustronnymi kontraktami (504)
- Protokół HTTP (513)
- Klient WWW (514)
- Klasy WebRequest i WebResponse (518)
- Gniazda (525)
- Protokoły IP, IPv6 oraz TCP (526)
- Łączenie się z usługami za pomocą klasy Socket (531)
- Implementowanie usług za pomocą klasy Socket (535)
- Inne możliwości związane z siecią (540)
- Podsumowanie (540)
14. Bazy danych (541)
- Krajobraz możliwości dostępu do danych w ramach platformy .NET (541)
- Klasyczny mechanizm ADO.NET (542)
- LINQ i bazy danych (546)
- Technologie dostępu do danych nieopracowane przez firmę Microsoft (548)
- WCF Data Services (548)
- Technologia Silverlight i dostęp do danych (549)
- Bazy danych (550)
- Model encji danych (551)
- Wygenerowany kod (555)
- Zmiana odwzorowywania (557)
- Związki (558)
- Dziedziczenie (565)
- Zapytania (566)
- LINQ to Entities (566)
- Entity SQL (570)
- Mieszanie języków ESQL oraz LINQ (573)
- Dostawca ADO.NET EntityClient (574)
- Kontekst obiektu (574)
- Obsługa połączenia (574)
- Tworzenie, aktualizowanie i usuwanie (577)
- Transakcje (579)
- Optymistyczna współbieżność (584)
- Czas życia kontekstu i encji (586)
- WCF Data Services (587)
- Podsumowanie (591)
15. Podzespoły (593)
- Komponenty .NET - podzespoły (593)
- Odwołania (594)
- Pisanie bibliotek (597)
- Ochrona (599)
- Nazwy (602)
- Podpisywanie i silne nazwy (603)
- Ładowanie (605)
- Ładowanie z folderu aplikacji (606)
- Ładowanie z bufora GAC (606)
- Ładowanie z pliku Silverlight o rozszerzeniu xap (607)
- Jawne ładowanie (607)
- Podsumowanie (609)
16. Wątki i kod asynchroniczny (611)
- Wątki (613)
- Wątki i systemowy mechanizm szeregujący (615)
- Stos (617)
- Pula wątków (624)
- Powinowactwo oraz kontekst wątków (625)
- Popularne błędne opinie dotyczące wątków (627)
- Tworzenie kodu wielowątkowego jest trudne (634)
- Strategie tworzenia kodu wielowątkowego (637)
- Podstawowe narzędzia synchronizacji (638)
- Monitor (639)
- Inne typy blokad (649)
- Inne mechanizmy synchronizacji (653)
- Zdarzenia (653)
- Odliczanie (654)
- Programowanie asynchroniczne (655)
- Model programowania asynchronicznego (656)
- Programowanie asynchroniczne bazujące na zdarzeniach (659)
- Doraźne operacje asynchroniczne (660)
- Task Parallel Library (661)
- Zadania (661)
- Obsługa anulowania (668)
- Obsługa błędów (669)
- Równoległość danych (671)
- Metody Parallel.For oraz Parallel.ForEach (671)
- PLINQ - równoległe LINQ (673)
- Podsumowanie (674)
17. Atrybuty i odzwierciedlanie (675)
- Atrybuty (675)
- Typy atrybutów (676)
- Własne atrybuty (677)
- Odzwierciedlanie (681)
- Badanie metadanych (681)
- Odkrywanie typów (683)
- Odzwierciedlanie na rzecz określonego typu (684)
- Późne wiązanie (686)
- Podsumowanie (689)
18. Typ dynamic (691)
- Styl statyczny kontra styl dynamiczny (691)
- Styl dynamiczny i automatyzacja COM (693)
- Typ dynamic (694)
- Typy obiektów i słowo dynamic (697)
- Typ dynamic w zastosowaniach niezwiązanych z interoperacyjnością? (707)
- Podsumowanie (710)
19. Współdziałanie z COM i Win32 (711)
- Importowanie kontrolek ActiveX (711)
- Importowanie kontrolek do projektów .NET (712)
- Podzespoły współdziałania (714)
- Bez PIA (716)
- 64 czy 32 bity? (717)
- Mechanizm P/Invoke (720)
- Wskaźniki (724)
- Rozszerzenia składni C# 4.0 (729)
- Właściwości indeksowane (729)
- Opcjonalny modyfikator ref (730)
- Podsumowanie (731)
20. WPF i Silverlight (733)
- XAML i kod ukryty (735)
- XAML i obiekty (739)
- Elementy i kontrolki (742)
- Panele układów (743)
- Elementy graficzne (752)
- Kontrolki (759)
- Kontrolki użytkownika (763)
- Szablony kontrolek (765)
- Style (767)
- Menedżer stanu wizualnego (769)
- Wiązanie danych (771)
- Szablony danych (773)
- Podsumowanie (776)
21. Tworzenie aplikacji w ASP.NET (777)
- Podstawy technologii Web Forms (777)
- Zdarzenia formularzy sieciowych (779)
- Cykl życia stron w technologii Web Forms (780)
- Tworzenie aplikacji internetowych (781)
- Pliki kodu ukrytego (782)
- Dodawanie kontrolek (783)
- Kontrolki serwerowe (785)
- Wiązanie danych (786)
- Sprawdzanie kodu (789)
- Dodawanie kontrolek i formularzy (792)
- Podsumowanie (796)
22. Windows Forms (797)
- Tworzenie aplikacji (798)
- Dodawanie źródła wiązania (799)
- Kontrolki (801)
- Dokowanie i kotwiczenie (806)
- Wiązanie danych (808)
- Obsługa zdarzeń (813)
- Podsumowanie (814)
Skorowidz (817)