Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Объектно-ориентированное программирование. Учебник для СПО
.pdf
СРЕДНЕЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАНИЕ
А.Н. Маляров
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ
УЧЕБНИК
2-е издание
Саратов
Профобразование
2022

УДК 004.4
ББК 32.97
М21
Маляров, Анатолий Николаевич.
М21
Объектно-ориентированное программирование : учебник для
СПО / А.Н. Маляров ; Самарский государственный технический университет. — 2-е изд. — Саратов : Профобразование, 2022. — 334с. —
(Среднее профессиональное образование).
ISBN 978-5-4488-1561-4
В учебнике изложены основы технологии объектно-ориентированного программирования, описаны современные программные среды для разработки пользовательских приложений. Подробно рассмотрены основные
возможности и элементы объектно-ориентированного языка C#. Издание
включает многочисленные примеры и фрагменты программ.
Учебник предназначен для студентов, обучающихся по укрупненной
группе профессий и специальностей 09.00.00 «Информатика и вычислительная техника», учебными планами которых предусмотрено изучение
дисциплины «Программирование».
ISBN 978-5-4488-1561-4 © Маляров А.Н., 2017
© Самарский государственный
технический университет, 2017
© Оформление. ООО «Профобразование», 2022

СОДЕРЖАНИЕ
ВВЕДЕНИЕ ....................................................................................................6
1. ТЕХНОЛОГИИ И ЯЗЫКИ ПРОГРАММИРОВАНИЯ .......................9
1.1. Этапы создания программныхсистем ...............................................9
1.2. Процедурно-ориентированная
технология программирования .......................................................14
1.3. Объектно-ориентированное программирование ...........................17
1.4. Технология DOTNET...........................................................................21
1.5. Классификация языков программирования ....................................28
2. ПЕРВЫЕ ПРОГРАММЫ НА C# ...........................................................35
2.1. Особенности языка C# .......................................................................35
2.2. Простая программа ............................................................................37
2.3. Интегрированная средаразработки .................................................42
2.4. Запуск программ на C# ......................................................................46
2.5. Комментарии в программе ...............................................................49
2.6. Идентификаторы ...............................................................................51
2.7. Программа с полями и методами .....................................................53
2.8. Возможности консольных методов ..................................................57
3. ПРИНЦИПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО
ПРОГРАММИРОВАНИЯ .........................................................................63
3.1. Классы и объекты ...............................................................................63
3.2. Пространства имен ............................................................................66
3.3. Члены класса ......................................................................................70
3.4. Модификаторы доступа .....................................................................75
3.5. Клиентские отношения .....................................................................79
3.6. Отношения наследования .................................................................80
3.7. Полиморфизм.....................................................................................91
4. СИСТЕМА ТИПОВ ДАННЫХ .............................................................93
4.1. Типы данных в С# ..............................................................................93
4.2. Числовые данные ...............................................................................97
4.3. Класс char ..........................................................................................101
4.4. Класс string .......................................................................................105
4.5. Логический тип данных .................................................................. 109
4.6. Тип DateTime ....................................................................................110
4.7. Константы .........................................................................................111
-3-

4.8. Переменные .....................................................................................115
4.9. Перечисления ...................................................................................117
5. ОПЕРАЦИИ И МЕТОДЫ ....................................................................121
5.1. Присваивание ...................................................................................121
5.2. Арифметические операции.............................................................122
5.3. Логические операции ......................................................................130
5.4. Функции и процедуры .....................................................................132
5.5. Параметры ref, out, params .............................................................. 143
5.6. Конструкторы ...................................................................................148
5.7. Методы-свойства .............................................................................159
5.8. Перегрузка методов .........................................................................165
6. ПРИВЕДЕНИЕ ТИПОВ .......................................................................172
6.1. Неявное приведение типов .............................................................172
6.2. Явное приведение типов .................................................................174
6.3. Работа со строками и символами ...................................................179
6.4. Метод Parse .......................................................................................183
6.5. Форматы представления чисел .......................................................185
7. ПЕРЕХОДЫ И ЦИКЛЫ ....................................................................... 190
7.1. Операторы безусловного перехода.................................................190
7.2. Условная операция ...........................................................................191
7.3. Операторы ветвления ......................................................................193
7.4. Циклы на основе оператора if .........................................................201
7.5. Операторы цикла .............................................................................202
7.6. Рекурсия ...........................................................................................212
8. МАТЕМАТИЧЕСКИЕ ФУНКЦИИ ....................................................214
8.1. Класс Math ........................................................................................214
8.2. Класс Random ...................................................................................224
8.3. Метод обратных преобразований ..................................................232
8.4. Методы генерации Бокса—Мюллера .............................................235
9. КОНТЕЙНЕРЫ .....................................................................................239
9.1. Понятие контейнера ........................................................................239
9.2. Массивы ............................................................................................240
9.3. Методы класса Array ........................................................................ 250
9.4. Класс ArrayList ..................................................................................255
9.5. Словари .............................................................................................259
9.6. Стеки и очереди ...............................................................................263
-4-

9.7. Битовые массивы............................................................................266
9.8. Индексаторы ................................................................................... 266
10. РАЗНОВИДНОСТИ КЛАССОВ .......................................................269
10.1. Статичные классы .........................................................................269
10.2. Абстрактные классы .....................................................................270
10.3. Изолированные классы ................................................................274
10.4. Структуры ......................................................................................275
10.5. Интерфейсы ..................................................................................277
10.6. Стандартные интерфейсы ............................................................283
11. ДЕЛЕГАТЫ И СОБЫТИЯ ................................................................. 285
11.1. Делегаты ........................................................................................285
11.2. Обработка событий .......................................................................294
12. ФАЙЛЫ И КАТАЛОГИ .....................................................................301
12.1. Классы для работы с файлами .....................................................301
12.2. Класс Directory ..............................................................................305
12.3. Файлы с двоичными данными .....................................................308
12.4. Работа с оперативной памятью ...................................................311
12.5. Метод Seek .....................................................................................311
12.6. Сериализация ................................................................................ 312
13. ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХСИТУАЦИЙ .....................314
13.1. Синтаксис исключений ................................................................314
13.2. Стандартные классы .....................................................................316
13.3. Команда throw ...............................................................................319
ЗАКЛЮЧЕНИЕ .........................................................................................321
БИБЛИОГРАФИЧЕСКИЙ СПИСОК ....................................................322
ПРИЛОЖЕНИЯ ........................................................................................323
-5-

ВВЕДЕНИЕ
Компьютерная грамотность — элемент общей культуры в современном технократическом мире, она требуется специалисту любой специальности и любого уровня подготовки. Поэтому изучение основ информатики обязательно для современного человека, так же как освоение грамоты,
навыков счета и управления автомобилем. Одним из элементов компьютерной грамотности является понимание основ программирования.
Языки объектно-ориентированного программирования (далее — ООП)
естественным образом отражают реальность, наполненную классами, объектами, свойствами и событиями. Когда мы говорим: «Котенка зовут Муркой», то в терминах объектного программирования это означает именование объектов из класса котят. А намерение покрасить кухонный стол
в белый цвет есть не что иное, как присваивание свойства (белый цвет)
объекту (стол), который принадлежит определенному классу мебели (столы). Пометка в записной книжке «11.30, ауд. 433/1. Лекция по информатике» — это описание события, требующего при его наступлении выполнения определенных действий (в указанное время занять место в аудитории,
отключить сотовый телефон, подготовить тетрадь и т.д.).
Объектный подход отражает современную тенденцию в развитии
технологии программирования, он позволяет создавать очень большие
и сложные программные системы. А разработанные для этого специальные визуальные среды программирования существенно сокращают время создания программ.
Именно по пути использования объектного подхода стали развиваться
универсальные алгоритмические языки, созданные как процедурно-ориентированные. Один из самых ярких и современных их представителей — это
язык C# (читается как «си шарп»), специально созданный для использования в среде Microsoft .NET Framework. Поэтому в этой книге для иллюстрации
технологии ООП рассмотрены примеры программ на этом языке.
Читатель этой книги не обязательно станет профессиональным программистом. Но даже если он посвятит себя другой области деятельности, основы программирования знать необходимо. Нужно понимать, как
работают прикладные программы, как их квалифицированно применять.
Возможно, что будущему специалисту — нефтянику, электрику, теплотехнику или химику — также придется участвовать в разработке и внедрении
прикладных программ.
Книга полезна для первого знакомства с ООП. Это не справочник,
поэтому описание ни одного из классов или членов класса C# здесь нельзя
назвать полным или достаточным для профессиональной работы.
-6-

Цель книги иная — показать особенности объектного программирования и некоторые возможности его реализации на языке C# на простых
примерах. Книга представляет собой ознакомительную экскурсию для
всех, кто желает понять, с чем сопряжена работа по созданию пользовательских программных приложений, кто желает говорить на одном языке
с разработчиками программного обеспечения (ПО).
Для будущих программистов эта книга также окажется полезной
на начальных этапах освоения объектного программирования. Для более глубокого изучения темы существуют прекрасные книги, небольшая
часть из которых указана в библиографическом списке, к которому автор
отсылает заинтересованного читателя.
Для создания программ (написания кода, компиляции и отладки)
на C# необходима среда разработки. Обычный подход для программирования на C# — это использование Microsoft Visual C# .NET Standard Edition
(требует 2 Гб дискового пространства) или любой версии Microsoft Visual
Studio .NET Professional Edition (требует 4,2 Гб дискового пространства). Ею
может служить среда разработки Visual С# Express Edition, которую можно
скачать с сайта компании Мiсrоsоft (www.microsoft.com/express/ru).
Программы также можно писать в простом текстовом редакторе (например, в Notepad), а затем их компилировать при помощи компилятора C# в составе бесплатного пакета .NET Framework (он входит в поставку
современных операционных систем (далее — ОС) Windows).
На самом начальном этапе освоения программирования писать код
вручную — это, возможно, лучший вариант. Он существенно более трудоемок, чем использование шаблонов и готовых программ, услужливо
предоставляемых средой программирования, но именно такой подход
позволяет лучше понять основы. Более того, без ручного написания и исправления программ не может обойтись ни один программист.
Каждый раздел этой книги дополняется вопросами для самопроверки. Усвоение знаний и тем более выработка навыков программирования
невозможны без практического применения компьютера. Поэтому большинство разделов содержат также упражнения, требующие написания
и прогона программ в домашних условиях или в компьютерном классе.
Студенту в индивидуальных заданиях необходимо вместо N подставить
номер своего варианта, выданного преподавателем. Кроме того, в некоторых задачах необходимо использовать файлы с исходными данными,
путь к которым указывается преподавателем.
Тема программирования на универсальном языке довольно сложна.
Практически невозможно построить изложение так, чтобы каждое понятие рассматривать последовательно и независимо от других, еще не рас-
-7-

смотренных ранее понятий. Многие термины необходимо использовать
с самого начала. По мнению автора, специфика и разносторонний характер предмета освоения требуют многократного повторения основных понятий, а уровень сложности материала при изложении должен зависеть
от уже освоенного материала. В связи с этим неизбежен и методически
обоснован повтор материала. Поэтому фундаментальные понятия в книге рассматриваются многократно с разным уровнем детализации применительно к конкретным условиям использования языка.
Несколько слов об особенностях оформления программного кода.
Квадратные скобки в синтаксических конструкциях языка показывают,
что содержащееся в них может быть опущено. Многоточие во фрагментах
программного кода используется для обозначения пропущенных строк.
Полужирный шрифт для ключевых слов и специальных идентификаторов
языка применяется в программах только с целью улучшения восприятия кода читателем. Списки таких слов и идентификаторов представлены
в приложении. Кроме того, специфика предметной области потребовала
также включить в качестве приложения основные используемые англоязычные сокращения, которые часто встречаются в литературе по программированию.
В силу ограниченности длины строки в книжном формате программный код и комментарии могут быть перенесены на следующую строку без
оформления переноса. Предполагается, что такой код вводится в редакторе в одну строку.
В книге в большей степени уделено внимание вычислительным аспектам и задачам расчетного характера в различных областях техники.
-8-

1.ТЕХНОЛОГИИИЯЗЫКИ
ПРОГРАММИРОВАНИЯ
1.1.ЭТАПЫСОЗДАНИЯ
ПРОГРАММНЫХСИСТЕМ
Для разработки программных изделий профессионального уровня недостаточно знать только язык программирования. Их создатели
должны владеть технологией производства и сопровождения программ
на всех этапах их жизненного цикла — от постановки задачи до поддержки программ в период использования изделия. При этом необходимо
уметь планировать проектные работы и управлять коллективом разработчиков, а также грамотно оформлять результаты своего труда. Создание программных продуктов должно основываться на системном подходе, предусматривающем всестороннее исследование сложного объекта.
Рассмотрим этапы создания программных систем. Они заимствованы из техники, т.е. отражают технологический подход к созданию инженерных изделий.
1. Этап постановки задачи и обследования объекта автоматиза-
ции. Это начальный этап, на котором определяется цель (цели) создания
системы и выявляется, что система должна делать в понимании заказчика и конечного пользователя. Определяется категория будущих конечных
пользователей, влияющих на требования и особенности работы системы.
Выясняются представления о системе ее конечных пользователей, требования к ней, приоритеты. Уточняется трактовка понятий, условий работы
с системой. На этом этапе создаются словари понятий для того, чтобы конечные пользователи и разработчики говорили на одном языке и понимали, что означают специальные термины.
На данном этапе производится обследование объекта автоматизации. Описывается входная и выходная информация, отчетные формы и формы запросов, форматы импорта и экспорта данных, необхо-
-9-

димость архивирования. Рассматриваются требования к обеспечению
безопасности системы и данных.
Не всегда заказчик представляет, что должна делать система,
и не всегда разработчик способен понятно сформулировать и донести
до заказчика технические особенности работы системы. Практически
требования, предложения и пожелания заказчика по усовершенствованию часто добавляются на последующих этапах, что впоследствии ведет
к необходимости изменений и доработок в программе. Вполне возможно, что глобальные и многочисленные изменения разработанных структур программы сделать уже будет невозможно. Такую ситуацию нужно
исключить. Поэтому необходима совместная и тесная работа заказчика
и разработчика, в результате которой становится совершенно ясно, какой
должна быть система и каковы границы проекта. Эти границы не должны
в дальнейшем нарушаться.
Нельзя, ориентируясь на разумное и профессиональное поведение
будущих пользователей, исключать «худшие случаи». Следует считать, что
в процессе эксплуатации пользователи будут делать любые ошибки, в том
числе случайные, обусловленные недостаточным профессионализмом,
непониманием работы системы, и даже преднамеренные.
2. Этап определения функциональной специфики задачи. На этом
этапе производится анализ существующих аналогов, разрабатывается
математическая модель и структуры данных. Он включает обзор системы,
описание ее фрагментов, функциональных объектов, модулей и экранные формы. Функциональное описание программного изделия составляется от общего к частному. Оно должно быть кратким, понятным, однозначно понимаемым пользователем. Результатом выполнения этого этапа
является функциональная спецификация.
3. Этап технического проектирования. Он выполняется перед
программированием. Техническое проектирование состоит в создании
методов для удовлетворения всех требований, указанных в функциональной спецификации. Определяется набор возможных вариантов реализации, диаграмма компонент программы (подсистем или исполняемых
файлов) и связи между ними. Указываются структуры всех файлов проекта, библиотек, документов и другой связанной с проектом информации.
Определяются имена используемых переменных и подпрограмм, подсистем, их взаимосвязи. Выделяют два типа компонент: исполняемые файлы и библиотеки кода. Определяется диаграмма классов. Результатом выполнения этого этапа является техническая спецификация.
4. Этап реализации. Реализация заключается в непосредственном
кодировании на выбранном языке программирования в соответствии
-10-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
