Лабораторные работы по программированию
ЛАБОРАТОРНЫЕ РАБОТЫ
по курсу
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
МАИ 2015
Содержание
Содержание…………………………………………………………………………………… 2
Введение………………………………………………………………………………………. 4
Отчетность………………………………………………………………………………………………………….. 4
Cреда разработки………………………………………………………………………………………………… 4
Методика сдачи лабораторных работ……………………………………………………………………… 4
Варианты лабораторных работ………………………………………………………….. 4
Варианты задания (структуры данных)……………………………………………………………………. 4
Варианты задания (фигуры)…………………………………………………………………………………… 5
Задания лабораторных работ……………………………………………………………. 6
Лабораторная работа №1……………………………………………………………………………………… 6
Цель работы……………………………………………………………………………………………………. 6
Задание…………………………………………………………………………………………………………… 6
Полезный пример……………………………………………………………………………………………… 6
Листинг файла Triangle. h…………………………………………………………………………………………………………. 6
Листинг файла Triangle. cpp……………………………………………………………………………………………………… 7
Листинг файла main. cpp………………………………………………………………………………………………………….. 8
Лабораторная работа №2……………………………………………………………………………………… 8
Цель работы……………………………………………………………………………………………………. 8
Задание…………………………………………………………………………………………………………… 9
Полезный пример……………………………………………………………………………………………… 9
Листинг Файла TStack. h…………………………………………………………………………………………………………… 9
Листинг Файла TStack. cpp……………………………………………………………………………………………………… 10
Листинг Файла TStackItem. h………………………………………………………………………………………………….. 10
Листинг Файла TStackItem. cpp………………………………………………………………………………………………. 11
Листинг Файла Triangle. h……………………………………………………………………………………………………….. 11
Листинг Файла Triangle. cpp……………………………………………………………………………………………………. 12
Лабораторная работа №3……………………………………………………………………………………. 13
Цель работы………………………………………………………………………………………………….. 13
Задание…………………………………………………………………………………………………………. 13
Полезный пример……………………………………………………………………………………………. 14
Лабораторная работа №4……………………………………………………………………………………. 17
Цель работы………………………………………………………………………………………………….. 17
Задание…………………………………………………………………………………………………………. 18
Полезный пример……………………………………………………………………………………………. 18
Лабораторная работа №5……………………………………………………………………………………. 22
Цель работы………………………………………………………………………………………………….. 22
Задание…………………………………………………………………………………………………………. 22
Полезный пример……………………………………………………………………………………………. 23
Лабораторная работа №6……………………………………………………………………………………. 28
Цель работы………………………………………………………………………………………………….. 28
Задание…………………………………………………………………………………………………………. 28
Полезный пример……………………………………………………………………………………………. 28
Лабораторная работа №7……………………………………………………………………………………. 36
Цель работы………………………………………………………………………………………………….. 36
Задание…………………………………………………………………………………………………………. 36
Полезный пример……………………………………………………………………………………………. 37
Лабораторная работа №8……………………………………………………………………………………. 48
Цель работы………………………………………………………………………………………………….. 48
Задание…………………………………………………………………………………………………………. 48
Полезный пример……………………………………………………………………………………………. 48
Лабораторная работа №8……………………………………………………………………………………. 56
Цель работы………………………………………………………………………………………………….. 56
Задание…………………………………………………………………………………………………………. 56
Полезный пример……………………………………………………………………………………………. 57
Введение
Практическая часть курса Объектно-ориентированное программирования состоит из 9 лабораторных работ на языке C++ (с поддержкой стандарта C++11):
№ |
Цель |
1 |
· Изучение базовых понятий ООП. · Знакомство с классами в C++. · Знакомство с перегрузкой операторов. · Знакомство с дружественными функциями. · Знакомство с операциями ввода-вывода из стандартных библиотек. |
2 |
· Закрепление навыков работы с классами. · Создание простых динамических структур данных. · Работа с объектами, передаваемыми «по значению». |
3 |
· Закрепление навыков работы с классами. · Знакомство с умными указателями. |
4 |
· Знакомство с шаблонами классов. · Построение шаблонов динамических структур данных. |
5 |
· Закрепление навыков работы с шаблонами классов. · Построение итераторов для динамических структур данных. |
6 |
· Закрепление навыков по работе с памятью в C++. · Создание аллокаторов памяти для динамических структур данных. |
7 |
· Создание сложных динамических структур данных. · Закрепление принципа OCP. |
8 |
· Знакомство с параллельным программированием в C++. |
9 |
· Знакомство с лямбда-выражениями. |
Отчетность
Каждая лабораторная работа сопровождается отчетом, который содержит:
1. Номер лабораторной работы (1-9)
2. ФИО студента и номер группы.
3. Номер варианта.
4. Формулировку задания лабораторной работы.
5. Описание структуры классов и алгоритма работы программы.
6. Листинг программы.
Cреда разработки
Допускается использование следующих сред разработки/компиляторов:
· Microsoft Visual Studio 2013 для MS Windows 7/8.1/10
· X-Code (clang) для MacOS X 10.x
· gcc для Linux (Ubunta).
Допускается использование других компиляторов C++ поддерживающих стандарт C++ 11.
Методика сдачи лабораторных работ
Приемка лабораторной работы состоит из двух частей:
1. Очная демонстрация преподавателю (или лаборанту) работы программы на различных тестовых данных.
2. Сдача письменного отчета о проделанной лабораторной работе.
Во время сдачи каждой из частей преподавателем могут задаваться вопросы о принципах работы программы и об особенности работы тех или иных конструкций языка C++.
Варианты лабораторных работ
Варианты задания (структуры данных)
Вариант |
Контейнер 1-го уровня |
Контейнер 2-го уровня |
1. |
Массив |
Массив |
2. |
Массив |
Связанный список |
3. |
Массив |
Бинарное — Дерево |
4. |
Массив |
N-Дерево |
5. |
Массив |
Очередь |
6. |
Массив |
Стек |
7. |
Связанный список |
Массив |
8. |
Связанный список |
Связанный список |
9. |
Связанный список |
Бинарное — Дерево |
10. |
Связанный список |
N-Дерево |
11. |
Связанный список |
Очередь |
12. |
Связанный список |
Стек |
13. |
Бинарное — Дерево |
Массив |
14. |
Бинарное — Дерево |
Связанный список |
15. |
Бинарное — Дерево |
Бинарное — Дерево |
16. |
Бинарное — Дерево |
N-Дерево |
17. |
Бинарное — Дерево |
Очередь |
18. |
Бинарное — Дерево |
Стек |
19. |
N-Дерево |
Массив |
20. |
N-Дерево |
Связанный список |
21. |
N-Дерево |
Бинарное — Дерево |
22. |
N-Дерево |
N-Дерево |
23. |
N-Дерево |
Очередь |
24. |
N-Дерево |
Стек |
25. |
Очередь |
Массив |
26. |
Очередь |
Связанный список |
27. |
Очередь |
Бинарное — Дерево |
28. |
Очередь |
N-Дерево |
29. |
Очередь |
Очередь |
30. |
Очередь |
Стек |
31. |
Стек |
Массив |
32. |
Стек |
Связанный список |
33. |
Стек |
Бинарное — Дерево |
34. |
Стек |
N-Дерево |
35. |
Стек |
Очередь |
36. |
Стек |
Стек |
Варианты задания (фигуры)
Вариант |
Фигура №1 |
Фигура №2 |
Фигура №3 |
1. |
Треугольник |
Квадрат |
Прямоугольник |
2. |
Квадрат |
Прямоугольник |
Трапеция |
3. |
Прямоугольник |
Трапеция |
Ромб |
4. |
Трапеция |
Ромб |
5-угольник |
5. |
Ромб |
5-угольник |
6-угольник |
6. |
5-угольник |
6-угольник |
8-угольник |
7. |
6-угольник |
8-угольник |
Треугольник |
8. |
8-угольник |
Треугольник |
Квадрат |
9. |
Треугольник |
Квадрат |
Прямоугольник |
10. |
Квадрат |
Прямоугольник |
Трапеция |
11. |
Прямоугольник |
Трапеция |
Ромб |
12. |
Трапеция |
Ромб |
5-угольник |
13. |
Ромб |
5-угольник |
6-угольник |
14. |
5-угольник |
6-угольник |
8-угольник |
15. |
6-угольник |
8-угольник |
Треугольник |
16. |
8-угольник |
Треугольник |
Квадрат |
17. |
Треугольник |
Квадрат |
Прямоугольник |
18. |
Квадрат |
Прямоугольник |
Трапеция |
19. |
Прямоугольник |
Трапеция |
Ромб |
20. |
Трапеция |
Ромб |
5-угольник |
21. |
Ромб |
5-угольник |
6-угольник |
22. |
5-угольник |
6-угольник |
8-угольник |
23. |
6-угольник |
8-угольник |
Треугольник |
24. |
8-угольник |
Треугольник |
Квадрат |
25. |
Треугольник |
Квадрат |
Прямоугольник |
26. |
Квадрат |
Прямоугольник |
Трапеция |
27. |
Прямоугольник |
Трапеция |
Ромб |
28. |
Трапеция |
Ромб |
5-угольник |
29. |
Ромб |
5-угольник |
6-угольник |
30. |
5-угольник |
6-угольник |
8-угольник |
31. |
6-угольник |
8-угольник |
Треугольник |
32. |
8-угольник |
Треугольник |
Квадрат |
33. |
Треугольник |
Квадрат |
Прямоугольник |
34. |
Квадрат |
Прямоугольник |
Трапеция |
35. |
Прямоугольник |
Трапеция |
Ромб |
36. |
Трапеция |
Ромб |
5-угольник |
Задания лабораторных работ
Лабораторная работа №1
Цель работы
Целью лабораторной работы является:
· Программирование классов на языке С++
· Управление памятью в языке С++
· Изучение базовых понятий ООП.
· Знакомство с классами в C++.
· Знакомство с перегрузкой операторов.
· Знакомство с дружественными функциями.
· Знакомство с операциями ввода-вывода из стандартных библиотек.
Задание
Необходимо спроектировать и запрограммировать на языке C++ классы фигур, согласно вариантов задания.
Классы должны удовлетворять следующим правилам:
· Должны иметь общий родительский класс Figure.