logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

148 Глава 2

закрывания дверей равен нулю. Лифт всегда знает, на каком он этаже в данный момент и на какой этаж он должен переместиться.

Не более одного человека может ожидать лифт на любом этаже в любой момент времени, так что если этаж занят, когда на нем должен появиться новый пассажир (не тот, который уже вызвал лифт), то его появление пере­планируется на одну секунду позже. Для упрощения примем, что в моде­лирующей программе в любой момент времени может «создаваться» только один человек, так что время появления очередного человека в здании никогда не повторяется. Предположим, что человек случайно появляется на каждом этаже каждые 5-10 секунд — в главе 3 мы изучим, как использовать ге­нерацию случайных чисел для такого моделирования.

Ваша цель в рамках этих специальных разделов глав 2-8 — создать работающую программу моделирования, функционирующую в соответствии с описанной постановкой задачи. Ваша программа должна промоделировать несколько минут работы лифта и определить, удовлетворяет ли лифт ожи­даемым требованиям к перевозкам в этом офисном здании.

Лабораторное задание 1 по лифту

В этом и нескольких следующих заданиях вы должны осуществить от­дельные этапа объектно-ориентированного проектирования. Первый этап — выявление (идентификация) объектов в вашей задаче. В конечном итоге вы должны будете дать формальное описание этих объектов и представить его ни С++. В данном задании вы должны:

  1. Выявить объекты задачи моделирования лифта. В постановке задачи указано много совместно функционирующих объектов при моделиро­ вании лифта и его взаимодействия с различными людьми, этажами здания, кнопками и т.д. Выделите имена существительные в поста­ новке задачи; с большой вероятностью они представят большинство объектов, необходимых для создания программы, моделирующей лифт.

  2. Для каждого идентифицированного вами объекта запишите один точно сформулированный абзац, который бы охватил все факты в постановке задачи, относящиеся к данному объекту.

Замечания

  1. Это неплохое задание для группы. В идеале вы должны бы работать в группе из двух — четырех человек. Это поможет вам и вашим то­ варищам по группе подкрепить усилия друг друга, обсудить и усовер­ шенствовать каждый проект и подход к его реализации.

  2. Ваша группа должна состязаться с другой группой вашего класса в разработке «наилучшего» проекта и его реализации.

  3. Вы научитесь реализовывать «случайности» в следующей главе, когда мы изучим генерацию случайных чисел. Генерация случайных чисел поможет вам осуществить моделирование таких процессов, как слу­ чайное бросание монетки или игральных костей. Это также поможет вам реализовать случайное появление пассажиров лифта.

  4. Мы сделали ряд упрощающих предположений. Вы можете решиться возместить некоторые утраченные при этом дополнительные детали ра­ боты лифта.

Управляющие структуры 149

  1. Поскольку реальный мир также объектно ориентирован, для вас со­ вершенно естественно заниматься этим проектом, хотя формально вы еще не изучали объектную ориентацию.

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

Вопросы

  1. Какое решение вы примете, если лифт окажется в состоянии осуще­ ствить запланированный объем перевозок?

  2. Почему намного сложнее сделать проект для здания с тремя и более этажами.

  3. В дальнейшем ^ы увидим, что когда мы создадим один объект лифта, нам будет легко создать их сколько угодно. Какие проблемы вы пред­ видите в наличии нескольких лифтов, которые могут принимать и выгружать пассажиров на каждом этаже здания?

  4. Для упрощения мы предположили, что емкость нашего лифта и каж­ дого этажа — только один человек. Какие проблемы вы предвидите, если увеличить эти емкости?

Резюме