Р. ЛАФОРЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть13) онлайн

Проекты

К сожалению, объем книги не позволяет описать упражнения такого типа и мас-

штаба, как примеры, приведенные в этой главе. И все же предлагаем несколько

идей различных проектов, которые вы можете развить самостоятельно.

1.            Создайте методы для вычитания и деления чисел класса verylong (см. одно-

именный пример). Это будут перегружаемые операции «-» и «/». Здесь

потребуется некоторое напряжение интеллекта. Будем предполагать при

написании функции вычитания, что числа могут быть как положитель-

ными, так и отрицательными. Это усложнит умножение и сложение, ко-

торым придется выполнять различные действия в зависимости от знака

числа.

Чтобы вникнуть в алгоритм, прежде всего попробуйте выполнить деление

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

рите все эти шаги в новый метод класса verylong. При этом обнаружится,

что приходится выполнять ряд операций сравнения, так что необходимо

будет написать специальную функцию еще и для этого.

2.            Перепишите программу ELEV таким образом, чтобы она работала только

с одним лифтом. Это сильно упростит программное решение. Удалите

ненужные части программы. Кроме того, можно представить себе задачу

с одним лифтом и одним пассажиром, что еще больше упростит дело.

3.            Модифицируйте программу работы с лифтами, улучшив методы обра-

ботки запросов. Чтобы увидеть огрехи в поведении нынешнего варианта

программы, попробуйте создать запрос «вниз» с двадцатого этажа. Затем

создайте запрос «вниз» с десятого этажа. Лифт-1 тотчас поднимется на

20 этаж. Но лифт-2, который, по идее, должен подниматься на 10 этаж,

 

будет ждать, пока лифт-1 пройдет 10 этаж, только после этого начнет

движение. Измените функцию decide() таким образом, чтобы исключить

эту ошибку.

4. Создайте библиотеку классов, моделирующую какую-нибудь интересу-

ющую вас предметную область. Создайте main() или клиентскую програм-

му для ее тестирования. Предложите свою библиотеку классов на рынке,

станьте богатым и знаменитым.

 

 

26