2015-01-08 2 views
-2

그래프를 가르치기위한 지원 소프트웨어 (여행 세일즈맨 문제, 그래프 채색 등 ...)를 개발 중이며 사용자에게을 허용합니다. 사용자가 알고리즘의 실행을 제어하고 변경 사항을 관찰 할 시간을 가질 수 있도록 알고리즘을 "단계별로"실행하십시오.사용자가 Java에서 알고리즘을 "단계별로"실행할 수 있도록 허용

Java에서 "단계별 실행"을 구현하는 방법에 대한 제안을 원합니다 ... 라이브러리가 있거나 다른 사람이 비슷한 것을 구현하고 코드를 공유 할 수 있다면.

감사합니다 :)


그들은 코드 또는 IDE는, 그들은

사용자 인터페이스는 다음과 같이 추가 될 것입니다 버튼에 내 프로그램의 전면 사용자가 될 것이다 해제하는 대한 액세스가되지 않습니다 등 다음 단계, 일시 정지, :

enter image description here

+7

대화식 디버거를 사용할 수 없습니까? 모든 최신 IDE에는 코드를 단계별로 처리하는 매우 정교한 방법이 있습니다. – sprinter

+1

코드 나 IDE에 대한 액세스 권한이 없습니다. 내 프로그램의 프론트 사용자가됩니다. – Johny

+0

그러면 기본적으로 대화 형 디버거와 유사한 프로그램을 작성하고 있습니다. –

답변

1

하나의 옵션 t를 사용하는 수 있습니다 그는 Java Debug Interface (JDI)입니다. 오라클은 these examples을 제공합니다.

그러나 내가하는 일이 아닙니다. 보이지 않는 Java 소스 코드의 한 단계는 시각적 인 변화와 일치하지 않을 수 있습니다. (또한 JDI를 아직 사용하지 않았고 얼마나 복잡한 지 알지 못합니다.)

사용자에게 의사 코드를 표시하는 것이 좋습니다. 내부적으로는 각 노드가 하나의 단계를 나타내며 실행할 수 있도록 병렬로 abstract syntax tree,을 보유합니다. 하나의 의사 코드 알고리즘 단계는 둘 이상의 Java 문에 해당 할 수 있습니다. (의사 코드와 AST를 병렬로 작성하는 경우 파서를 작성할 필요가 없습니다.)

노드를 실행하면서 트리를 탐색하려면 클래스가 필요합니다. 실행, 스테핑 또는 일시 정지 상태를 포함하여 실행 상태를 유지합니다. 워커는 국가를 주시하고 그에 따라 행동해야합니다.

워커는 워커 스레드에서 실행해야 알고리즘을 실행하는 동안 실행, 단계 및 일시 중지 할 UI 버튼을 누를 수 있습니다.

+0

나는이 두 가지 옵션을보고 있었지만 JDI가 목적을 달성 할 수 있을지 의심 스러웠다. AST가 어떻게 사용될 것인지 이해하지 못했다. 당신의 설명이 많은 도움이되었다. 나는 조금 더 연구를 계속할 것입니다 ... :) – Johny

+0

당신을 진심으로 환영합니다. 나는 Knuth-Morris-Pratt 문자열 매칭 알고리즘으로 비슷한 해를 보냈습니다. 너와 행운을 빌어. –

관련 문제