Изучаем C#
Э. Стиллмен, Дж. Грин
В отличие от большинства книг по программированию, построенных на основе скучного изложения спецификаций и примеров, с этой книгой читатель сможет сразу приступить к написанию собственного кода на языке программирования C# с самого начала. Вы освоите минимальный набор инструментов, а далее примете участие в забавных и интересных программных проектах: от разработки карточной игры до создания серьезного бизнес-приложения. Второе издание книги включает последние версии C# .NET 4.0 и Visual Studio 2010 и будет интересно всем, изучающим язык программирования С#.
Особенностью данного издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O'Reilly в ряду множества скучных книг, посвященных программированию.
Издательство: Питер, 2013 г.
ISBN 978-5-4461-0105-4, 978-5-459-00422-9, 978-1-4493-8034-2
Количество страниц: 704.
Содержание книги «Изучаем C#»:
- 23 Введение
- 24 Для кого написана эта книга
- 25 Мы знаем, о чем вы думаете
- 27 Метапознание: наука о мышлении
- 29 Заставьте свой мозг повиноваться
- 30 Что вам потребуется
- 31 Информация
- 32 Технические рецензенты
- 33 Благодарности
- 35 1. Эффективность в C#. Визуальные приложения за 10 минут
- 36 Зачем вам изучать C#
- 37 C#, ИСР Visual Studio многое упрощают
- 38 Избавьте директора от бумаг
- 39 Перед началом работы выясните, что именно нужно пользователю
- 40 Что мы собираемся сделать
- 42 Это вы делаете в Visual Studio
- 42 А это Visual Studio делает за вас
- 46 Создаем пользовательский интерфейс
- 48 Visual Studio, за сценой
- 49 Редактирование кода
- 50 Первый запуск приложения
- 50 Где же мои файлы?
- 51 Вот что уже сделано
- 52 Для хранения информации нужна база данных
- 53 База данных, созданная ИСР
- 53 Язык SQL
- 54 Создание таблицы для списка контактов
- 56 Поля в контактной карте – это столбцы таблицы People
- 59 Завершение таблицы
- 60 Перенос в базу данных с карточек
- 62 Источник данных соединит форму с базой
- 64 Добавление элементов, связанных с базой данных
- 66 Хорошие программы понятны интуитивно
- 68 Тестирование
- 69 Как превратить ВАШЕ приложение в приложение для ВСЕХ
- 71 Работа НЕ окончена: проверим процесс установки
- 72 Управляющее данными приложение готово
- 73 2. Это всего лишь код. Под покровом
- 74 Когда вы делаете это
- 75 ... ИСР делает это
- 76 Как рождаются программы
- 78 Писать код помогает ИСР
- 80 Любые действия ведут к изменению кода
- 82 Структура программы
- 84 Начало работы программы
- 86 Редактирование точки входа
- 91 Классы могут принадлежать одному пространству имен
- 92 Что такое переменные
- 94 Знакомые математические символы
- 95 Наблюдение за переменными в процессе отладки
- 97 Циклы
- 98 Перейдем к практике
- 99 Оператор выбора
- 100 Проверка условий
- 115 3. Объекты, по порядку стройся! Приемы программирования
- 116 Что думает Майк о своих проблемах
- 117 Проблема Майка с точки зрения навигационных систем
- 118 Методы прокладки и редактирования маршрутов
- 119 Построим программу с использованием классов
- 121 Идея Майка
- 122 Объекты как способ решения проблемы
- 123 Возьмите класс и постройте объект
- 124 Экземпляры
- 125 Простое решение!
- 130 Поля
- 131 Создаем экземпляры
- 132 Спасибо за память
- 133 Что происходит в памяти программы
- 134 Значимые имена
- 136 Структура классов
- 138 Выбор структуры класса при помощи диаграммы
- 142 Помогите парням
- 144 Проект «Парни»
- 147 Более простые способы присвоения начальных значений
- 153 4. Типы и ссылки. 10:00 утра. Куда подевались наши данные?
- 154 Тип переменной определяет, какие данные она может сохранить
- 156 Наглядное представление переменных
- 157 10 литров в пятилитровой банке
- 158 Приведение типов
- 159 Автоматическая коррекция слишком больших значений
- 160 Иногда приведение типов происходит автоматически
- 161 Аргументы метода должны быть совместимы с типами параметров
- 166 Комбинация с оператором =
- 167 Объекты тоже используют переменные
- 168 Переменные ссылочного типа
- 169 Ссылки подобны маркерам
- 170 При отсутствии ссылок объект превращается в мусор
- 171 Побочные эффекты множественных ссылок
- 176 Две ссылки это ДВА способа редактировать данные объекта
- 177 Особый случай: массивы
- 177 Массив
- 178 Массив может состоять из ссылочных переменных
- 179 Добро пожаловать на распродажу сэндвичей от Джо!
- 181 Ссылки позволяют объектам обращаться друг к другу
- 182 Сюда объекты еще не отправлялись
- 187 Играем в печатную машинку
- 195 5. Инкапсуляция. Пусть личное остается... личным
- 196 Кэтлин профессиональный массовик-затейник
- 197 Как происходит оценка
- 202 Кэтлин тестирует программу
- 204 Каждый вариант нужно было считать отдельно
- 206 Неправильное использование объектов
- 206 Форма
- 207 Инкапсуляция как управление доступом к данным
- 208 Доступ к данным и полям класса
- 209 НА САМОМ ЛИ ДЕЛЕ защищено поле realName?
- 210 Закрытые поля и методы доступны только изнутри класса
- 218 Инкапсуляция сохраняет данные нетронутыми
- 219 Инкапсуляция при помощи свойств
- 220 Приложение для проверки класса Farmer
- 221 Автоматические свойства
- 222 Редактируем множитель feed
- 223 Конструктор
- 231 6. Наследование. Генеалогическое древо объектов
- 232 Организация дней рождения – это тоже работа Кэтлин
- 233 Нам нужен класс BirstdayParty
- 234 Планировщик мероприятий, версия 2.0
- 241 Дополнительный взнос за мероприятия с большим количеством гостей
- 242 Наследование
- 243 Модель классов: от общего к частному
- 244 Симулятор зоопарка
- 248 Иерархия классов
- 249 Производные классы расширяют базовый
- 250 Синтаксис наследования
- 253 При наследовании поля свойств и методы базового класса добавляются к производному
- 254 Перекрытие методов
- 255 Вместо базового класса можно взять один из производных
- 262 Производный класс умеет скрывать методы
- 264 Ключевые слова override и virtual
- 266 Ключевое слово base
- 267 Если в базовом классе присутствует конструктор, он должен остаться и в производном классе
- 268 Теперь мы готовы завершить программу для Кэтлин!
- 273 Система управления ульем
- 274 Построение основ
- 282 Совершенствуем систему управления ульем при помощи наследования
- 283 7. Интерфейсы и абстрактные классы. Пусть классы держат обещания
- 284 Вернемся к нашим пчелам
- 285 Классы для различных типов пчел
- 286 Интерфейсы
- 289 Классы, реализующие интерфейсы, должны включать ВСЕ методы интерфейсов
- 290 Учимся работать с интерфейсами
- 293 Ссылка на интерфейс аналогична ссылке на объект
- 295 Интерфейсы и наследование
- 296 RoboBee 4000 функционирует без меда
- 298 Кофеварка относится к Приборам
- 299 Восходящее приведение
- 300 Нисходящее приведение
- 301 Нисходящее и восходящее приведение интерфейсов
- 305 Модификаторы доступа
- 306 Изменение видимости при помощи модификаторов доступа
- 309 Классы, для которых недопустимо создание экземпляров
- 310 Абстрактный класс. Перепутье между классом и интерфейсом
- 312 Как уже было сказано, недопустимо создавать экземпляры некоторых классов
- 313 Абстрактный метод не имеет тела
- 318 Смертельным ромбом!
- 321 Различные формы объекта
- 339 8. Перечисления и коллекции. Большие объемы данных
- 340 Категории данных не всегда можно сохранять в переменных типа string
- 341 Перечисления
- 342 Присвоим числам имена
- 345 Создать колоду карт можно было при помощи массива
- 346 Проблемы работы с массивами
- 347 Коллекции
- 348 Коллекции List
- 351 Динамическое изменение размеров
- 352 Обобщенные коллекции
- 356 Инициализаторы коллекций
- 357 Коллекция уток
- 358 Сортировка элементов коллекции
- 359 Интерфейс IComparable<Duck>
- 360 Способы сортировки
- 361 Создадим экземпляр объекта-компаратора
- 362 Сложные схемы сравнения
- 365 Перекрытие метода ToString()
- 366 Обновим цикл foreach
- 367 Интерфейс IEnumerable
- 368 Восходящее приведение с помощью IEnumerable
- 369 Создание перегруженных методов
- 375 Словари
- 389 Дополнительные типы коллекций
- 390 Звенья следуют в порядке их поступления
- 391 Звенья следуют в порядке, обратном порядку их поступления
- 395 9. Чтение и запись файлов. Сохрани массив байтов и спаси мир
- 396 Для чтения и записи данных в .NET используются потоки
- 397 Различные потоки для различных данных
- 398 Объект FileStream
- 399 Трехшаговая процедура записи текста в файл
- 403 Чтение и запись при помощи двух объектов
- 407 Встроенные объекты для вызова стандартных окон диалога
- 410 Встроенные классы File и Directory
- 413 Открытие и сохранение файлов при помощи окон диалога
- 415 Интерфейс IDisposable
- 416 Операторы using как средство избежать системных ошибок
- 422 Запись файлов сопровождается принятием решений
- 423 Оператор switch
- 424 Чтение и запись информации о картах в файл
- 425 Чтение карт из файла
- 429 Сериализации подвергается не только сам объект
- 430 Сериализация позволяет читать и записывать объект целиком
- 432 Сериализуем и десериализуем колоду карт
- 435 .NET использует Unicode для хранения символов и текста
- 436 Перемещение данных внутри массива байтов
- 437 Класс BinaryWriter
- 439 Чтение и запись сериализованных файлов вручную
- 440 Найдите отличия и отредактируйте файлы
- 441 Сложности работы с двоичными файлами
- 442 Программа для создания дампа
- 443 Достаточно StreamReader и StreamWriter
- 444 Чтение байтов из потока
- 449 10. Обработка исключений. Борьба с огнем надоедает
- 450 Брайану нужны мобильные оправдания
- 454 Объект Exception
- 456 Код Брайана работает не так, как предполагалось
- 458 Исключения наследуют от объекта Exception
- 459 Работа с отладчиком
- 460 Поиск ошибки в приложении Excuse Manager с помощью отладчика
- 463 А код все равно не работает
- 465 Ключевые слова try и catch
- 466 Вызов сомнительного метода
- 468 Результаты применения ключевых слов try/catch
- 470 Ключевое слово finally
- 475 Получения информации о проблеме
- 476 Обработка исключений разных типов
- 477 Один класс создает исключение, другой его обрабатывает
- 478 Исключение OutOfHoney для пчел
- 481 Оператор using как комбинация операторов try и finally
- 482 Избегаем исключений при помощи интерфейса IDisposable
- 484 Наихудший вариант блока catch
- 485 Временные решения
- 486 Краткие принципы обработки исключений
- 489 Наконец Брайан получил свой отдых
- 491 11. События и делегаты. Что делает код, когда вы на него не смотрите
- 492 Хотите, что объекты научились думать сами?
- 492 Как объекты узнают, что произошло?
- 493 События
- 494 Один объект инициирует событие, другой реагирует на него
- 495 Обработка события
- 496 Соединим все вместе
- 500 Автоматическое создание обработчиков событий
- 506 Обобщенный EventHandler
- 507 Все формы используют события
- 508 Несколько обработчиков одного события
- 510 Связь между издателями и подписчиками
- 511 Делегат замещает методы
- 512 Делегаты в действии
- 515 Объект может подписаться на событие
- 516 Обратный вызов
- 518 Обратный вызов как способ работы с делегатами
- 525 12. Обзор и предварительные результаты. Знания, сила и построение приложений
- 526 Вы прошли долгий путь
- 527 Вы стали пчеловодом
- 528 Архитектура симулятора улья
- 529 Построение симулятора улья
- 533 Жизнь и смерть цветка
- 534 Класс Bee
- 538 Программисты против бездомных пчел
- 538 Для жизни улья нужен мед
- 542 Построение класса Hive
- 543 Метод Go() для улья
- 544 Все готово для класса World
- 545 Система, основанная на кадрах
- 546 Код для класса World
- 552 Поведение пчел
- 554 Основная форма
- 555 Получение статистики
- 556 Таймеры
- 564 Работа с группами пчел
- 565 Коллекция коллекционирует... ДАННЫЕ
- 567 LINQ упрощает работу с коллекциями и базами данных
- 568 Тестирование (вторая попытка)
- 569 Последние штрихи: Open и Save
- 573 13. Элементы управления и графические фрагменты. Наводим красоту
- 574 Элементы управления как средство взаимодействия с программой
- 575 Элементы управления – это тоже объекты
- 576 Анимируем симулятор улья
- 578 Визуализатор
- 579 Формы для визуализации
- 583 Первый анимированный элемент управления
- 584 Базовый класс PictureBox
- 586 Кнопка добавления элемента BeeControl
- 587 Удаление дочерних элементов управления
- 588 Класс UserControl
- 590 Поместим на форму анимированных пчел
- 592 Формы Hive и Field
- 593 Построение визуализатора
- 596 Соединим основную форму с формами HiveForm и FieldForm
- 600 Проблемы с производительностью
- 602 Объект Graphics
- 603 Объект Bitmap
- 604 Пространство имен System.Drawing
- 605 Знакомство с GDI+
- 606 Рисуем на форме
- 611 Решение проблемы с прозрачностью
- 612 Событие Paint
- 615 Перерисовка форм и элементов управления
- 618 Двойная буферизация
- 624 Вывод на печать
- 625 Окно предварительного просмотра и окно диалога Print
- 631 14. Капитан Великолепный. Смерть объекта
- 638 Метод завершения объекта
- 639 Когда запускает метод завершения объекта
- 640 Явное и неявное высвобождение ресурсов
- 642 Возможные проблемы
- 643 Сериализуем объект в методе Dispose()
- 647 Структура напоминает объект
- 647 ...но объектом не является
- 648 Значения копируются, а ссылки присваиваются
- 649 Структуры – это значимые, а объекты – ссылочные типы
- 651 Сравнение стека и кучи
- 656 Необязательные параметры
- 657 Типы, допускающие значение null
- 658 Типы, допускающие значение null, увеличивают робастность программы
- 661 Что осталось от Великолепного
- 661 Сравнение
- 662 Методы расширения
- 664 Расширяем фундаментальный тип: string
- 669 15. LINQ. Управляем данными
- 670 Простой проект
- 671 ...но сначала нужно собрать данные
- 671 List<StarbuzzData>
- 672 Сбор данных из разных источников
- 673 Коллекции .NET уже настроены под LINQ
- 674 Простой способ сделать запрос
- 675 Сложные запросы
- 678 Универсальность LINQ
- 683 Группировка результатов запроса
- 684 Сгруппируем результаты Джимми
- 687 Предложение join
- 687 List<Comic>
- 687 LINQ Sequence
- 687 List<Purchases>
- 688 Джимми изрядно сэкономил
- 689 LINQ Sequence
- 689 List<StarbuzzData>
- 690 Соединение LINQ с базой данных SQL
- 694 Соединим Starbuzz и Objectville
Инструкция как скачать книгу Э. Стиллмен, Дж. Грин: Изучаем C# в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.