Лабораторная работа 1. Создание многофайлового проекта, использующего класс
Цель занятия:
· совершенствовать навыки разработки программ;
· совершенствовать навыки работы с интегрированной средой разработки MS Visual C++;
· изучить фундаментальные аспекты определения классов;
· приобрести начальные навыки разработки многофайловых приложений с использованием возможностей мастеров MS Visual C++.
Время на выполнение работы: 4 часа
Учебные вопросы:
1. Определение интерфейса класса
2. Использование Мастера создания классов С++
3. Использование разработанного класса
Подготовка к выполнению работы:
1. Изучить рекомендованную литературу (понятие класса и объекта, шаблоны классов).
2. Изучить материал настоящего руководства.
Материалы для подготовки к занятию:
1. Конспект лекций
2. [1] стр. 265-285.
Определение интерфейса класса
Реализация расширенного класса СВох должна включать понятие интерфейса класса. Необходимо разработать набор инструментов для всех, кто захочет иметь дело с объектами класса СВох. Нам понадобится собрать множество функций, предоставляющих интерфейс к миру ящиков. Поскольку интерфейс — это лишь способ работы с объектами класса СВох, он должен быть определен так, чтобы учитывать все возможные действия с объектом СВох, и быть реализованным так, чтобы, насколько возможно, предотвращать неправильное понимание и непреднамеренные ошибки.
|
|
Первый вопрос, который необходимо рассмотреть при проектировании класса, — это природа подлежащей решению проблемы, и, исходя из этого, определить вид функций, представляемых в интерфейсе класса.
Определение проблемы
Принципиальное назначение ящика — содержать объекты того или иного типа, что можно обозначить одним словом: упаковка. Попытаемся представить класс, который вообще избавляет от проблем упаковки, и посмотрим, как он может использоваться. Предположим, что всегда можно упаковать объекты СВох в другой объект СВох, потому что, если мы хотим упаковать конфеты в коробку, то всегда можем представить каждую конфету как идеализированный объект СВох. Основные операции, которые можно представить в классе СВох, перечислены ниже.
1. Вычисление объема СВох. Это фундаментальная характеристика объекта СВох, и ее реализация у вас уже имеется.
2. Сравнение объемов двух объектов СВох для определения того, который из них больше. Вероятно, необходимо поддерживать полный набор операций сравнения для объектов СВох. Версия оператора > у вас уже есть.
3. Сравнение объема объекта СВох с указанным значением, и наоборот. Реализация этого оператора > также уже имеется, но функции, поддерживающие другие операторы сравнения, придется реализовать дополнительно.
|
|
4. Сложение двух объектов СВох для создания нового объекта СВох, который будет содержать оба исходных. Таким образом, результат будет иметь как минимум сумму их объемов, но может быть и больше. У вас уже есть эта версия, которая перегружает оператор +.
5. Умножение объекта СВох на целое число (и наоборот (целого числа на объект СВох)) для создания объекта СВох, который будет содержать указанное количество исходных объектов. Это позволит эффективно моделировать коробку, в которую пакуется группа ящиков.
6. Определение количества объектов СВох заданного размера, которое можно упаковать в другой объект СВох заданного размера. Это, по сути, деление, поэтому вы могли бы реализовать его, перегрузив оператор /.
7. Определение объема свободного пространства, которое остается в объекте СВох после помещения в него максимального количества объектов СВох заданного размера.