Я хотел бы создать диаграмму последовательности операций или диаграмму последовательности из моего исходного кода java.
Есть ли подключаемый модуль, который может мне помочь?
Sen 07 дек. 2010, в 08:42
Поделиться
Вы пытаетесь представить свой исходный поток в виде диаграмм последовательности (проверьте StarUML) или фактически создаете инструмент, который будет создавать диаграмму последовательности с использованием некоторых данных?
Adi 07 дек. 2010, в 07:18
У меня есть полный исходный код проекта в Eclipse. Я просто хочу понять блок-схему всего проекта. что-то вроде иерархии вызовов или диаграммы последовательности.
Sen 07 дек. 2010, в 07:24
Andreas_D 07 дек. 2010, в 07:28
Этот вопрос прекрасен!
Autobyte 19 авг. 2013, в 17:54
Показать ещё 2 комментария
Поделиться:
eclipse-plugin
sequence-diagram
5 ответов
Лучший ответ
Этот пост предназначен для блок-схемы? Вы имеете в виду схему последовательности или диаграмму классов eUML — хороший инструмент для создания диаграммы классов или диаграммы последовательности Вы можете найти его на http://www.soyatec.com/main.php
Блок-схемы для начинающих (Блок схемы алгоритмов)
Abi 10 янв. 2011, в 09:01
Поделиться
ObjectAid — это бесплатный инструмент UML, который может создавать диаграммы последовательности. Другим коммерческим инструментом для создания диаграмм последовательности из существующего кода является Architexa. Я часто использую Architexa в своей повседневной работе.
Tim 07 янв. 2011, в 12:23
Поделиться
Кстати, Architexa также недавно выпустила бесплатную версию.
Vineet 23 авг.
2012, в 18:21
Наш инструмент Код Rocket для Eclipse может создавать как псевдокоды, так и блок-схемы с Java (и кода C/С++). Представления дизайна могут быть отредактированы, и любые изменения будут внесены в код. Это не бесплатный инструмент, но есть бесплатная 30-дневная пробная версия. Также он предназначен только для 32-разрядного Eclipse.
Alan Spark 30 апр. 2012, в 20:30
Поделиться
Просто быстрое обновление, Code Rocket для Eclipse теперь поддерживает 64-битные версии Eclipse.
Alan Spark 05 окт.
2013, в 09:32
Я не уверен, что для этого есть плагин, но для этого есть определенные способы. Если нет плагина, теоретически, можно было бы использовать подход таких методов для его создания. Один из таких методов, который приходит на ум, содержится в документе «Именование имен объектов» для диаграмм последовательностей с обратной конструкцией Атанаса Ронтева и Бет Харкнесс Коннелл.
Схемы последовательности UML обычно используются для представления взаимодействия объектов в программных системах. В этой работе рассматривается проблема извлечения диаграмм последовательности UML из существующего кода для целей понимания и тестирования программного обеспечения. Статический анализ для такой обратной инженерии должен отображать взаимодействующие объекты из кода в объекты диаграммы последовательности. Мы предлагаем алгоритм анализа межпроцессорного потока данных, который точно определяет, какие объекты являются получателями определенных сообщений, и назначает соответствующие объекты диаграмм для их представления. Наши эксперименты показывают, что большинство приемников сообщений могут быть точно определены, что приводит к высокоточному присвоению объектов для схем с обратной конструкцией.
Java — Нахождение максимального числа. Блок-схема
Источник: overcoder.net
Создайте блок-схему программно в Java
Блок-схемы могут быть полезны для понимания пошаговых алгоритмов разработки графического представления рабочих процессов и процессов. В некоторых сценариях вам может понадобиться создать блок-схемы для решения проблем. В этой статье рассказывается, как программно создать блок-схему на Java.
- Установите Java API для создания блок-схемы
- Создайте блок-схему программно, используя Java
Установите Java API для создания блок-схемы#
Вы можете создавать блок-схемы с помощью API Aspose.Diagram for Java. Он поддерживает создание и редактирование файлов Visio в форматах VSD, VSDX и других поддерживаемых форматах. Вы можете легко установить API, загрузив файл JAR из раздела Новые версии или используя следующие спецификации Maven:
AsposeJavaAPI Aspose Java API http://repository.aspose.com/repo/
com.aspose aspose-diagram 22.1 jdk16
Сделать блок-схему программно на Java#
Вы можете сделать блок-схему для объяснения шагов последовательности. Для создания блок-схем необходимо выполнить следующие шаги:
- Во-первых, создайте схему для создания диаграммы.
- Во-вторых, загрузите файл VSS в качестве основного для добавления фигур. используя класс Diagram.
- Добавление фигур и соединителей из схемы.
- Установите макет для блок-схемы.
- Наконец, напишите выходной файл с блок-схемой в формате VSDX, используя метод Save.
В приведенном ниже примере кода показано, как программно создать блок-схему на Java:
// Создать новую диаграмму int pageNumber = 0; String rectangleMaster = «Process», decisionMaster = «Decision», connectorMaster = «Dynamic connector»; Diagram diagram = new Diagram(«XANFLOWCHARTNEW.vss»); double width = 1, height = 1, pinX = 4, pinY = 10; long process1 = diagram.addShape(pinX, pinY, width, height, rectangleMaster, 0); Shape processShape1 = diagram.getPages().getPage(pageNumber).getShapes().getShape(process1); processShape1.getText().getValue().add(new Txt(«PROCESS»)); processShape1.setName(«PROCESS»); processShape1.getXForm().getLocPinX().getUfe().setF(«Width*0.5»); processShape1.getXForm().getLocPinY().getUfe().setF(«Height*0.5»); pinY = pinY — 2; long decision1 = diagram.addShape(pinX, pinY, width, height, decisionMaster, 0); Shape decisionShape1 = diagram.getPages().getPage(pageNumber).getShapes().getShape(decision1); decisionShape1.getText().getValue().add(new Txt(«DECISION»)); decisionShape1.setName(«DECISION»); decisionShape1.getXForm().getLocPinX().getUfe().setF(«Width*0.5»); decisionShape1.getXForm().getLocPinY().getUfe().setF(«Height*0.5»); pinY = pinY — 2; long process2 = diagram.addShape(pinX, pinY, width, height, rectangleMaster, 0); Shape processShape2 = diagram.getPages().getPage(pageNumber).getShapes().getShape(process2); processShape2.getText().getValue().add(new Txt(«PROCESS»)); processShape2.setName(«PROCESS»); processShape2.getXForm().getLocPinX().getUfe().setF(«Width*0.5»); processShape2.getXForm().getLocPinY().getUfe().setF(«Height*0.5»); pinY = pinY — 2; long process3 = diagram.addShape(pinX, pinY, width, height, rectangleMaster, 0); Shape processShape3 = diagram.getPages().getPage(pageNumber).getShapes().getShape(process3); processShape3.getText().getValue().add(new Txt(«PROCESS»)); processShape3.setName(«PROCESS»); processShape3.getXForm().getLocPinX().getUfe().setF(«Width*0.5»); processShape3.getXForm().getLocPinY().getUfe().setF(«Height*0.5»); pinY = pinY — 2; long process4 = diagram.addShape(pinX, pinY, width, height, rectangleMaster, 0); Shape processShape4 = diagram.getPages().getPage(pageNumber).getShapes().getShape(process4); processShape4.getText().getValue().add(new Txt(«PROCESS»)); processShape4.setName(«PROCESS»); processShape4.getXForm().getLocPinX().getUfe().setF(«Width*0.5»); processShape4.getXForm().getLocPinY().getUfe().setF(«Height*0.5»); long connecterId = diagram.addShape(new Shape(), connectorMaster, 0); diagram.getPages().getPage(pageNumber).connectShapesViaConnector(process1, ConnectionPointPlace.BOTTOM, decision1, ConnectionPointPlace.TOP, connecterId); long connecterId1 = diagram.addShape(new Shape(), connectorMaster, 0); diagram.getPages().getPage(pageNumber).connectShapesViaConnector(decision1, ConnectionPointPlace.BOTTOM, process2, ConnectionPointPlace.TOP, connecterId1); long connecterId2 = diagram.addShape(new Shape(), connectorMaster, 0); diagram.getPages().getPage(pageNumber).connectShapesViaConnector(process2, ConnectionPointPlace.BOTTOM, process3, ConnectionPointPlace.TOP, connecterId2); long connecterId3 = diagram.addShape(new Shape(), connectorMaster, 0); diagram.getPages().getPage(pageNumber).connectShapesViaConnector(process3, ConnectionPointPlace.BOTTOM, process4, ConnectionPointPlace.TOP, connecterId3); long connecterId4 = diagram.addShape(new Shape(), connectorMaster, 0); diagram.getPages().getPage(pageNumber).connectShapesViaConnector(decision1, ConnectionPointPlace.RIGHT, process4, ConnectionPointPlace.TOP, connecterId4); // Установить параметры автоматического макета LayoutOptions layoutOptions = new LayoutOptions(); // Метод layoutOptions.setLayoutStyle(LayoutStyle.FLOW_CHART); layoutOptions.setDirection(LayoutDirection.BOTTOM_TO_TOP); diagram.layout(layoutOptions); DiagramSaveOptions options = new DiagramSaveOptions(SaveFileFormat.VSDX); diagram.save(«sample.vsdx», options);
Предварительный просмотр блок-схемы примера вывода#
Кроме того, вы можете скачать входной и выходной файлы, чтобы проверить эту функцию.
Получить бесплатную лицензию API#
Вы можете оценить все функции API без каких-либо ограничений, запросив бесплатную временную лицензию.
Вывод#
В заключение вы узнали, как программно создавать блок-схемы с помощью Java. Вы можете настроить и изменить направление или форму блок-схемы в соответствии с вашими требованиями. Таким образом, вы можете легко внедрить эту функцию, используя вызовы API из своего Java-приложения. Кроме того, вы можете посетить API документацию, чтобы проверить некоторые другие функции API. Вы можете задать любой интересующий вас вопрос, обратившись на форум.
Смотрите также#
- Aspose.Diagram Product Family
- Create Flowchart in Java
- Flowchart Creator in Java
- Flowchart Maker in Java
- Java Create Flowchart
- Make Flowchart Java
Источник: blog.aspose.com
Изучаем Java
В языке Java, как и в любом другом языке программирования, есть условные операторы и циклы для управления потоком. Начнем с условных операторов, а затем перейдем к циклам. Наш экскурс завершится довольно неуклюжим оператором switch, который можно применять при проверке большого количества значений одного выражения.
Поток управления в языке Java построен точно так же, как и в языках С и C++, за исключением двух моментов. В нем нет оператора goto, однако существует версия оператора break с метками, который можно использовать для выхода из вложенного цикла (в языке С для этого пришлось бы применять оператор goto).
Область видимости блока
Перед изучением действительно управляющих структур нам необходимо побольше узнать о блоках.
Блок, или составной оператор, — это произвольное количество простых операторов языка Java, заключенных в фигурные скобки. Блоки определяют область видимости своих переменных. Блоки могут быть вложенными один в другой. Вот пример блока, вложенного внутрь другого блока в методе main.
public static void main (string [] args) int n; …
int k;
…
> // Переменная k определена только в этом блоке.
>
Однако в языке Java невозможно объявить одинаково названные переменные в двух вложенных блоках. Например, приведенный ниже фрагмент кода содержит ошибку и не будет скомпилирован.
public static void main(Strinq[] args)
int n; …
int k;
int n; // Ошибка — невозможно переопределить переменную n во внутреннем блоке.
…
>
>
В языке C++ переменные во вложенных блоках можно переопределять. Внутреннее определение затем маскируется внешним. Это может привести к ошибкам, поэтому в языке Java такой возможности нет.
Условные операторы
Условный оператор в языке Java имеет вид:
if (условие) оператор
Условие должно указываться в скобках.
В языке Java, как и в большинстве других языков программирования, часто необходимо выполнять много операторов в зависимости от выполнения одного условия. В этом случае используется блочный оператор, имеющий следующий вид.
if (yourSales >= target)
performance = «Удовлетворительно» ;
bonus = 100;
>
В этом коде все операторы, заключенные в фигурные скобки, будут выполнены, если значение переменной YourSales больше значения переменной target или равно ему (рис. 3.7).
Блок (иногда называемый составным оператором) позволяет включать несколько (простых) операторов в любую структуру языка Java, которая в ином случае состояла бы лишь из одного (простого) оператора.
Рис. 3.7. Блок-схема оператора if
Более общий условный оператор в языке Java выглядит так (рис. 3.8).
if (условие) оператор1 else оператор2
if (yourSales >= target)
performance = «Удовлетворительно»);
bonus = 100 + 0.01 * (yourSales — target);
>
else
performance = «Неудовлетворительно»;
bonus = 0;
>
Часть else не является обязательной. Группы операторов else объединяются с ближайшим оператором if. Таким образом, в коде
if (х оператор else соответствует второму оператору if.
Рис. 3.8. Блок-схема оператора /else
Часто встречаются также повторяющиеся операторы if (рис. 3.9).
if (yourSales >=2 * target)
performance = «Великолепно»;
bonus = 1000;
>
else if (yourSales >= 1.5 * target)
performance = «Отлично»;
bonus = 500;
>
else if (yourSales >= target)
performance = «Удовлетворительно» ;
bonus = 100;
>
else
System.out.println ( «Вы уволены» ) ;
>
Рис. 3.9. Блок-схема операторам if /else if (многовариантное ветвление)
Сергей Владимирцев
03.02.2011
Источник: www.java-study.ru