- •Введение
- •Общая постановка задачи
- •Детальная постановка задачи
- •Описание предметной области
- •Теоретическое введение
- •Что такое тестирование?
- •Преимущества
- •Ограничения
- •Приложения модульного тестирования Экстремальное программирование
- •План модульного тестирования
- •План ют:
- •Абстрактный класс, его назначение и основные характеристики.
- •Полиморфный класс, его назначение и основные характеристики
- •Указатели на базовый класс. Их свойства
- •Статический и динамический полиморфизм. Понятие о раннем и позднем связывании member-функций.
- •Статический и динамический полиморфизм
- •Понятие о раннем связывании member-функций.
- •Понятие о позднем связывании member-функций.
- •Использование позднего статического связывания
- •Файловый ввод-вывод.
- •Текстовые и двоичные файлы.
- •Архитектура проекта
- •Тестирование
- •Тестирование взаимодействия классов
- •5.1.1 Тесты
- •Тестирование взаимодействия классов в составе динамической коллекции
- •Тестирование всех задач заданных по варианту
- •Usability тестирование
- •Проведение тестирования
- •Приложение а. Листинги исходных кодов
- •Приложение б. Результат работы программы (режим debug)
- •Приложение в. Результат работы программы (режим release)
Текстовые и двоичные файлы.
Любой файл, содержащий символьную информацию, которую можно на каком-либо языке прочитать и осмыслить, т. е. рассчитанную на восприятие ее человеком, можно называть текстовым файлом (text file).
Строго говоря, абсолютно любой файл можно считать двоичным (бинарным) (binary file), так как всякий файл хранит информацию в двоичном коде. Это могут быть и машинные инструкции, и просто данные. Тем не менее, обычно, двоичным называют файл, содержание которого не рассчитано на восприятие человеком.
Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр. Файл, часть содержимого (данных), которого закодировано битами (двочными числами).
В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.
Часто двоичными файлами называют исполняемые файлы и сжатые данные, однако так ограничивать это понятие не корректно.
Модель двоичного файла
Двоичный файл отличается от текстового тем, что данные в нем представлены во внутренней форме. А поскольку при внутреннем представлении используется двоичная система счисления, то «в честь ее» файлы и называются двоичными. По существу, двоичный файл является аналогом внутренней (оперативной, физической) памяти – неограниченным массивом байтов с возможностью непосредственного обращения (произвольного доступа) к любой его части.
Такая модель файла полностью совпадает с системой представлений, принятой в Си для работы с памятью на низком (физическом уровне).
Физическая память имеет байтную структуру – единицей адресации является байт.
Любая переменная занимает фиксированное количество байтов, определяемое ее типом. Операция sizeof возвращает эту размерность.
Выводы: Таким образом, рассмотрев все пункты теоретического введения, а именно абстрактный и полиморфный классы, указатели на базовый класс, виртуальные деструкторы, коллекцию объектов, статистический и динамический полиморфизм, member-функции и файловый ввод-вывод, можно смело приступить к разработке программы.
Архитектура проекта
Структура проекта может быть представлена моделями двух типов: логической и физической. Логическая модель отражает классы, связь между ними, а область рассмотрения обычно ограничена теми классами, которые отражают предметную область. В качестве средства отображения используют UML-диаграммы.
Логическая модель представлена на рисунке 3.1.
Рис. 3.1 – Диаграмма классов для представления
Модульная структура проекта представлена на рисунке 3.2.
Рис. 3.2 – Модульная структура проекта
Выводы: в результате проектирования были построены модели двух типов: логической и физической. Логическая модель включает в себя абстрактный класс Vehicle и три дочерних классаCar, Bicycle и Lorry. В свое время физическая модель включает в себя модульную структуру проекта.
ОПИСАНИЕ ГЛАВНОЙ ПРОГРАММЫ
В данном разделе приводится описание функций основной программы и соответствующие алгоритмы, которые точно соответствуют разработанной программе.
Функция KursV2T1()
Функция KursV2T1() служит точкой входа в программу.
Блок-схема изображена на рисунке 4.1.
Рисунок 4.1 – Алгоритм выполнения функции KursV2T1()
Добавление транспортного средства
Функция Main::AddVehicle() функция реализует добавление нового транспортного средства.
Блок-схема изображена на рисунке 4.2.
Рис. 4.2. – Алгоритм добавления транспортного средства
Удаление транспортного средства
Функция Main::DeleteVehicle() удаляет транспортное средство по указанному индексу.
Блок-схема изображена на рисунке 4.3.
Рис. 4.3. – Алгоритм удаления транспортного средства
Вывод значений специфических характеристик
Транспортные средства с наибольшей характеристикой
Функция Main::outputMaxSpecial() выводит на экран те транспортные средства, у которых значение специфической характеристики наибольшее среди своих классов.
Блок-схема изображена на рисунке 4.4.1.
Рис. 4.4.1 – Алгоритм вывода транспортных средств с наибольшей характеристикой.
Транспортные средства с наименьшей характеристикой
Функция Main::outputMinSpecial() выводит на экран те транспортные средства, у которых значение специфической характеристики наименьшее среди своих классов.
Блок-схема изображена на рисунке 4.4.2.
Рис. 4.4.2 – Алгоритм вывода транспортных средств с наименьшей характеристикой.
Транспортные средства с наибольшей ценой
Функция Main::outputMaxPrice() выводит на экран то транспортное средство, у которого наибольшая стоимость.
Блок-схема изображена на рисунке 4.5.
Рис. 4.5. – Алгоритм вывода транспортного средства с максимальной ценой
Транспортные средства с наименьшей ценой
Функция Main::outputMinPrice() выводит на экран то транспортное средство, у которого наименьшая стоимость.
Блок-схема изображена на рисунке 4.6.
Рис. 4.6. – Алгоритм вывода транспортного средства с минимальной ценой
Транспортные средства с наибольшей скоростью
Функция Main::outputMaxSpeed() выводит на экран то транспортное средство, у которого наибольшая скорость.
Блок-схема изображена на рисунке 4.7.
Рис. 4.7. – Алгоритм вывода транспортного средства с максимальной скоростью
Транспортные средства с наименьшей скоростью
Функция Main::outputMinSpeed() выводит на экран то транспортное средство, у которого наибольшая скорость.
Блок-схема изображена на рисунке 4.8.
Рис. 4.8. – Алгоритм вывода транспортного средства с минимальной скоростью
Выводы: в результате выполнения этапа описания были пошагово разобраны и проанализированы все алгоритмы функций главной программы, а именно алгоритмы функций добавления и удаления транспортного средства, а так же вывод транспортного средства на экран отвечающего определенной характеристике.
