Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Бишоп Д. -> "Эффективная робота Java 2" -> 39

Эффективная робота Java 2 - Бишоп Д.

Бишоп Д. Эффективная робота Java 2 — Спб.: Питер, 2002. — 592 c.
ISBN 966-552-107-1
Скачать (прямая ссылка): effektivnayarabotajava2002.djvu
Предыдущая << 1 .. 33 34 35 36 37 38 < 39 > 40 41 42 43 44 45 .. 259 >> Следующая

Мы можем свести решение задачи к выводу одной таблицы для района х раз (х изменяется в диапазоне от I до 4). Таблица должна содержать информацию о длине очереди в верхней строке и значения времени в левом столбце. Если установить для значений времени интервал в 15 минут, мы получим примерно такую таблицу:
Pizza. 20 Delivery estimates for Area 1
Тіш» now Queue length
0 1 2 Э 4 5
900 915 920 925 930 935 940
915 930 935 940 945 950 955
930 945 950 955 1000 1005 1010
945 1000 1005 1010 1015 1020 1025
Начальная разработка
Назначение нашей программы — создание таблицы, состоящей из заглавий и определенного числа строк с информацией по каждому из четырех районов. Каждая строка формируется с помощью метода printaLine, который еще не определен* Единственное, о тем мы должны подумать, — это о цикле, в котором данный метод выполняется, Так как меткой каждой строки таблицы должно быть значение времени от 9:00 до 23:00 с интервалом в 15 минут, это не будет слишком сложно* Вот конструктор для первой версии программы:
PizzaDeliveryl () {
for (int area =1; area<= 4; area++] ( printHeadinqtareal; startTable f )t j
for (int time = 900; time < 2300; time = addTime(time,15))
йиіе, агeAi :
}
ш
>
88
Главо 3. Типы и методы
Методы, которые нужно определить'^ подчеркнуты. Однако прежде мы рассмотрим метод printaLine. Он имеет более простую структуру, чем аналогичный метод outLine в программе, выводящей таблицу температур, поскольку в данном случае необходимо вывести только одно значение в столбце, а каждая строка начинается с конкретного значения времени. Цикл будет запускаться для определения длины очереди (от 0 до 5). Нам остается вычислить значения, которые должны быть выведены в столбце. Чтобы получить результирующую величину, мы должны сложить значения времени поступления заказа и времени, которое затрачивается на процесс
приготовления:
¦ время ожидания — 5 минут на каждый заказ в очереди;
¦ приготовление пиццы — 5 минут;
¦ обработка заказа — 10 минут;
¦ доставка — 5 минут для близлежащих районов.
Ниже представлена формула для вычисления значений в таблице:
addTime (orderTime, queue* make Ті me + processTime + aMriveTime)
Другими словами, мы определяем метод addTime, который будет иметь тип, поскольку должен возвращать значение времени.
Поработаем над этим методом. Он берет значение времени, которое представляет собой целое число (по 24-часовой шкале), и добавляет к нему минуты. Таким образом, заголовок метода должен иметь следующий вид:
int addTime (int tf int m) (
Мы специально используем t в качестве идентификатора формального параметра, чтобы метод имел как можно более общий вид. Сейчас настало время воспользоваться теми наработками, которые были сделаны в примере 2.6. Тогда мы применяли два оператора, которые преобразовывали значения времени по 24-часовой шкале в минуты и наоборот:
arriveMins - arrive24 / 100 * 60 + arrive24 % 100;
newArrive24 - newArriveMins / 60 * 100 + newArriveMins % 60;
Если представить эти выражения в виде методов, результат будет следующим:
int timelnMins (int t) (
return t / 100 * 60 +¦ t % 100;
}
int time24 (int t) {
return t / 60 * 100 + t % 60;
\
Данный случай применения метода addTime более легкий. Этот метод вызывается для преобразования заданного значения времени в минуты, затем он прибавляет к нему определенное количество минут* после чего новое значение опять выводится в формате часы и минуты. Перечисленные операции выполняются с помощью таких операторов:
int addTime (int t, int m) {
return time24 {timelnMins (t) -§- m) ;
4
Практикум 1. Доставко пиццы 2U
89
При необходимости мы можем заменить используемый метод
addTime (time,15)
методом
time24(timelnMins(time) + 15)
Следует отметить* что благодаря методу addTime протрамма становится удобочитаемой. Поэтому мы и применяем именно его.
Диаграмма моделирования
Диаграмма моделирования программы представлена на рис, 3.5. Стрелки в блоке методов показывают» какой метод, чем вызывается. В отличие от программ, которые обрабатывают информацию о лавке древностей, данная программа не содержит дополнительных объектов. Диаграмма моделирования, указывающая на вызывающую структуру, действительно может дать нам много информации* не говоря уже о том, что благодаря ей мы получаем четкое представление о структуре методов и их параметрах. Если такая структура усложнится, мы можем создать отдельную диаграмму, как показано на рис. 3.6,
і
PizzaDeflveryl К
main
:FtezaDoHvBfYJ
drlveT1me=5
makeT}me=1(J
рҐОСМбТіїТШа 10
Pizza DeJrverylQ printH№ding(mt) startTabteQ
pnntaUne{intkit) acJdTimafint) timelnMin&(int) -* time24(snt) 'Ч-----
Л
Рис. 3.5, Диограммо моделирования для программы PizzaDeliveryl
Предыдущая << 1 .. 33 34 35 36 37 38 < 39 > 40 41 42 43 44 45 .. 259 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.