Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ковалев(тестировщик).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.47 Mб
Скачать

Форма № Н-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

Введение

Цель работы

Изучить и реализовать основные принципы ООП:

  • инкапсуляция и методы доступа;

  • статический и динамический полиморфизм;

  • простое и множественное наследование;

  • простые, абстрактные и полиморфные классы.

    1. Общая постановка задачи

  1. Согласно своему варианту создать абстрактный класс с полями и виртуальными методами. На его основе реализовать не менее 2-х производных классов с полиморфными методами.

  2. Создать класс, содержащий массив/список/параметризованную коллекцию объектов этих классов в динамической памяти. Коллекция объектов должна быть получена с использованием датчика псевдослучайных чисел.

  3. Написать демонстрационную программу, в которой будут использоваться все методы классов. Построить уточненную UML-диаграмму.

  4. Предусмотреть вариант Debug для визуализации вызова конструкторов и деструкторов.

  5. Исходные данные могут вводиться вручную с проверкой корректности ввода, либо генерироваться с использованием датчика псевдослучайных чисел.

  6. Выходная информация должна быть корректной, для чего должны быть использованы методы обработки исключительных ситуаций.

    1. Детальная постановка задачи

Создать абстрактный класс Vehicle. На его основе реализовать классы Car (автомобиль), Bicycle (велосипед) и Lorry (грузовик). Классы должны иметь возможность задавать и получать параметры средств передвижения (название, цена, максимальная скорость, год выпуска, цвет и т.д.). Наряду с общими полями и методами, каждый класс должен содержать и специфичные для него поля (например, грузоподъемность, количество колес и проч.). Вычислить максимальную и минимальную грузоподъемность, скорость движения, цену заданного средства передвижения.

Создать класс Garage, содержащий массив/список/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

    1. Описание предметной области

Аномалии

Аномальные ситуации могут возникать в таких ситуациях:

  • цена за транспортное средство меньше или равна 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. Архитектор – Ковалев Василий