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

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

Бишоп Д. Эффективная робота Java 2 — Спб.: Питер, 2002. — 592 c.
ISBN 966-552-107-1
Скачать (прямая ссылка): effektivnayarabotajava2002.djvu
Предыдущая << 1 .. 204 205 206 207 208 209 < 210 > 211 212 213 214 215 216 .. 259 >> Следующая

v
closeButton.addActionListener(this); closeButton.setEnabled(true); p.add("East",closeButton); add (’’South" , p);
addWindowListener (new WindowAdapter [) f public void windowClosing(WindowEvent e) {
System»exit (0};
1
}> ;
setVisible(true); graphInFront ^ false;
public void reposition (Graph g) {
// Делает изображение меньше и помещаем? его в нижнюю // половину области ввода, g.setLocation (30, yheight/2-30); g,setSize(xwidth/2 - 40, yheight/2-15); graphlnFront - true;
478
Глава 13. Робото с несколькими подпроцессами
graph = g;
?
і
public void accionPerformed (ActionEvent e) { if (e .getSource() == okButton) { okWatcher,ready();
} else
if (e.getSource() == closeButton) f System.exit(0) ;
}
}
private class Data {
TextField field;
String value;
}
private Data getEntry (String si { if [table.containsKey(s) )
return (Data) table.get(s); else {
outDisplay .append ("\n: ОШИБКА: Такая метка не была введена "ч-з + '^п” ) ; return null;
т
І
}
public int getlnt (String s) {
Data d = getEntry(s);
return Integer,valueQf(d,value) * intValue{);
?
і
public double getDouble (String sj {
Data d = getEntry(s);
return Double.valueOf(d.value).doubleValue();
}
public String getstring [String s) {
Data d = getEntry(s); return d.value;
private void insertPrompt(Data d, String s, TextField t) {
Panel p;
p = new Panel(new FlowLayout[FlowLayout.RIGHT)); p.add(new Label(s) ) ;
inDisplay-add(p)? t.addActionListener(this); t.setEditable(true);
p = new Panel(new FlowLayout(FlowLayout,LEFT)); p,add(t); inDisplay-add(p); d. field. - t;
}
Клосс Oisploy
479
public void prompt (String s, int n) {
Data d - new DataO;
TextField t = new TextField(10); insertPrompt(d, s, t); d-value = Text.writelnt(n,0);
L.sqLText(d.value); table,put(s, d) ;
}
public void prompt: (String s, double n) {
Data d = new Data();
TextField t = new TextField(10); insertPrompt(d, s, t) ; d.value - Double', toString (n) ; t.setText(d.value); table . put (s, d) ;
)
public void prompt (String s, String n) {
Data d - new DataO;
TextField t — new TextField(n,lengthП+2); insertPrompt(d, s, t} ;
d.value = n;
t.setText(d.value); table.put(s, d};
)
public void ready (String s) { outDisplay. append (в+и\п'') ; okButton . setEnabled (true) ; setVisible(true);
if (graphlnFront) graph. toFront (}; okWatcher.watch() ;
// Колирует все значения из текстовых полей а таблицу.
for (Enumeration е = cable,keyst) ; e ,hasMoreElements ();) f
String name = (String) e.nextElement{) ;
Data d = (Data) table,get(name);
і
d.value — d.field.getText(); table,put(name, d);
)
>
publіс void println (String s) ( outDisplay. append (s-^M\n*p) ;
}
public void print (String s) { outDisplay«append(s);
г
J
class Watcher {
private boolean ok;
480
Глава 13. Рабата с несколькими подпроцессами
Watcher О ( ok = false; r
synchronized void watch () {
while Сlok) {
Iry {wait(500); ;
catch. (InterruptedExcepLion еї f }
\
i>
ok = false;
}
synchronised void ready () f ok = true; notify ?);
}
13.5. Практикум 9. Использование в музее аудиоплееров
Администрация музея Саванны намеревается внедрить современную систему работы с посетителями, отказавшись от услуг экскурсоводов, Вместо этого каждому человеку будет выдан аудиопдсер, позволяющий прослушйвать информацию в индивидуальном темпе. При входе в музей расположены столы учета (counter), где служащие за соответствующую плату (или залог) выдают (сдают в аренду) посетителям аудиоплееры. Плата равна 1 грану. Посетители приходят группами от одного до десяти человек и ждут, пока не наберется достаточное количество аудиоплееров. Мы хотим создать программу, которая бы имитировала работу музея, для того чтобы выяснить, какое количество аудиоплесров следует иметь музею, чтобы обслужить определенный поток посетителей.
Алгоритм задачи
С чсш же начать создание программы? Прежде всего следует нарисовать диаграм-
і
му, на которой были бы изображены все задействованные в программе компоненты, что позволит нагляднее идентифицировать объекты и их взаимодействие* Наш вариант такой диаграммы приведен на рис* 13.9-
В музее имеется определенное количество аудиоплееров. Для каждого служащего создается по одному подпроцессу Counter. Музей {Museum) — это клас с-монитор с двумя синхронизированными методами, hire и replace. Подпроцессы counter, вызывают метод hire (дословный перевод — “нанимать, сдавать напрокат”) и, когда их запрос на заданное количество аудиоплееров будет удовлетворен, создают новый подпроцесс visitors* - который со от ае тст вует гру п п с п осет ит елей (visitors).
Посетители оставляют свои аудиоплееры непосредственно на выходе из музея. Таким образом пополняется количество аудиоилеерон, доступных для аренды. Если количества как раз хватает для удовлетворения имеющегося запроса на аудиоплееры, служащие музея экипируют новую группу экскурсантов.
Предыдущая << 1 .. 204 205 206 207 208 209 < 210 > 211 212 213 214 215 216 .. 259 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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