DRAKON.SU
https://forum.drakon.su/

Java try/catch/finally в языке ДРАКОН
https://forum.drakon.su/viewtopic.php?f=154&t=5554
Страница 1 из 2

Автор:  Olegar [ Суббота, 07 Ноябрь, 2015 03:45 ]
Заголовок сообщения:  Java try/catch/finally в языке ДРАКОН

Дорогие участники форума,

Как представить в Драконе оператор Java try {...} catch (Exception1 e1) {...} catch (Exception2 e2) {...} finally {...} ?

Спасибо!

Автор:  Ильченко Эдуард [ Воскресенье, 08 Ноябрь, 2015 01:11 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Olegar писал(а):
Как представить в Драконе оператор Java try {...} catch (Exception1 e1) {...} catch (Exception2 e2) {...} finally {...} ?

На сколько я знаю, устоявшегося мнения как отображать try - нет.
Могу предложить такой вариант:
Вложение:
try.png
try.png [ 7.28 КБ | Просмотров: 21638 ]

Автор:  Владимир Паронджанов [ Воскресенье, 08 Ноябрь, 2015 09:21 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Olegar писал(а):
Как представить в Драконе оператор Java try {...} catch (Exception1 e1) {...} catch (Exception2 e2) {...} finally {...}
Олег, а как бы Вы сами ответили на свой вопрос?

Изложите Ваш вариант. Не бойтесь ошибиться.

Эдуард прав. Вопрос нуждается в обсуждении.

Автор:  Olegar [ Воскресенье, 08 Ноябрь, 2015 22:21 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Спасибо, Эдуард. Блоки catch по смыслу хорошо представляются иконой Вариант. Нужны ли параллельные линии и стрелки схождения?

Владимир Даниелович, вот что у меня получилось, для первого примера с https://docs.oracle.com/javase/tutorial ... ether.html

Вложения:
trycatchfinally.png
trycatchfinally.png [ 12.63 КБ | Просмотров: 21607 ]

Автор:  Владимир Паронджанов [ Понедельник, 09 Ноябрь, 2015 00:21 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Олег, в каком графическом редакторе Вы это нарисовали?

Автор:  Рэйлвэй Каген [ Понедельник, 09 Ноябрь, 2015 11:37 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Были у нас эксперименты. Можно попробовать так:
Вложение:
drakon_ext_trycatchfinally.png
drakon_ext_trycatchfinally.png [ 22.64 КБ | Просмотров: 21577 ]
Секция "Entering try statement" становится ненужной, т.к. стоит в начале ветки. Если в задаче много веток, то можно поставить соединители и вынести обработку ошибок на отдельный лист.

Автор:  Olegar [ Понедельник, 09 Ноябрь, 2015 18:53 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Спасибо, прекрасная идея использовать силуэт: получается на каждый из блоков try,catch,finally своя ветка. Можно ли так представить вложенные try?
Представляю вариант на русском в классическом синтаксисе силуэта, полагаясь на ключевые слова как достаточные для визуализации специфической семантики Java.

Вложения:
write list russian.png
write list russian.png [ 15.23 КБ | Просмотров: 21552 ]

Автор:  Владимир Паронджанов [ Понедельник, 09 Ноябрь, 2015 19:20 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

У меня формальные замечания

1. Удалить ветку Конец, она не нужна.

2. Ветку finally перенести направо и сделать крайней правой.

3. У ветки finally удалить икону Адрес и заменить ее на икону Конец.

4. Две ветки catch являются входными (а изображены как стандартные). Так нельзя. Надо ввести ОТЛИЧИТЕЛЬНЫЙ признак, что это входная ветка, а не стандартная.

Как это сделать?
Рэйлвэй предложил добавить сверху икону Заголовок.
Олег не согласился и убрал ее.
Я предлагаю нечто среднее. Залить икону Имя ветки цветом.

Каким цветом? Красным? Слишком ярко. Будет раздражать.
Может быть, розовым?

Автор:  Olegar [ Понедельник, 09 Ноябрь, 2015 19:47 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Спасибо! Прилагаю исправленный вариант.

Вложения:
write list russian 2.png
write list russian 2.png [ 14.73 КБ | Просмотров: 21538 ]

Автор:  Рэйлвэй Каген [ Понедельник, 09 Ноябрь, 2015 19:54 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Olegar писал(а):
..вариант на русском в классическом синтаксисе силуэта, полагаясь на ключевые слова как достаточные для визуализации специфической семантики Java.
В каждой ветке catch должен присутствовать список веток. Если в проекте будет больше одной охраняемой ветки, станет непонятно, к чему каждый catch относится. У меня он сделан "ловушкой", совмещенной с иконкой "имя ветки".

Если для Вас важен базовый синтаксис Дракона, вставьте "полку" сразу после каждой "catch". Наверху полки напишите "CATCH", а внизу разместите список с именами охраняемых веток.

Автор:  Olegar [ Понедельник, 09 Ноябрь, 2015 21:44 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Пример аналогичного примитива.

Вложения:
write list primitive.png
write list primitive.png [ 14.46 КБ | Просмотров: 21524 ]

Автор:  LKom [ Понедельник, 09 Ноябрь, 2015 23:43 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Olegar,

что используете для рисования дракон-схем?

Автор:  LKom [ Вторник, 10 Ноябрь, 2015 00:26 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Теория - http://src-code.net/try-catch-i-finally-java/

Вложение:
JavaTryCatchFinally.png

Фрагмент Дракон-схемы с обработкой исключения.

С ИС Дракон все элементарно просто.

Автор:  Olegar [ Вторник, 10 Ноябрь, 2015 00:31 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Я использую идеальный редактор Дракон схем, описанный в книгах Владимира Паронджанова :)

Автор:  LKom [ Вторник, 10 Ноябрь, 2015 00:35 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Т.е., каменным топором высекаите в Корелдраве?

Рекомендую ИС Дракон.

Автор:  Olegar [ Вторник, 10 Ноябрь, 2015 01:15 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

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

Вложения:
write list LKom.png
write list LKom.png [ 14.88 КБ | Просмотров: 21499 ]

Автор:  LKom [ Вторник, 10 Ноябрь, 2015 07:33 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Olegar, можно и так. Будет больше соответствовать последовательному написанию catch предложений в Java коде.

Конструкцию try/catch/finally не следует разбивать на несколько веток схемы Силуэт, т.к. теряется визуальная целостность try/catch/finally.

Т.к. инструкции в try и finally разнесены по нескольким иконам, то надо указать положение нижних границ - } .

При использовании раскраски, красить следует иконы с ключевыми словами try, catch и finally. При нескольких try, использовать свои отличающиеся цвета для каждой группы предложений.

----

Вложение:
СнимокCatch.PNG

Для пользователей хорошо знакомых с языком Java, можно упростить отображение предложения Catch до одной иконы Действие.

Автор:  Владимир Паронджанов [ Вторник, 10 Ноябрь, 2015 10:10 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

..

Автор:  Степан Митькин [ Вторник, 10 Ноябрь, 2015 12:30 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Olegar писал(а):
Как представить в Драконе оператор Java try {...} catch (Exception1 e1) {...} catch (Exception2 e2) {...} finally {...} ?

Я тоже задался этим вопросом. Но ничего путного придумать не смог.
В итоге я помещал всю конструкцию try { } catch { } внутри иконы "Действие".

Почему возникло это затруднение?
Из-за глубинной несовместимости исключений и ДРАКОНА.

Исключения подразумевают невидимые пути через алгоритм. В интернете полно ругани относительно пользы и вреда исключений.
Но несомненным является наличие этих невидимых путей.

В ДРАКОНе же, напротив, особый упор делается на видимость всех путей. Сила ДРАКОНа состоит в том, что он делает все пути через алгоритм явными.

Автор:  Владимир Паронджанов [ Вторник, 10 Ноябрь, 2015 13:12 ]
Заголовок сообщения:  Re: Java try/catch/finally в Драконе

Степан Митькин писал(а):
Почему возникло это затруднение?
Из-за глубинной несовместимости исключений и ДРАКОНА.
Это слишком сильное утверждение.

Степан Митькин писал(а):
В ДРАКОНе же, напротив, особый упор делается на видимость всех путей.
Это верно.

Степан Митькин писал(а):
Сила ДРАКОНа состоит в том, что он делает все пути через алгоритм явными.
Не совсем так. Во всех случаях программ реального времени при использовании икон времени (например, иконы "Пауза") ДРАКОН решительно удаляет явные пути (явные передачи управления) между приложением и операционной системой реального времени (ОСРВ).

Кто отсчитывает длительность паузы (например, 23 секунды)?
Прикладная программа (в которой имеется икона Пауза) или ОСРВ?
Эту операцию выполняет ОСРВ.

Между ОСРВ и программами реального времени существует огромное количество передач управления. Если все их показать, дракон-схема превратится в хаос. Она станет нечитаемой.

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

Это говорит о том, что ситуация с видимостью — невидимостью очень непростая. Большое спасибо Степану Митькину, что привлек внимание к этой сложнейшей проблеме и помог ее распутать.

Отсюда следуют

ВЫВОДЫ

1. В большинстве случаев в ДРАКОНе особый упор делается на видимость всех путей по передаче управления (как учит Степан Митькин. Спасибо, Степан за хорошую формулировку).

2. В системах реального времени особый упор делается на СМЫСЛЕ программы. Поэтому связи (по передаче управления) между программой и ОСРВ нарочно делаются НЕВИДИМЫМИ, чтобы не замусоривать зрительную сцену дракон-схемы.


Ситуация с исключениями для меня не ясна. Спасибо Олегу, что привлек внимание к этой теме.

Просьба к Степану

1. Запихнуть все в одну икону Действие — это предложение уязвимо для критики.

2. Большая просьба указать конкретные недостатки, которые Вы видите в дракон-схемах в данном теме.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/