Принципы объектно-ориентированного программирования
Принципы объектно-ориентированного программирования
ГЛАВА 1 Принципы объектно-ориентированного программирования
Любая сущность — объект
Не объектно-ориентированный подход
Объектно-ориентированный подход
Примечание
Объекты и классы
Реализация
Три основных принципа языков объективно-ориентированного программирования
Инкапсуляция
Абстрагирование
Примечание
О пользе абстрагирования
Наследование
Примечание
Что такое "правильное" наследование
Полиморфизм
Подведем итоги
Введение в Microsoft .NET
ГЛАВА 2 Введение в Microsoft .NET
Платформа Microsoft .NET
.NET Framework
Windows DMA и. NET
Common Language Runtime
Библиотеки классов .NET Framework
ПРИМЕЧАНИЕ
Microsoft Intermediate Language и компиляторы JITter
Генератор кода при установке (Install-time code generation)
EconoJIT
Унифицированная система типов
Метаданные и отражение
Безопасность
Развертывание
Взаимодействие с неуправляемым кодом
Управляемый код, вызывающий функции неуправляемых DLL
Управляемый код, использующий компоненты СОМ
Неуправляемый код, использующий .NET-службы
Подведем итоги
Hello, C#
ГЛАВА 3 Hello, C#
Ваше первое приложение на С#
Выбор редактора
Notepad
Visual Studio 6
Подсветка синтаксиса в Visual Studio 6 позволяет воочию убедиться в правильности набора ключевого слова.
Visual Studio.NET
Прочие редакторы
Чем я пользовался в этой книге
"Hello, World"
Запуск компилятора из командной строки
Результат успешной компиляции HelloWorld.cs.
Запуск приложения
HelloWorld.
Экскурсия по коду
Универсальное программирование
Классы и члены
Метод Main
Примечание
Метод System.Console.WriteLine
Пространства имен и директива using
"Скелет" программы
Что-то пошло не так!
Ошибки периода компиляции
Код ошибки, выданный С#-компилятором, поможет вам найти ее описание в оперативной справочной системе.
Глубокое погружение с помощью ILDASM
"Hello, World" в MSIL
ildasm
ILDASM позволяет вам погрузиться в дебри декларации и IL-кодов, из которых состоит ваше приложение.
Значки, которыми обозначаются в ILDASM разные части .NET-приложения.
Чтобы увидеть MSIL-код метода, откройте двоичный файл в ILDASM и дважды щелкните этот метод.
Примечание
Основы программирования на С#
Когда нужны собственные пространства имен
Рекомендации по изобретению имен
Стандарты соглашения по назначению имен
Венгерская нотация
Примечание
Стили "Паскаль" и "верблюд"
Примечание
Пространства имен
Классы
Методы
Аргументы метода
Интерфейсы
Члены класса
Подведем итоги
Система типов
ГЛАВА 4 Система типов
Любая сущность — объект
Размерные и ссылочные типы
Размерные типы
Ссылочные типы
Упаковка и распаковка
Корень всех типов: System.Object
Открытые методы типа System.Object
Защищенные методы типа System.Object
Типы и псевдонимы
Типы, определенные в CTS, и их псевдонимы
Приведение типов
Пространства имен
Примечание
Ключевое слово using
Преимущества использования CTS
Возможность взаимодействия языков
Иерархия объектов с единым корнем
Безопасность типов
Подведем итоги
Классы
ГЛАВА 5 Классы
Определение классов
Члены класса
Поле.
Метод.
Свойства.
Константы.
Индексаторы.
События.
Операторы.
Модификаторы доступа
Модификаторы доступа в С#.
Метод Main
Аргументы командной строки
Примечание
Возвращаемые значения
Несколько методов Main
Конструкторы
Статические члены и члены экземпляров
Инициализаторы конструкторов
Примечание
Константы и неизменяемые поля
Константы
Неизменяемые поля
Очистка объектов и управление ресурсами
Немного истории
Детерминированное завершение
Память.
Описатели окон.
Соединения с базой данных.
Файлы.
Сбор мусора с помощью счетчика ссылок
Сбор мусора с помощью трассировки
Производительность
Совершенное решение
Почти совершенное решение
Объединение
Приведение
Интерфейсы
Использование метода Dispose
Наследование
Использование нескольких интерфейсов
Изолированные классы
Подведем итоги
Методы
ГЛАВА 6 Методы
Параметры ref и out
Перегрузка методов
Переменное число параметров метода
Виртуальные методы
Подмена методов
Полиморфизм
Примечание
Статические методы
Набор остальных обычных членов
Доступ к членам класса
Подведем итоги
Свойства, массивы и индексаторы
ГЛАВА 7 Свойства, массивы и индексаторы
Свойства как "умные" поля
Определение и использование свойств
Чем занимается компилятор на самом деле
ОШИБКА - компилироваться не будет
Сверить почтовый индекс с базой данных.
Обновить город на основе проверенного zipCode
Конец метода Address
Неизменяемые свойства
Наследование свойств
Дополнительные возможности использования свойств.
Массивы
Объявление массивов
Этот синтаксис отличен от C++
Пример одномерного массива
Многомерные массивы
Запрос ранга массива
Невыровненные массивы
Работа с объектами как с массивами с помощью индексаторов
Определение индексаторов
Пример индексатора
Правила разработки
Подведем итоги
Атрибуты
ГЛАВА 8 Атрибуты
Что такое атрибуты
Определение атрибутов
HKEY_CURRENT_CONFIG }
Примечание
Запрос атрибутов
Атрибуты класса
Атрибуты метода
Атрибуты поля
Параметры атрибута
Позиционные и именованные параметры
Распространенные ошибки при использовании именованных параметров
Допустимые типы параметров атрибутов
Атрибут AttributeUsage
Определение целевого типа атрибута
Атрибуты однократного и многократного использования
Задание правил наследования атрибутов
Идентификаторы атрибутов
Подведем итоги
Интерфейсы
ГЛАВА 9 Интерфейсы
Примечание
Применение интерфейсов
Примечание
Объявление интерфейсов
Реализация интерфейсов
Запрос о реализации интерфейса с помощью is
Запрос о реализации интерфейса с помощью as
Явная квалификация имени члена интерфейса
Сокрытие имени с помощью интерфейсов
Теперь этот пример выдаст следующее
ОШИБКА: эта строка не будет компилироваться
Это правильно, так как объект был сначала приведен
Избежание неоднозначности имен
Интерфейсы и наследование
Комбинирование интерфейсов
Подведем итоги
Выражения и операторы
ГЛАВА 10 Выражения и операторы
Операторы
Старшинство операторов
Как старшинство определяется в С#
Старшинство операторов в С#
Левая и правая ассоциативность
Практическое применение
Операторы С#
Простые операторы
Отражение
Оператор sizeof
checked и unchecked
Математические операторы
Унарные операторы
Составные операторы присваивания
Операторы инкремента и декремента
Операторы отношения
Операторы сравнения
Если вы программируете на Java
Простые операторы присваивания
Подведем итоги
Управление ходом программы
ГЛАВА 11 Управление ходом программы
Операторы выбора
Оператор if
Несколько конструкций else
Как if выполняется в С#
Оператор switch
Объединение case-меток
Оператор switch без передачи управления вниз
Итерационные операторы
Оператор while
Оператор do/while
Оператор for
Вложенные циклы
Использование запятой
Оператор foreach
Ветвления с помощью операторов перехода
Оператор break
Выход из бесконечного цикла
Оператор continue
Печально известный оператор goto
Оператор goto: (очень) краткая история
Применение оператора goto
Оператор return
Подведем итоги
Обработка ошибок с помощью исключений
ГЛАВА 12 Обработка ошибок с помощью исключений
Обзор обработки исключений
Основной синтаксис обработки исключений
Передача исключения
Улавливание исключения
Повторная передача исключения
Освобождение ресурсов с помощью finally
Сравнение методов обработки ошибок
Преимущества обработки исключений над применением кодов возврата
Обработка ошибок в правильном контексте
Улучшение читабельности кода
Передача исключений из конструкторов
Класс System. Exception
Конструирование объекта Exception
Свойство StackTrace
Улавливание множества типов исключений
Получение собственных классов Exception
Разработка собственного кода с обработкой исключений
Проблемы создания блоков try
Проблемы создания блоков catch
Подведем итоги
Перегрузка операторов и нестандартные преобразования
ГЛАВА 13 Перегрузка операторов и нестандартные преобразования
Перегрузка операторов
Синтаксис и пример
Перегружаемые операторы
Примечание
Ограничения на перегрузку операторов
Правила разработки
Нестандартные преобразования
Синтаксис и пример
Подведем итоги
Делегаты и обработчики событий
ГЛАВА 14 Делегаты и обработчики событий
Использование делегатов в качестве методов обратного вызова
Асинхронная обработка
Введение дополнительного кода в код класса
Определение делегатов в качестве статических членов
Примечание
Создавайте делегаты только при необходимости
Составные делегаты
Определение событий с помощью делегатов
Подведем итоги
Программирование многопоточности
ГЛАВА 15 Программирование многопоточности
Основы организации потоков
Потоки и многозадачность
Переключение контекста
Многопоточное приложение на С#
Работа с потоками
AppDomain
Класс Thread
Создание потоков и объектов Thread
Управление временем существования потоков
Уничтожение потоков
Планирование потоков
Примечание
Безопасность и синхронизация потоков
Защита кода с помощью класса Monitor
Применение блокировок монитора с оператором С# lock
Синхронизация кода с помощью класса Mutex
Безопасность потоков и классы .NET
Правила использования потоков
Когда использовать потоки
Повышенный параллелизм
Упрощенная структура
Лучшее использование процессорного времени
Когда лучше обойтись без потоков
Затраты больше выгод
Производительность для обоих случаев невозможно сравнить
Нет веской причины
Подведем итоги
Получение метаданных с помощью отражения
ГЛАВА 16 Получение метаданных с помощью отражения
Иерархия API отражения
Часть иерархии классов .NET System.Reflection.
Класс Type
Получение информации о типе экземпляра
Получение информации о типе из имени
Опрос типов
Работа со сборками и модулями
Просмотр типов сборки
Примечание
Вывод списка модулей сборки
Позднее связывание и отражение
Создание и исполнение кода в период выполнения
Подведем итоги
Взаимодействие с неуправляемым кодом
ГЛАВА 17 Взаимодействие с неуправляемым кодом
Platform Invocation Services
небезопасный код (unsafe code)
взаимодействие с COM (COM interoperability)
Platform Invocation Services
Примечание
Объявление экспортированной функции DLL
Использование функций обратного вызова на С#
Преобразование и Plnvoke
Написание небезопасного кода
Использование указателей в С#
Операторы для работы с указателями C/C++.
Оператор fixed
Примечание
Взаимодействие с СОМ
О, дивный новый мир!
Приступим к делу
Генерация метаданных из библиотеки типов СОМ
ILDASM - замечательный инструмент просмотра метаданных и MSIL управляемых сборок.
Раннее связывание с компонентами СОМ
Использование динамического определения типов для выбора интерфейсов СОМ
Позднее связывание с компонентами COM
Модели потоков в COM
Подведем итоги
Работа со сборками
ГЛАВА 18 Работа со сборками
Обзор сборок
Данные в декларации
Преимущества сборок
Упаковка сборки
Развертывание сборки
Управление версиями сборки
Создание сборок
Создание сборок из нескольких модулей
Совместно используемые сборки
Работа с глобальным кэшем сборок
Просмотр кэша
Примечание
Управление версиями сборок
QFE и политика управления версиями по умолчанию
Создание файла конфигурации для безопасного режима
Help для CorelDRAW Х3
перейти
Содержание