- •Введение
- •Общая постановка задачи
- •Детальная постановка задачи
- •Описание предметной области
- •Теоретическое введение
- •Что такое тестирование?
- •Преимущества
- •Ограничения
- •Приложения модульного тестирования Экстремальное программирование
- •План модульного тестирования
- •План ют:
- •Абстрактный класс, его назначение и основные характеристики.
- •Полиморфный класс, его назначение и основные характеристики
- •Указатели на базовый класс. Их свойства
- •Статический и динамический полиморфизм. Понятие о раннем и позднем связывании member-функций.
- •Статический и динамический полиморфизм
- •Понятие о раннем связывании member-функций.
- •Понятие о позднем связывании member-функций.
- •Использование позднего статического связывания
- •Файловый ввод-вывод.
- •Текстовые и двоичные файлы.
- •Архитектура проекта
- •Тестирование
- •Тестирование взаимодействия классов
- •5.1.1 Тесты
- •Тестирование взаимодействия классов в составе динамической коллекции
- •Тестирование всех задач заданных по варианту
- •Usability тестирование
- •Проведение тестирования
- •Приложение а. Листинги исходных кодов
- •Приложение б. Результат работы программы (режим debug)
- •Приложение в. Результат работы программы (режим release)
Форма № Н-6.01
Національний аерокосмічний університет ім. М.Є. Жуковського
“Харківський авіаційний інститут”
Факультет економіки та менеджменту
Кафедра інженерії програмного забезпечення
КУРСОВИЙ ПРОЕКТ
(РОБОТА)
з об’єктно-орієнтованого програмування
на тему: Успадкування. Абстрактні і поліморфні класи. Динамічний поліморфізм.
Студента __2___ курсу _622п_____ групи
Напряму підготовки
6.050103 «Програмна інженерія»
Спеціальності «Програмна інженерія»
____Ковальов В. (тестировщик)______
(прізвище та ініціали)
Керівник
(посада, вчене звання, науковий ступінь, прізвище та ініціали)
Національна шкала ____________________
Кількість балів: ______Оцінка: ECTS _____
Члени комісії
________________ Голубь Н. Г.
(підпис) (прізвище та ініціали)
________________ Лучшев П.О.
(підпис) (прізвище та ініціали)
____________ Данова М.О.
(підпис) (прізвище та ініціали)
м. Харків – 2016 рік
Оглавление
ВВЕДЕНИЕ 4
1.1 Общая постановка задачи 4
1.2 Детальная постановка задачи 4
1.3 Описание предметной области 5
2 ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ 7
2.1 Что такое тестирование? 7
Поощрение изменений 12
Упрощение интеграции 12
Документирование кода 12
Отделение интерфейса от реализации 12
Приложения модульного тестирования 13
Экстремальное программирование 13
План ЮТ: 14
2.2 Абстрактный класс, его назначение и основные характеристики. 15
2.3 Полиморфный класс, его назначение и основные характеристики 16
2.4 Указатели на базовый класс. Их свойства 17
2.5 Статический и динамический полиморфизм. Понятие о раннем и позднем связывании member-функций. 17
2.5.1 Статический и динамический полиморфизм 17
2.5.2 Понятие о раннем связывании member-функций. 18
2.5.3 Понятие о позднем связывании member-функций. 18
2.5.4 Использование позднего статического связывания 19
2.6 Файловый ввод-вывод. 19
2.7 Текстовые и двоичные файлы. 19
3 АРХИТЕКТУРА ПРОЕКТА 21
4 ОПИСАНИЕ ГЛАВНОЙ ПРОГРАММЫ 24
4.1 Функция KursV2T1() 24
4.2 Добавление транспортного средства 25
4.3 Удаление транспортного средства 28
4.1 Вывод значений специфических характеристик 29
4.4.1 Транспортные средства с наибольшей характеристикой 29
4.4.2 Транспортные средства с наименьшей характеристикой 30
4.5 Транспортные средства с наибольшей ценой 31
4.6 Транспортные средства с наименьшей ценой 33
4.7 Транспортные средства с наибольшей скоростью 34
4.8 Транспортные средства с наименьшей скоростью 36
5 ТЕСТИРОВАНИЕ 38
5.1 Тестирование взаимодействия классов 38
5.1.1 Тесты 38
5.2 Тестирование взаимодействия классов в составе динамической 40
коллекции 40
5.3 Тестирование всех задач заданных по варианту 40
5.4 Usability тестирование 43
ВЫВОД 45
ПРИЛОЖЕНИЕ А. ЛИСТИНГИ ИСХОДНЫХ КОДОВ 46
Bicycle.h 46
Car.h 46
Constant.h 46
Convert.h 46
Garage.h 47
Lorry.h 47
Main.h 48
Vehicle.h 48
Bicycle.cpp 50
Car.cpp 50
Convert.cpp 51
Garge.cpp 52
KursV2T1.cpp 55
Lorry.cpp 56
Main.cpp 58
Vehicle.cpp 64
ПРИЛОЖЕНИЕ Б. РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ (РЕЖИМ DEBUG) 66
Введение
Цель работы
Изучить и реализовать основные принципы ООП:
инкапсуляция и методы доступа;
статический и динамический полиморфизм;
простое и множественное наследование;
простые, абстрактные и полиморфные классы.
Общая постановка задачи
Согласно своему варианту создать абстрактный класс с полями и виртуальными методами. На его основе реализовать не менее 2-х производных классов с полиморфными методами.
Создать класс, содержащий массив/список/параметризованную коллекцию объектов этих классов в динамической памяти. Коллекция объектов должна быть получена с использованием датчика псевдослучайных чисел.
Написать демонстрационную программу, в которой будут использоваться все методы классов. Построить уточненную UML-диаграмму.
Предусмотреть вариант Debug для визуализации вызова конструкторов и деструкторов.
Исходные данные могут вводиться вручную с проверкой корректности ввода, либо генерироваться с использованием датчика псевдослучайных чисел.
Выходная информация должна быть корректной, для чего должны быть использованы методы обработки исключительных ситуаций.
Детальная постановка задачи
Создать абстрактный класс Vehicle. На его основе реализовать классы Car (автомобиль), Bicycle (велосипед) и Lorry (грузовик). Классы должны иметь возможность задавать и получать параметры средств передвижения (название, цена, максимальная скорость, год выпуска, цвет и т.д.). Наряду с общими полями и методами, каждый класс должен содержать и специфичные для него поля (например, грузоподъемность, количество колес и проч.). Вычислить максимальную и минимальную грузоподъемность, скорость движения, цену заданного средства передвижения.
Создать класс Garage, содержащий массив/список/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.
Описание предметной области
Аномалии
Аномальные ситуации могут возникать в таких ситуациях:
цена за транспортное средство меньше или равна 0 (ни одно транспортное средство не может не иметь цены);
максимальная скорость движения транспортного средства отрицательна;
год выпуска позже, чем теперешний.
Входные данные
int Capacity-максимальная грузоподъёмность;
double Horsepower - лошадиная сила;
double MaxSpeed- максимальная скорость;
double Price - цена;
int Year – год выпуска;
string Model – название;
string Color - цвет;
double Weigth – вес;
int WheelNumber – кол-во колёс.
Ограничения
int Capacity:
велосипед – 140 кг.;
легковой автомобиль – 2000 кг.;
грузовой автомобиль – 112 000 кг.;
double MaxSpeed – от 0 до 1146км/ч;
double Price – от 1 до 28 500 000$;
int Year – от 1885 до 2014;
string Model –от 10 до 100 символов ;
int WheelNumber:
велосипед – от 1 до 3 (но также существуют велосипеды с большим кол-вом колёс);
автомобиль (легковая машина) – от 4 до 42;
грузовые автомобили –от 4 до 20;
Выходные данные
int Capacity-максимальная грузоподъёмность;
double Horsepower - лошадиная сила;
double MaxSpeed- максимальная скорость;
double Price - цена;
int Year – год выпуска;
string Model – название;
string Color - цвет;
double Weigth – вес;
int WheelNumber – кол-во колёс.
Роли
1. Аналитик – Розов Артем
2. Архитектор – Ковалев Василий
