Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
umm_3690.pdf
Скачиваний:
24
Добавлен:
30.04.2015
Размер:
364.53 Кб
Скачать

Федеральное агентство железнодорожного транспорта Уральский государственный университет путей сообщения

Кафедра «Информационные технологии и защита информации»

А. В. Кибардин

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++

Часть 2 Основы объектно-ориентированного программирования

Екатеринбург Издательство УрГУПС

2012

Федеральное агентство железнодорожного транспорта Уральский государственный университет путей сообщения

Кафедра «Информационные технологии и защита информации»

А. В. Кибардин

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++ В трех частях

Часть 2 Основы объектно-ориентированного программирования

Учебно-методическое пособие для студентов направления 221000 – Мехатроника и робототехника профилей подготовки «Проектирование и конструирование

мехатронных модулей и механизмов роботов» и «Мехатронные системы в автоматизированном производстве»

Екатеринбург Издательство УрГУПС

2012

УДК 004.43 (075.8) К38

Кибардин, А. В.

К38 Программирование на языке С++. В 3 ч. Ч. 2 Основы объектноориентированного программирования : учеб.-метод. пособие /А. В. Кибардин. – Екатеринбург : Изд-во УрГУПС, 2012. – 75[1] c.

Пособие предназначено для изучения основ программирования на алгоритмическом языке С++.

Ориентировано на студентов специальности220401 – «Мехатроника», а также на студентов, аспирантов, слушателей ФПК и подготовительного отделения, обучающихся основам современных информационных технологий.

УДК 004.43 (075.8)

Печатается по решению редакционно-издательского совета университета

Автор: А. В. Кибардин, доцент кафедры «Информационные технологии и защита информации», канд. физ.-мат. наук, УрГУПС

Рецензенты: Г. Б. Смирнов, профессор кафедры «Вычислительная техника», д-р техн. наук, УрФУ им. первого Президента России Б. Н. Ельцина

В. И. Радченко, профессор кафедры «Информационные технологии и защита информации», д-р физ.-мат. наук, УрГУПС

©Уральский государственный университет путей сообщения (УрГУПС), 2012

ОГЛАВЛЕНИЕ

 

ВВЕДЕНИЕ................................................................................................................................

5

КЛАССЫ ....................................................................................................................................

6

Описание класса ..............................................................................................................

6

Описание объектов .........................................................................................................

7

Указатель this....................................................................................................................

8

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

9

Конструктор копирования ..........................................................................................

12

Конструктор копирования для класса monstr: ......................................................

12

Статические элементы класса....................................................................................

13

Статические поля...........................................................................................................

13

Статические методы .....................................................................................................

13

Дружественные функции и классы ..........................................................................

14

Дружественные функции ......................................................................

14

Дружественный класс ...........................................................................

15

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

16

Перегрузка унарных операций .............................................................

17

Перегрузка бинарных операций ...........................................................

18

Перегрузка операции присваивания ....................................................

19

Перегрузка операции приведения типа ................................................

20

НАСЛЕДОВАНИЕ ................................................................................................................

21

Ключи доступа ...............................................................................................................

21

Простое наследование..................................................................................................

21

Правила наследования методов ................................................................................

25

Виртуальные методы и механизм позднего связывания ...................................

26

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

27

ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ ...................................................

28

Синтаксис исключений................................................................................................

28

Перехват исключений ..................................................................................................

29

Список исключений......................................................................................................

31

Иерархии исключений .................................................................................................

32

СТАНДАРТНАЯ БИБЛИОТЕКА .....................................................................................

33

ПОТОКОВЫЕ КЛАССЫ.....................................................................................................

33

Стандартные потоки .....................................................................................................

34

Форматирование данных.............................................................................................

35

Флаги и форматирующие методы ........................................................

35

Манипуляторы.......................................................................................

37

Методы обмена с потоком..........................................................................................

38

3

Ошибки потоков ............................................................................................................

42

Файловые потоки...........................................................................................................

44

Строковые потоки .........................................................................................................

46

СТРОКИ....................................................................................................................................

48

Конструкторы и присваивание строк ......................................................................

48

Операции..........................................................................................................................

49

Функции ...........................................................................................................................

49

Присваивание и добавление частей строк ...........................................

49

Преобразование строк ...........................................................................

50

Поиск подстрок .....................................................................................

51

Сравнение частей строк ........................................................................

52

Получение характеристик строк ..........................................................

52

КОНТЕЙНЕРНЫЕ КЛАССЫ.............................................................................................

53

Последовательные контейнеры.................................................................................

55

Векторы .................................................................................................

55

Двусторонние очереди ..........................................................................

59

Списки ...................................................................................................

60

Ассоциативные контейнеры.......................................................................................

65

Словари..................................................................................................

65

Словари с дубликатами (multimap) ......................................................

70

ПРИЛОЖЕНИЕ 1. ШАБЛОНЫ ФУНКЦИЙ .................................................................

71

ПРИЛОЖЕНИЕ 2. ШАБЛОНЫ КЛАССОВ ..................................................................

74

4

ВВЕДЕНИЕ

В С/С++ вводится понятие класса– тип данных, объединяющий структуры данных и обрабатывающие их функции. Конкретные величины типа данных «класс» называются экземплярами класса или объектами.

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

(ООП) являются инкапсуляция, наследование и полиморфизм.

Инкапсуляция – это объединение в единое целое данных и процедур(алгоритмов) обработки данных. В рамках ООП данные называются полями объекта, а алгоритмы их обработки (процедуры) – методами объекта. Инкапсуляция позволяет в максимальной степени изолировать объект от«внешнего» окружения, т. е. остальной программы, так как локализованные в объектах алгоритмы обмениваются с программой сравнительно небольшими объемами данных. В результате замена или модификация алгоритмов и данных, инкапсулированных в объект, как правило, не ведет за собой плохо прослеживаемых последствий для программы в целом. Другим немаловажным следствием инкапсуляции является возможность переноса объектов из одной программы в другую.

Наследование есть свойство объектов порождать своих потомков. Объ- ект-потомок автоматически наследует от своего родителя все поля и методы, может дополнять объекты новыми полями и перегружать (перекрывать) методы родителя или дополнять их. Принцип наследования решает проблему модификации свойств и придает ООП исключительную гибкость. При работе с объектами программист обычно подбирает объект, наиболее подходящий по своим свойствам для решения данной задачи, и создает одного или нескольких потомков от него, которые «умеют» делать то, что не реализовано в их родителе.

Полиморфизм – это свойство родственных объектов, т. е. объектов, имеющих одного общего предка-родителя, решать схожие по смыслу проблемы разными способами. В рамках ООП возможности (свойства) объекта определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках объекта-родителя, программист может придавать потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть (перегрузить) его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объек- те-родителе и объекте-потомке будут действовать два одноименных метода, имеющих разные алгоритмы ,иследовательно, придающих объектам разные свойства.

5

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]