Книга посвящена основам программирования на языке С# 2008. Материал излагается последовательно на примере решения различных типичных проблем, с которыми сталкиваются программисты. Описаны типы данных языка С#, их достоинства, недостатки и особенности применения. Рассмотрены операторы языка, основы объектно-ориентированного, компонентно-ориентированного и функционального программирования. Показаны особенности обработки строк и исключений, а также многопоточная обработка информации. Описаны принципы хранения данных, конфигурационные файлы приложения, динамическое выполнение кода. Рассмотрен интерфейс среды разработки Visual С# Express Edition 2008. Материал сопровождается многочисленными примерами разработки приложений: калькулятор, переводчик, простая система искусственного интеллекта, обмен валют, вычисления налогов и др.
Author(s): Кристиан Гросс
Series: Apress
Publisher: БХВ-Петербург
Year: 2009
Language: Russian
Commentary: 1146130845 хор+OCR
Pages: 574
Об авторе ......Page 5
О техническом рецензенте ......Page 6
Введение ......Page 7
Скачивание и установка инструментов ......Page 9
Скачивание Visual С# Express ......Page 10
Установка Visual С# Express ......Page 11
Создание проектов и решений ......Page 12
Создание приложения Windows ......Page 13
Просмотр исходного кода ......Page 14
Сохранение решения ......Page 15
Выполнение приложения Windows ......Page 16
Заставляем приложение сказать "Hello" ......Page 17
Вставка в приложение комментариев ......Page 20
Перемещение по пользовательским элементам управления решения ......Page 22
Добавление консольного приложения в решение ......Page 25
Установка стартового проекта ......Page 26
Добавление библиотеки класса в решение ......Page 27
Перемещение функциональности ......Page 28
Вызов функциональности библиотеки класса ......Page 29
Использование переменных и констант ......Page 31
Как работает .NET Framework? ......Page 34
Вопросы и задания для самопроверки ......Page 37
Постановка задачи и организация процесса разработки ......Page 39
Организация разработки программы Калькулятор ......Page 40
Конкретизация процесса разработки программы Калькулятор ......Page 42
Реализация библиотеки класса ......Page 45
Метод Add() ......Page 47
Код для тестирования метода Add() ......Page 50
Проблемы с числами ......Page 55
Обычные и ссылочные типы данных ......Page 58
Типы числовых данных среды CLR ......Page 60
Завершение разработки Калькулятора ......Page 64
Советы разработчику ......Page 65
Вопросы и задания для самопроверки ......Page 66
Организация приложения перевода ......Page 67
Создание приложения перевода ......Page 68
Перевод слова "hello" ......Page 69
Создание тестового приложения ......Page 70
Вопрос разумного использования ......Page 71
Исследование строкового типа ......Page 72
Решение проблемы пробельных символов ......Page 78
Заключение строк в кавычки ......Page 83
Кодовые таблицы символов ......Page 84
Языки и региональные стандарты ......Page 85
Установка региональных стандартов и языка в Windows ......Page 86
Анализ и обработка чисел ......Page 87
Культурная среда ......Page 90
Советы разработчику ......Page 92
Вопросы и задания для самопроверки ......Page 93
Алгоритм поиска в глубину ......Page 95
Объявление структур и классов ......Page 99
Ограничения обычных типов ......Page 100
Организация алгоритма поиска ......Page 106
Определение и реализация структуры данных ......Page 108
Определение теста для алгоритма ......Page 120
Реализация алгоритма поиска в глубину ......Page 125
Выполнение алгоритма поиска в глубину ......Page 133
Советы разработчику..: ......Page 135
Вопросы и задания для самопроверки ......Page 136
Глава 5. Обработка исключений в С# ......Page 137
Ошибки, исключения и обработка исключений ......Page 138
Работа с отладчиком ......Page 139
Перехват исключений ......Page 140
Реализация обработчиков исключений ......Page 143
Предотвращение раскрутки стека ......Page 147
Фильтрация исключений ......Page 151
Защитный код ......Page 154
Использование состояния по умолчанию ......Page 157
Обработка некритических ошибок ......Page 158
Советы разработчику ......Page 159
Вопросы и задания для самопроверки ......Page 160
Глава 6. Основы объектио-ориентированиого программирования ......Page 161
Что такое спрэд? ......Page 162
Организация приложения для обмена валют ......Page 163
Введение в структурный код ......Page 164
Базовые классы ......Page 165
Что такое наследование? ......Page 166
Использование свойств С# ......Page 168
Наследование и модификаторы области видимости ......Page 172
Верификация ......Page 176
Завершение создания базового класса ......Page 179
Реализация класса ActiveCurrencyTrader ......Page 180
Реализация класса HotelCurrencyTrader ......Page 183
Директивы препроцессора ......Page 186
Ключевое слово abstract ......Page 188
Советы разработчику ......Page 190
Вопросы и задания для самопроверки ......Page 192
Введение в основы налогообложения ......Page 193
Организация приложения для вычисления налогов ......Page 194
Программирование с использованием идей ......Page 195
Представление идей с помощью интерфейсов С# ......Page 196
Принципы работы наследования и компонентов ......Page 199
Определение интерфейсов ......Page 206
Реализация движка базового класса для вычисления налогов ......Page 207
Стандартные реализации ......Page 213
Реализация базового налогового счета ......Page 215
Использование базовой функциональности движка для вычисления налогов ......Page 216
Реализация налогового движка и налогового счета............................................., ......Page 217
Дополнительные сведения о наследовании и приведении типов ......Page 222
Наследование ......Page 223
Приведение типов ......Page 229
Советы разработчику ......Page 230
Вопросы и задания для самопроверки ......Page 231
Понятие ядра ......Page 233
Организация приложения управления освещением ......Page 235
Создание ядра ......Page 236
Определение интерфейсов ......Page 237
Реализация ядра ......Page 241
Определение ядра в виде интерфейса, а не класса ......Page 261
Определение комнат ......Page 263
Создание экземпляров классов PublicRoom и PrivateRoom ......Page 264
Частные классы ......Page 266
Инициализация объектов вложенными типами данных ......Page 267
Советы разработчику ......Page 268
Вопросы и задания для самопроверки ......Page 269
Управление коллекциями ......Page 271
Управление коллекциями до С# 2.0 ......Page 272
Управление коллекциями в С# 2.0 и последующих версиях ......Page 277
Верен ли код? ......Page 278
Делегаты ......Page 282
Анонимные методы ......Page 287
Лямбда-выражения ......Page 289
Применение лямбда-выражений ......Page 292
Реализация алгоритма с помощью лямбда-выражения ......Page 293
Простой список ......Page 295
Список пар "ключ/значение" ......Page 296
Тип Stack ......Page 297
Советы разработчику ......Page 298
Вопросы и задания для самопроверки ......Page 299
Организация системы предсказания результатов лотереи ......Page 301
Канальная пересылка данных с помощью консоли ......Page 302
Считывание данных с консоли ......Page 303
Создание оболочки ......Page 304
Реализация приложения TextProcessor ......Page 315
Пересылка двоичных данных ......Page 324
Определение интерфейсов и реализация оболочки ......Page 326
Определение типа ......Page 329
Преобразование текстового потока в двоичный ......Page 331
Преобразование двоичного потока в текстовый поток ......Page 332
Специальная сериализация ......Page 334
Отделение объектов данных от объектов действия ......Page 336
Реализация метода GetHashCocle() ......Page 337
Реализация метода Equals() ......Page 340
Советы разработчику ......Page 342
Вопросы и задания для самопроверки ......Page 343
Зачем использовать обобщения .NET? ......Page 345
Теория в основе серверной электронной таблицы ......Page 349
Разработка серверной электронной таблицы ......Page 352
Проектирование архитектуры ......Page 353
Определение интерфейсов серверной электронной таблицы ......Page 354
Реализация серверной электронной таблицы ......Page 363
Использование лямбда-выражений в электронной таблице ......Page 370
Присваивание состояния при неизвестном типе ......Page 374
Подмена функциональности метода ToString() ......Page 376
Обработка данных в цикле с помощью перечисления ......Page 377
Вычисление среднего значения ......Page 379
Объяснение работы вычислений ......Page 381
Советы разработчику ......Page 382
Вопросы и задания для самопроверки ......Page 383
Соглашение превыше конфигурации ......Page 385
Использование стандартной архитектуры для развязки ......Page 387
Организация проектов динамической загрузки ......Page 388
Подписывание сборки ......Page 390
Указание пути вывода ......Page 391
Определение и обработка конфигурационного файла ......Page 392
Создание конфигурационного XML-файла ......Page 393
Добавление элементов конфигурации динамической загрузки ......Page 394
Считывание конфигурационного файла ......Page 395
Динамическое создание экземпляра типа ......Page 396
Усовершенствование конфигурационного файла ......Page 401
Загрузка сборок со строгими именами ......Page 406
Перемещение сборки со строгим именем в кэш GAC ......Page 408
Использование номеров версий ......Page 410
Реализация стандартной архитектуры ......Page 413
Динамическая загрузка базового класса или типов интерфейса ......Page 416
Советы разработчику ......Page 417
Вопросы и задания для самопроверки ......Page 418
Глава 13. Многопоточная обработка ......Page 419
Вытесняющая многозадачность ......Page 420
Квантование времени ......Page 421
Использование потоков ......Page 423
Создание нового потока ......Page 424
Ожидание завершения исполняющегося потока ......Page 425
Создание потока, имеющего состояние ......Page 426
Синхронизация потоков ......Page 428
Как избежать взаимоблокировок ......Page 435
Реализация потоковой архитектуры "читатель/писатель" ......Page 440
Реализация архитектуры "поставщик/потребитель" ......Page 444
Скрытая реализация "поставщик/потребитель" ......Page 445
Реализация общей архитектуры "поставщик/потребитель" ......Page 446
Асинхронный подход ......Page 449
Советы разработчику ......Page 451
Вопросы и задания для самопроверки ......Page 452
Организация реляционных баз данных ......Page 453
Таблицы реляционных баз данных ......Page 454
Отношения баз данных ......Page 455
Обращение к реляционной базе данных ......Page 459
Конфигурирование источника данных ......Page 461
Добавление таблиц ......Page 464
Обращение к базе данных с помощью ADO.NET ......Page 468
Добавление данных в таблицу ......Page 469
Удаление записей из базы данных ......Page 472
Выводы об использовании ADO.NET ......Page 473
Создание отношений между таблицами ......Page 474
Использование сгенерированного кода ......Page 479
Советы разработчику ......Page 480
Вопросы и задания для самопроверки ......Page 481
Определение частоты выпадения выигрышных номеров ......Page 483
Расширение системы предсказания результатов лотереи ......Page 485
Реализация решения подсчета частоты вхождения номеров ......Page 488
Дополнительные приемы LINQ ......Page 495
Выборка и изменение данных ......Page 499
Выборка посредством анонимных типов ......Page 500
Сортировка результатов ......Page 502
Разбивка результатов на группы ......Page 503
Операции над множествами ......Page 505
Использование L1NQ в других контекстах ......Page 507
Вопросы и задания для самопроверки ......Page 509
Зачем использовать функциональное программирование? ......Page 511
Функции высшего порядка ......Page 514
Чистые функции ......Page 518
Вычисление функций ......Page 524
Рекурсия ......Page 527
Советы разработчику ......Page 528
Вопросы и задания для самопроверки ......Page 529
Арифметические операторы ......Page 531
Перегрузка операторов ......Page 536
Оператор goto ......Page 539
Ограничение type ......Page 540
Ограничение new ......Page 542
Нулевые типы ......Page 543
Частичные классы и методы ......Page 545
Советы разработчику ......Page 547
Вопросы и задания для самопроверки ......Page 548
Предметный указатель ......Page 549