Реализуйте класс, моделирующий заданный тип объектов предметной области. Не должно быть возможности создать или перевести объект в некорректное состояние (например, человек с отрицательным возрастом). Хорошо подумайте над интерфейсом вашего класса. Рекомендуемые атрибуты и методы заданы, но вы можете добавить свои, если в этом есть необходимость. Описание класса должно быть разбито на два файла – заголовочный (.h) и реализации (.cpp). Напишите программу, демонстрирующую работу с созданными классами. Необходимо использовать функции и объекты стандартной библиотеки С++, а не С, где это возможно. Например, хранить строки в объекте класса std::string, а не в виде массива символов, использовать std::cin и std::cout для ввода и вывода соответственно. Для хранения наборов однотипных объектов используйте динамические массивы (new []). Не забывайте освобождать более ненужную память (delete []).
Как в конструкторах, так и в остальных методах при возникновении исключительной ситуации (ошибки) должны генерироваться исключения с помощью инструкции throw, которые обязательно должны обрабатываться где-то выше по стеку вызовов. В стандартной библиотеке C++ имеются классы для описания основных типов исключительных ситуаций (https://ru.cppreference.com/w/cpp/error/exception). Бросать std::string в качестве исключений не нужно.
Наследование и стандартные контейнеры нужно будет использовать только в следующей ЛР!
Содержание отчета по лабораторной работе:
1. Титульный лист.
2. Оглавление.
3. Постановка задачи (записать задание и дополнительные условия, которые вы учитываете при разработке программы).
4. Тестовые данные и ожидаемые результаты (привести наборы исходных данных и ожидаемых результатов работы программы).
5. Проектирование свойств класса (обосновать выбор данных-элементов класса и типов данных для них, записать ограничения на диапазон хранимых значений).
6. Разработка конструкторов и деструктора (добавить в класс необходимое количество конструкторов, определить список параметров конструктора и значения параметров по умолчанию, учесть ограничения на диапазон значений полей класса, при необходимости добавить деструктор).
7. Проектирование методов класса. Сформировать список открытых и, если необходимо, закрытых функций-элементов класса. Для каждой из этих функций обосновать список параметров и тип возвращаемого значения, предусмотреть проверку корректности передаваемых значений. Для двух-трех логически сложных методов привести блок-схемы/диаграммы деятельности UML.
8. Проектирование главной функции (main) для тестирования класса (описать сценарий создания и использования объектов класса).
9. Тестирование программы (оценить соответствие полученных результатов и теоретических представлений).
10. Выводы.
11. Приложение. Исходные коды всех разработанных файлов (.cpp и .h).
| Гарантия на работу | 1 год |
| Средний балл | 4.54 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |