Сайты ТУСУРа

Объектно-ориентированное программирование

Учебное пособие

Целью учебного пособия является обучение студентов основам объектно-ориентированного проектирования и программирования в современных средах разработки ПО. Основой задачей изучения курса является получение знаний и практических навыков в области проектирования и разработки объектно-ориентированных программ. В результате изучения курса студент должен иметь представление о предпосылках возникновения ООП и его месте в эволюции парадигм программирования, знать принципы объектно-ориентированного проектирования и программирования, а также уметь разрабатывать объектно-ориентированные программы на языках C++, C++ CLI и C# с применением библиотек классов STL и .NET.

Кафедра автоматизированных систем управления

Библиографическая запись:

Романенко, В. В. Объектно-ориентированное программирование: Учебное пособие [Электронный ресурс] / В. В. Романенко. — Томск: ТУСУР, 2016. — 475 с. — Режим доступа: https://edu.tusur.ru/publications/6300
Год издания: 2016
Количество страниц: 475
Скачиваний: 449

Оглавление (содержание)

Глава 1. Введение 6

Глава 2. Введение в технологию .NET 8

§ 2.1. Принципы объектно-ориентированного программирования 8

2.1.1. Понятие объекта и класса 8

2.1.2. Три основных принципа ООП 13

§ 2.2. Технология Microsoft .NET 22

2.2.1. Платформа Microsoft .NET 22

2.2.2. Common Language Runtime 23

2.2.3. Библиотеки классов .NET Framework 24

2.2.4. Microsoft Intermediate Language и компиляторы JITter 26

2.2.5. Унифицированная система типов 28

2.2.6. Преимущества .NET 33

§ 2.3. Hello, World! 36

2.3.1. Выбор среды разработки 36

2.3.2. Создание программы 39

2.3.3. Компиляция 46

2.3.4. Выполнение 49

2.3.5. Анализ исходного кода 51

2.3.6. Анализ кода MSIL 54

2.3.7. Файлы с примерами 58

§ 2.4. Среда разработки 60

2.4.1. Организация проекта 60

2.4.2. Редактор кода 62

2.4.3. Встроенный отладчик 65

Глава 3. Основы языка C# 73

§ 3.1. Типы данных. Идентификаторы 78

3.1.1. Базовый класс System.Object 78

3.1.2. Типы данных по значению 81

3.1.3. Типы данных по ссылке 109

3.1.4. Анонимные типы 123

3.1.5. Упаковка 125

3.1.6. Переменные и идентификаторы 126

§ 3.2. Форматирование. Консольный ввод и вывод 132

3.2.1. Методы Format и ToString 132

3.2.2. Вывод на консоль 157

3.2.3. Методы Parse и TryParse 159

3.2.4. Ввод с консоли 166

§ 3.3. Вычисление выражений 170

3.3.1. Набор операторов языка C# 170

3.3.2. Приоритет и порядок выполнения 171

3.3.3. Описание операторов 173

3.3.4. Операции со строками 186

3.3.5. Операции с перечислениями 187

3.3.6. Операции с типом DateTime 188

3.3.7. Математические вычисления 189

§ 3.4. Операторы языка 193

3.4.1. Основные понятия 193

3.4.2. Операторы ветвления 195

3.4.3. Операторы цикла 201

3.4.4. Операторы перехода 205

3.4.5. Работа с исключительными ситуациями 209

§ 3.5. Файловый ввод и вывод 219

3.5.1. Перечень основных классов файлового ввода-вывода 219

3.5.2. Потоковый ввод и вывод 219

3.5.3. Управление ресурсами потока 222

3.5.4. Сохранение и загрузка состояния приложения 223

§ 3.6. Директивы препроцессора 234

3.6.1. Директивы объявлений 234

3.6.2. Директивы условной компиляции 235

3.6.3. Директивы диагностики 237

3.6.4. Директивы регионов 238

3.6.5. Директивы дополнительных опций 239

Глава 4. Классы и интерфейсы 242

§ 4.1. Пространства имен 242

4.1.1. Описание пространства имен 243

4.1.2. Директивы использования 245

4.1.3. Ссылки на сборки 248

§ 4.2. Описание класса 254

4.2.1. Модификаторы класса 254

4.2.2. Члены класса 257

4.2.3. Статические члены и члены экземпляров 260

4.2.4. Создание и удаление экземпляров класса 263

4.2.5. Вложенные типы 265

§ 4.3. Описание полей класса 266

4.3.1. Константы 266

4.3.2. Поля 266

§ 4.4. Описание методов класса 270

4.4.1. Синтаксис описания методов 270

4.4.2. Конструкторы 276

4.4.3. Деструкторы 280

4.4.4. Метод Main 280

§ 4.5. Свойства. Индексаторы 282

4.5.1. Определение и использование свойств 282

4.5.2. Индексаторы 288

§ 4.6. Наследование 291

4.6.1. Свойства наследования 291

4.6.2. Доступ к членам при наследовании 293

4.6.3. Абстрактные классы 296

4.6.4. Изолированные классы 297

§ 4.7. Перегрузка и полиморфизм 299

4.7.1. Статический полиморфизм 299

4.7.2. Виртуальный полиморфизм 300

4.7.3. Перегрузка операторов 305

§ 4.8. Делегаты и события 315

4.8.1. Предыстория вопроса 315

4.8.2. Методы обратного вызова 319

4.8.3. Определение событий с помощью делегатов 324

§ 4.9. Интерфейсы 328

4.9.1. Объявление интерфейсов 328

4.9.2. Реализация интерфейсов 329

4.9.3. Интерфейсы и наследование 334

4.9.4. Примеры использования интерфейсов 337

Глава 5. Специальные возможности 347

§ 5.1. Универсальные типы 347

5.1.1. Параметры типа 347

5.1.2. Ограничения параметров типа 355

5.1.3. Стандартные универсальные типы 359

§ 5.2. Потоки 360

5.2.1. Основы организации потоков 360

5.2.2. Работа с потоками 363

5.2.3. Безопасность и синхронизация потоков 378

§ 5.3. Метаданные и отражение 387

5.3.1. Иерархия API отражения 387

5.3.2. Работа со сборками и модулями 391

5.3.3. Позднее связывание и отражение 394

5.3.4. Создание и исполнение кода в период выполнения 398

§ 5.4. Атрибуты 401

5.4.1. Синтаксис описания атрибутов 401

5.4.2. Определение и запрос атрибутов 404

5.4.3. Атрибут AttributeUsage 408

5.4.4. Стандартные классы атрибутов 412

§ 5.5. Неуправляемый код 415

5.5.1. Службы Platform Invocation Services 415

5.5.2. Написание небезопасного кода 420

§ 5.6. Комментарии и документирование кода 428

5.6.1. Комментирование кода 428

5.6.2. XML-документирование кода C# 430

Заключение 441

Список литературы 442

Приложения 443

Приложение А. Объекты для работы с датой и временем 443

Приложение Б. Объекты для работы со строками 448

Приложение В. Объекты для работы с массивами 455

Приложение Г. Объекты форматирования 459

Приложение Д. Объекты файлового ввода-вывода 466