Помогите чайнику нарисовать UML диаграмму(Прочитано 46369 раз)
Перерисовал опять...
Думаю так правильней.

А где же у вас внешнее системное событие (ну что пользователь ввел параметр в окно) ?



Цитата: Galogen
А где же у вас внешнее системное событие (ну что пользователь ввел параметр в окно) ?

Спасибо. Так хорошо будет?



Спасибо. Так хорошо будет?
Неа, нехорошо.
актер как-то у вас оказался внутри системы.

Проблема в том, что желательно написать таки сценарий ВИ - мы говорим о успешном пока, а есть еще неуспешные сценарии.

Думаю как-то так:
Пользователь вводит число
Система отображает введенное число
Пользователь подает команду "Рассчитать арктангес"
Система выполянет вычисление и отображает результат

Анализируя ВИ мы видим два внешних системных события:
1. ввод числа
2. посылка команды "Рассчитать арктангес"

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

Далее с использованием ДП мы изображаем возможную реализацию системных операций.



Цитировать
Думаю как-то так:
Пользователь вводит число
Система отображает введенное число
Пользователь подает команду "Рассчитать арктангес"
Система выполянет вычисление и отображает результат

Это же у нас тогда диаграмма состояний получается... Не представляю как это в ДП нариовать.

И почему мы не может воспринимать пользователя как часть системы?
У нас система с пользоватем и калькулятором.

Main - JFrame - JPanel - JTextField
JTextField берет от пользователя число, отдает в JPanel,
JPanel дает atan, atan возвращает результат к jPanel
JPanel устанавливает число в JTextField.

Ну а далее цикл. JTextField ждет от пользователя нового текста... и т.д.



Это же у нас тогда диаграмма состояний получается... Не представляю как это в ДП нариовать.

И почему мы не может воспринимать пользователя как часть системы?
У нас система с пользоватем и калькулятором.
Ну, Вы батенька, загнули. Пользователь часть системы.

Цитировать
Main - JFrame - JPanel - JTextField
JTextField берет от пользователя число, отдает в JPanel,
JPanel дает atan, atan возвращает результат к jPanel
JPanel устанавливает число в JTextField.
Ну и прекрасно.
Пользователь вводит число - куда в поле JTextField
Пользователь жмет команду Рассчитать
Возможно Atan посылает запрос на получение значения поля getValue и получает его
Вычисляет арктангес
Отсылает значение в JtextField - т.е. setValue
Все.
Все остальное - инициализация Main, Jframe и т.п. производится до начала варианта использования

Ну а далее цикл. JTextField ждет от пользователя нового текста... и т.д.

Т.е. JTextField - интерфейсная часть, ATAN контроллер вычисления - других то функций у вас нет, сущностных клаасов как таковых нет, результат или исходное значение хранится в JTextField.

Мне не понятно почему ATAN получает значение у JPanel, почему он не может обратится непосредственно к источнику информации JTEXTField. Типичный шаблон Information Expert
Да я бы добавил класс JButton какой нить, правда в Вашем случае и так однозначно, хотя имеет смысл разделить управление от представления

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

Таким образом ваш калькулятор легко модифицируется
« Последнее редактирование: 08 Июня 2010, 21:09:46 от Galogen »



С учетом выше сказаного нарисовал такое.
Хорошо ли?



С учетом выше сказаного нарисовал такое.
Хорошо ли?
Лучше.
Правда вот какое замечание. Разве число можно вводить исключительно, нажимая кавиши калькулятора? Т.е. нельзя разве непосредственно в поле ввести его с клавиатуры?

Если все-таки все только через кнопку, тогда нажатие баттнона я бы разделил таким образом: Ввести элемент числа (элементчисла) - это в цикле с условием

Далее таже самая команда но в качестве параметра (арктангес)



Цитировать
равда вот какое замечание. Разве число можно вводить исключительно, нажимая кавиши калькулятора? Т.е. нельзя разве непосредственно в поле ввести его с клавиатуры?

Ну можно и с клавиатуры.
Тогда получается рисовать от юзера две одинаковые комманды - "редактировать число"
Только одна стрелка пойдет к JButton а вторая к JTextField?
Както странно выходит думаю...

Цитировать
ажатие баттнона я бы разделил таким образом: Ввести элемент числа (элементчисла) - это в цикле с условием

Далее таже самая команда но в качестве параметра (арктангес)

Тоесть одна стрелка (но лучше думаю назвать "нажать кнопку")
нажать кнопку (ЭлементЧисла) - тогда к setText; и вторая
нажать кнопку (arctg(x)) - тогда к вычеслению.

Я правильно понял?



Если я правильно вас понял...



Если я правильно вас понял...
Я думаю несовсем. ДП - это визуализированный сценарий действия, даже скажем некий экземпляр такого действия. Потому можно рассмотреть вариант ввода числа кнопками или ввода числа с клавиатуры как две разные диаграммы.

Либо (поскольку ситуация несложная) объединить стрелки редактировать и нажать кнопку фреймом типа alt.

Типа я могу ввести часть числа с клавиатуры, часть нажимая кнопки калькулятора.



Так?
Ил еще и взять это все в цикл, как я делал прежде...
А то вот думаю нужно ли всю диаграмму зацыкливать..



Так?
Ил еще и взять это все в цикл, как я делал прежде...
А то вот думаю нужно ли всю диаграмму зацыкливать..
Нет диаграмму зацикливать не стоит. Разве фрейм алта обложить циклом - пока не завершен ввод, но думаю это не столь важно.

Это же все таки не исполняемая модель, а спецификация. Вот если бы из модели можно было генерировать исполняемый сразу код, тогда нужно было бы более строго описать условия и скроее всего с использованием OCL выражений

Мне только не совсем понятна задача JPanel - ведь по сути это только контейнер



Так. Работу я сделал и сдал. Все хорошо. Большое спасибо за помощь.

Цитировать
Мне только не совсем понятна задача JPanel - ведь по сути это только контейнер
Ну по коду ведь на нее наложены кнопки. И в этом классе (JPanel) берется текст из JTextField, там он посылается в atan, и там же и обратно устанавливается на JTextField




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19