LMNtal LMNtal LMNtal JAVA JAVA JAVA LMNtal LMNtal LMNtal

Similar documents
Thread

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

r2.dvi

r2.dvi

Safari AppletViewer Web HTML Netscape Web Web 15-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web up

text_13.dvi

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

Java言語 第1回

text_12.dvi

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

r3.dvi

GUIプログラムⅣ

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

ÿþ˜u#u·0¹0Æ0à0

問1

ガイダンス

ガイダンス

r14.dvi

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

データ構造とアルゴリズム論

Microsoft PowerPoint - OOP.pptx

< F2D E E6A7464>

ガイダンス

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

ガイダンス

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

r4.dvi

ガイダンス

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

< F2D A838B838D96402E6A7464>

:30 12:00 I. I V II. III. IV. ( a d) V. VI : A ActionListener aa addactionlistener AE ActionEvent K KeyListener ak addkeyliste

< F2D F B834E2E6A7464>

< F2D834F838C A815B A CC>

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

B 10 : N ip2003f10.tex B : 9/12/ :02 p.1/71

<4D F736F F F696E74202D AC C8899E D834F E >

< F2D A839382CC906A2E6A7464>

GUIプログラムⅤ

< F2D B825082CC96E291E82E6A7464>

次の演習課題(1),(2)のプログラムを完成させよ

Java演習(9) -- クラスとメソッド --

< F2D82518CC282CC D2E6A7464>

< F2D B838A835882CC8CF68EAE2E6A7464>

< F2D89BA8EE882C E6A7464>

I. (i) Java? (A). 2Apples (B). Vitamin-C (C). Peach21 (D). Pine_Apple (ii) Java? (A). Java (B). Java (C). Java (D). JavaScript Java JavaScript Java (i

Java言語 第1回

PowerPoint プレゼンテーション

< F2D825282CC947B909482CC A815B83682E6A>

r3.dvi

上達Java解答.doc

< F2D82B682E182F182AF82F12E6A7464>

PowerPoint Presentation

< F2D92DE82E8914B82CC977088D32E6A7464>

2

Microsoft PowerPoint - prog13.ppt

5 p Point int Java p Point Point p; p = new Point(); Point instance, p Point int 2 Point Point p = new Point(); p.x = 1; p.y = 2;

I HTML HashMap (i) (ii) :.java import java.net.*; import java.io.*; import java.util.hashmap; public class SimpleStopWatch { public static voi


Chapter 20. [ ] ; [ ] = new [ ] ; Color colors [ ] = new Color[ 20 ]; // 20 Button operations [ ] = new Button[ 10 ]; // 10 colors[ 3 ] = new Color( 1

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

PowerPoint Presentation

public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperforme

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

Microsoft PowerPoint - prog13.ppt

< F2D8EA CE909482CC92EA82852E6A7464>

untitled

r14.dvi

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

r8.dvi

Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

II Java :30 12:00 I. I IV II. III. IV. ( a d) V. : this==null, T == N A ActionListener C class D actionperformed G getsource I implements K

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

/ ( ) 8/7/ :21 p.2/64

GUIプログラムⅡ

Java演習(4) -- 変数と型 --

アプレットの作成



I 4 p.2 4 GUI java.awt.event.* import /* 1 */ import mouseclicked MouseListener implement /* 2 */ init addmouselistener(this) this /* 3 */ this mousec

Microsoft Word - Java4.DOC

アジェンダ 1 グラフィカルなインタフェース GUI(Graphical User Interface) の基礎 2 Swing を利用する Swing の基礎知識 2

. IDE JIVE[1][] Eclipse Java ( 1) Java Platform Debugger Architecture [5] 3. Eclipse GUI JIVE 3.1 Eclipse ( ) 1 JIVE Java [3] IDE c 016 Information Pr

Java言語 第1回

try catch Exception Java try catch try { } catch ( Exception e ) { } e 16-1 try catch 0 try { int x = 0; int y = 10 / x; } catch ( Exception e ) { Sys

KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped

public class MyFrame { private JPanel panel1; private JPanel panel2; private JPanel panel3; private JPanel panel4; private JLabel label1; private JTex


2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

Java 2 - Lesson01

Java 2 - Lesson01

Microsoft PowerPoint - prog12.ppt

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

Prog1_12th

Java 2 - Lesson01

Microsoft PowerPoint - prog11.ppt

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

データ構造とアルゴリズム論

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

Transcription:

2003 LMNtal GUI GUI : 2004 2 5 : : 1G00P024-3

LMNtal LMNtal LMNtal JAVA JAVA JAVA LMNtal LMNtal LMNtal

1 1 2 LMNtal 3 2.1 LMNtal.............................. 3 2.1.1 Atom........................ 3 2.1.2............................... 3 2.1.3............................. 3 2.1.4......................... 3 2.2 LMNtal............................ 5 2.3.............................. 6 2.4.............................. 6 2.5........................... 7 3 GUI 8 3.1.................................. 8 3.2 Java........................ 8 3.3 MVC.............................. 8 3.4............ 9 3.4.1 Control........................ 9 3.4.2.................... 11 3.4.3........................ 11 3.4.4......................... 12 3.5.............................. 13 3.6 LMNtal MVC........................ 16 3.7.............................. 16 3.8............................ 17 3.9............... 18 3.9.1 JAVA........................ 18 3.9.2....................... 18 3.9.3....................... 19 i

4 20 4.1.................................. 20 4.1.1.......................... 20 4.1.2.......................... 20 4.1.3 MVC.......................... 26 4.1.4 denntaku.......................... 26 4.1.5 byouga........................... 27 4.1.6 control........................... 27 4.1.7................ 28 4.2.............................. 30 4.3........................ 30 5 34 5.1............................ 34 5.2............................. 34 5.3 Runtime................................ 34 5.4.............................. 34 35 36 A 37 A.1 2................................. 37 A.2 3................................. 41 ii

1.1 LMNtal.................... 1 2.1 LMNtal....................... 4 4.1.............................. 30 4.2 Boud................................. 33 iii

2.1 LMNtal.............................. 5 iv

1 Grid LMNtal LMNtal LMNtal LMNtal LMNtal a(x1),c(x1,x2),a(x2) X1 X2 a c a = a(x1),c(x1,x2),a(x2) 1.1: LMNtal LMNtal GUI JAVA GUI LMNtal LMNtal 1

GUI LMNtal GUI GUI 2

2 LMNtal 2.1 LMNtal LMNtal 2.1.1 Atom a(x,y) a(y,x) 2.1.2 2.1.3 LMNtal 2.1.4 append 3

res a c c n res c a c 1 2 1 2 c c n c c 3 4 3 4 res c c c c n 1 2 3 4 <rule1> <rule2> Z0 X0 X Z0 Z X Z0 X0 Z0 a c :- c a a n :- Y A A Y Y n n Y :- 2.1: LMNtal 4

2.2 LMNtal X p LMNtal P P ::= 0 (null) p( X) (atom) P,P (composition) {P (cell) {P/ (stable cell) (T :- T) (reaction rule) T T ::= 0 (null) p( X) (atom) T,T (composition) {T (cell) {T/ (stable cell) @p (rule variable) $p(fvspec) (process variable) 2.1: LMNtal $p {a(x),$p $p a @p FVspec T P P P P {P P 5

append { append(lst1, Lst2, Res), res(res), c(v1, N1, Lst1), c(v2, N2, N1), n(n2), no1(v1), no2(v2), c(v3, N3, Lst2), c(v4, N4, N3), n(v4), no3(v3), no4(v4), ( append(x0,y,z0), c(a,x,x0) :- c(a,z,z0), append(x,y,z) ), ( append(x0,y,z0), n(x0) :- Y=Z0 ) 2.3 LMNtal JAVA LMNtal JAVA LMNtal JAVA /*inline*/ JAVA [[]] [[/*inline*/ System.out.println("inline");]] 2.4 a 6

a(x),5(x) b(x1),s(x1,x),5(x) b(x1),6(x1) 2.5 p(x),$i[x] :- $i < $c, 3($c) q(y),q(z),$i[y],$i[z]. $i p(x),x=0 :- q(y),q(z),y=0,z=0. p(x),x=1 :- q(y),q(z),y=1,z=1. p(x),x=2 :- q(y),q(z),y=2,z=2. p($a):-int($a) q($a),q($a). p q 7

3 GUI 3.1 LMNtal 3.2 Java JAVA java.util.eventobject 3.3 MVC MVC 8

MVC MVC LMNtal MVC 3.4 3.4.1 Control 9

class Control { Object[] objects; int objectid; public Control(){ objects = new Object[100]; objectid = 0; addpanel(); public String addpanel(){ LMNtalpanel g = new LMNtalpanel(); Frame lmntalframe = new LMNtalframe(g); objects[objectid] = g; objectid++; lmntalframe.show(); return Integer.toString(objectid-1); n){ public void addline(string x1,string x2, String y1,string y2,string Line line = new Line( Integer.parseInt(x1),Integer.parseInt(x2), Integer.parseInt(y1),Integer.parseInt(y2)); ((LMNtalpanel)objects[Integer.parseInt(n)]).addDraw(line); ((LMNtalpanel)objects[Integer.parseInt(n)]).repaint(); public String addbutton(string a,string b){ JButton button = new JButton(a); ((LMNtalpanel)objects[Integer.parseInt(b)]).add(button); ((LMNtalpanel)objects[Integer.parseInt(b)]).repaint(); objects[objectid] = button; objectid++; return Integer.toString(objectid-1); public void addlistener(string id,abstractmembrane mem){ int j = Integer.parseInt(id); if(objects[i] instanceof JButton){ new ButtonListener((JButton)objects[j],mem); 10

addpanel addbutton Control addline addlistener Control LMNtal ID ID ID LMNtal ID 3.4.2 LMNtal (addbutton(x,id,label):-[[/*inline*/ String s = Sample.control.addButton( me.getarg(0).getatom().tostring(), me.getarg(1).getatom().tostring()); Functor f1 = new Functor(me.getArg(2).getAtom().toString(),1); Functor f2 = new Functor(s,1); Atom a = me.getmem().newatom(f1); Atom b = me.getmem().newatom(f2); Link l1 = new Link(a,0); Link l2 = new Link(b,0); a.args[0] = l2; b.args[0] = l1; ]](X,ID,LABEL)), Control addbutton addbutton ID ID 3.4.3 11

buttonevent(x),label(x) buttonevent buttonevent(x):-( buttonevent 3.4.4 (addlistener(x):-[[/*inline*/ Sample.control.addListener( me.getarg(0).getatom().tostring(),me.getmem()); ]](X)) ID addlistener 12

class ButtonListener implements ActionListener{ AbstractMembrane mem; JButton button; String label; public ButtonListener(JButton button1,abstractmembrane mem1){ button = button1; label = button.gettext(); mem = mem1; button.addactionlistener(this); public void actionperformed(actionevent evt){ Functor f1 = new Functor("buttonevent",1); Functor f2 = new Functor(label,1); Atom a = mem.newatom(f1); Atom b = mem.newatom(f2); Link l1 = new Link(a,0); Link l2 = new Link(b,0); a.args[0] = l2; b.args[0] = l1; actionperformed 3.5 paintcomponent k paintcomponent Draw Draw 13

class Draw{ Draw ndraw; public void draw(graphics g){ paintcomponent Draw Drawn draw class Line extends Draw{ int x1,x2,y1,y2; public Line(int xx1,int xx2,int yy1,int yy2){ x1 = xx1;x2 = xx2;y1 = yy1;y2 = yy2; public void draw(graphics g){ g.drawline(x1,x2,y1,y2); Draw paintcomponent 14

class LMNtalpanel extends JPanel{ Draw ldraw,cdraw; public LMNtalpanel(){ public void paintcomponent(graphics g){ cdraw = ldraw; while(cdraw!= null){ cdraw.draw(g); cdraw = cdraw.ndraw; public void adddraw(draw draw){ draw.ndraw = ldraw; ldraw = draw; repaint(); public void resetdraw(){ ldraw = null; paintcomponent Draw adddraw Draw resetdraw Draw LMNtal ID (line(x1,y1,x2,y2,id):-[[/*inline*/ Sample.control.addLine( me.getarg(0).getatom().tostring(), me.getarg(1).getatom().tostring(), me.getarg(2).getatom().tostring(), me.getarg(3).getatom().tostring(), me.getarg(4).getatom().tostring()); ]](X1,Y1,X2,Y2,ID)) Draw repaint LMNtal repaint repaint repaint LMNtal 15

(repaint(x):-[[/*inline*/ ((LMNtalpanel)Sample.control.objects [Integer.parseInt( me.getarg(0).getatom().tostring()]).resetdraw(); ]](X)), Draw 3.6 LMNtal MVC LMNtal buttonevent { model(x1){a(x1) view(x2){a(x2),buttonevent(x),label(x) (view(x2){a(x2),buttonevent(x),$p,model(x1),{a(x1),$q:- view(x2){a(x2),$p,model(x1){a(x1),add(x),$q) 3.7 repaint LINE LINE label(x),line(x1,y1,x2,y2,id,x) LINE LINE 16

(line(x1,y1,x2,y2,id,x):- int(x1),int(y1),int(x2),int(y2),int(id) [[/*inline*/ Sample.control.addLine( me.getarg(0).getatom().tostring(), me.getarg(1).getatom().tostring(), me.getarg(2).getatom().tostring(), me.getarg(3).getatom().tostring(), me.getarg(4).getatom().tostring()); ]](X1,Y1,X2,Y2,ID),line(X1,Y1,X2,Y2,ID,X)) LINE LINE repaint paint(l1),{a(l1),line(x1,y1,x2,y2,id),$p, paintzumi(l2),{a(l2),$q, (paint(l1){a(l1),line(x1,y1,x2,y2,id), paintzumi(l2),{a(l2):- int(x1),int(y1),int(x2),int(y2),int(id) [[/*inline*/ Sample.control.addLine( me.getarg(0).getatom().tostring(), me.getarg(1).getatom().tostring(), me.getarg(2).getatom().tostring(), me.getarg(3).getatom().tostring(), me.getarg(4).getatom().tostring()); ]](X1,Y1,X2,Y2,ID), paint(l1){a(l1),$p, paintzumi(l2),{a(l2),line(x1,y1,x2,y2,id),$q) 3.8 addbutton 17

(copyint(s(x1),x2,x3,x4,x5):-copyint(x1,s(x2),s(x3),x4,x5)), (copyint(0,x2,x3,x4,x5):-x2=x4,x3=x5), (counter(s(x)):-copyint(x,0,0,x2,x3),counter(x2), addbutton(s(x3),id,label)), (counter(0):-()) button button(x):-addlistener(x) 3.9 3.9.1 JAVA Java paintcomponent Graphics ID Graphics paintcomponent ID Java ID 3.9.2 paint paintzumi paint paintzumi 18

3.9.3 Java paintcomponent Graphics line Java LMNtal LMNtal 19

4 4.1 4.1.1 x y x x y x 4.1.2 [[/*inline_define*/ import java.util.*; import javax.swing.*; import javax.swing.uimanager; import java.awt.*; import java.awt.event.*; class Sample { public static Control control = new Control(); class Control { Object[] objects; int objectid; public Control(){ objects = new Object[100]; 20

objectid = 0; addpanel(); public String addpanel(){ LMNtalpanel g = new LMNtalpanel(); Frame lmntalframe = new LMNtalframe(g); objects[objectid] = g; objectid++; lmntalframe.show(); return Integer.toString(objectid-1); public void addline(string x1,string x2, String y1,string y2,string n){ Line line = new Line(Integer.parseInt(x1), Integer.parseInt(x2), Integer.parseInt(y1), Integer.parseInt(y2)); ((LMNtalpanel)objects[Integer.parseInt(n)]).addDraw(line); ((LMNtalpanel)objects[Integer.parseInt(n)]).repaint(); public void addatom(string x,string y,string s,string n){ Atomm atom = new Atomm( Integer.parseInt(x),Integer.parseInt(y),s); ((LMNtalpanel)objects[Integer.parseInt(n)]).addDraw(atom); ((LMNtalpanel)objects[Integer.parseInt(n)]).repaint(); public String addbutton(string a,string b){ JButton button = new JButton(a); ((LMNtalpanel)objects[Integer.parseInt(b)]).add(button); ((LMNtalpanel)objects[Integer.parseInt(b)]).repaint(); objects[objectid] = button; objectid++; return Integer.toString(objectid-1); public void resetdraw(string s){ ((LMNtalpanel)objects[Integer.parseInt(s)]).resetdraw(); public void addlistener(string id,abstractmembrane mem){ int j = Integer.parseInt(id); if(objects[j] instanceof JButton){ new ButtonListener((JButton)objects[j],mem); 21

class LMNtalframe extends JFrame{ LMNtalpanel g; public LMNtalframe(LMNtalpanel g1){ settitle( LMNtal ); setsize(200,200); g = g1; addwindowlistener(new WindowAdapter(){ public void windowclosing(windowevent E){ System.exit(0); ); Container contentpane = getcontentpane(); contentpane.add(g); class LMNtalpanel extends JPanel{ Draw ldraw,cdraw; public LMNtalpanel(){ public void paintcomponent(graphics g){ cdraw = ldraw; while(cdraw!= null){ cdraw.draw(g); cdraw = cdraw.ndraw; public void adddraw(draw draw){ draw.ndraw = ldraw; ldraw = draw; repaint(); public void resetdraw(){ ldraw = null; 22

class ButtonListener implements ActionListener{ AbstractMembrane mem; JButton button; String label; public ButtonListener(JButton button1,abstractmembrane mem1){ button = button1; label = button.gettext(); mem = mem1; button.addactionlistener(this); public void actionperformed(actionevent evt){ Functor f1 = new Functor( buttonevent,1); Functor f2 = new Functor(label,1); Atom a = mem.newatom(f1); Atom b = mem.newatom(f2); Link l1 = new Link(a,0); Link l2 = new Link(b,0); a.args[0] = l2; b.args[0] = l1; class Draw{ Draw ndraw; public void draw(graphics g){ class Line extends Draw{ int x1,x2,y1,y2; public Line(int xx1,int xx2,int yy1,int yy2){ x1 = xx1;x2 = xx2;y1 = yy1;y2 = yy2; public void draw(graphics g){ 23

g.drawline(x1,x2,y1,y2); class Atomm extends Draw{ int x,y; String s; public Atomm(int xx,int yy,string ss){ x = xx;y = yy;s = ss; public void draw(graphics g){ g.setcolor(color.black); g.filloval(x,y,30,30); g.setcolor(color.blue); g.filloval(x+2,y+2,26,26); g.setcolor(color.black); g.drawstring(s,x+10,y+18) ]], { sumzumi, (denntaku(l1),{a(l1),sumzumi,c(x), byouga(l2),{a(l2),$p :- int(x) denntaku(l1),{a(l1),c(x), byouga(l2),{a(l2),c(x),$p), (byouga(l1),{a(l1),int(x1),$p,c(x):- sum(x1,x2,x3),mul(x,10,0,x2),c(x3), mulzumi,byouga(l1),{a(l1),$p), (byouga(l1),{a(l1),$p,c(x),mulzumi:- int(x) byouga(l1),{a(l1),c(x),$p,c(x)), (byouga(l1),{a(l1),plus,$p, denntaku(l2),{a(l2),$q,c(x):- byouga(l1),{a(l1),$p, denntaku(l2),{a(l2),add(x),$q,c(0)), (sum(s(x1),x2,x3):-sum(x1,s(x2),x3)), 24

(sum(0,x2,x3):-x2 = X3,sumzumi), (mul(s(x1),x2,x3,x4),sumzumi:- mul(x1,x2,x5,x4),sum(x2,x3,x5)), (mul(0,x2,x3,x4),sumzumi:- X3 = X4,sumzumi), denntaku(l1),{a(l1), c(0), (add(x1),c(x2):-sum(x1,x2,x3),c(x3)), (sum(s(x1),x2,x3):-sum(x1,s(x2),x3)), (sum(0,x2,x3):-x2 = X3,sumzumi), byouga(l2), {a(l2), (line(x1,y1,x2,y2,id):-[[/*inline*/ Sample.control.addLine( me.getarg(0).getatom().tostring(), me.getarg(1).getatom().tostring(), me.getarg(2).getatom().tostring(), me.getarg(3).getatom().tostring(), me.getarg(4).getatom().tostring()); ]](X1,Y1,X2,Y2,ID)), (atom(x,y,l,id):-[[/*inline*/ Sample.control.addAtom( me.getarg(0).getatom().tostring(), me.getarg(1).getatom().tostring(), me.getarg(2).getatom().tostring(), me.getarg(3).getatom().tostring()); ]](X,Y,L,ID)), (addbutton(x,id,label):-[[/*inline*/ String s = Sample.control.addButton( me.getarg(0).getatom().tostring(), me.getarg(1).getatom().tostring()); Functor f1 = new Functor( me.getarg(2).getatom().tostring(),1); Functor f2 = new Functor(s,1); Atom a = me.getmem().newatom(f1); Atom b = me.getmem().newatom(f2); Link l1 = new Link(a,0); Link l2 = new Link(b,0); a.args[0] = l2; b.args[0] = l1; 25

]](X,ID,LABEL)), (addlistener(x):-[[/*inline*/ Sample.control.addListener( me.getarg(0).getatom().tostring(),me.getmem()); ]](X)), (repaint(x):-[[/*inline*/ Sample.control.resetdraw( me.getarg(0).getatom().tostring()); ]](X),repaintzumi), (c(x):-repaint(0),c(x)), (c(x),repaintzumi:-addatom(50,100,x)), (buttonevent(x),+(x):-plus), (buttonevent(x):-int(x) int(x)), addbutton(1),addbutton(2),addbutton(3), addbutton(4),addbutton(5),addbutton(6), addbutton(7),addbutton(8),addbutton(9),addbutton(+) 4.1.3 MVC denntaku model byouga control control byouga denntaku denntaku byouga 4.1.4 denntaku denntaku c (sum(s(x1),x2,x3):-sum(x1,s(x2),x3)), (sum(0,x2,x3):-x2 = X3,sumzumi) sum X1,X2,X3 X1 X2 X3 26

X1 X2 sum X1 X2 X3 X3 sumuzumi denntaku add c sumzumi 4.1.5 byouga byouga atom, line addbutton, addlistener byouga addbutton(1) addbutton(9) addbutton(+) byouga (buttonevent(x),+(x):-plus), (buttonevent(x):-int(x) int(x)) plus int (c(x):-repaint(0),c(x)), (c(x),repaintzumi:-addatom(50,100,x)) byouga c c 4.1.6 control control c byouga int c byouga (byouga(l1),{a(l1),int(x1),$p,c(x):- sum(x1,x2,x3),mul(x,10,0,x2),c(x3), byouga(l1),{a(l1),$p), 27

(mul(s(x1),x2,x3,x4),sumzumi:- mul(x1,x2,x5,x4),sum(x2,x3,x5)), (mul(0,x2,x3,x4),sumzumi:- X3 = X4,sumzumi), X1,X2,X3,X4 X3 X1 X3 X2 X1 X1 X4 X3 byouga plus denntaku add (byouga(l1),{a(l1),plus,$p, denntaku(l2),{a(l2),$q,c(x):- byouga(l1),{a(l1),$p, denntaku(l2),{a(l2),add(x),$q,c(0)) denntaku sumzumi byouga (denntaku(l1),{a(l1),sumzumi,c(x), byouga(l2),{a(l2),$p :- int(x) denntaku(l1),{a(l1),c(x), byouga(l2),{a(l2),c(x),$p) 4.1.7 GUI GUI 28

{ sumzumi, (denntaku(l1),{a(l1),sumzumi,c(x), byouga(l2),{a(l2),$p :- int(x) denntaku(l1),{a(l1),c(x), byouga(l2),{a(l2),c(x),$p), (byouga(l1),{a(l1),int(x1),$p,c(x):- sum(x1,x2,x3),mul(x,10,0,x2),c(x3), byouga(l1),{a(l1),$p), (byouga(l1),{a(l1),plus,$p, denntaku(l2),{a(l2),$q,c(x):- byouga(l1),{a(l1),$p, denntaku(l2),{a(l2),add(x),$q,c(0)), (sum(s(x1),x2,x3):-sum(x1,s(x2),x3)), (sum(0,x2,x3):-x2 = X3,sumzumi), (mul(s(x1),x2,x3,x4),sumzumi:- mul(x1,x2,x5,x4),sum(x2,x3,x5)), (mul(0,x2,x3,x4),sumzumi:- X3 = X4,sumzumi), denntaku(l1),{a(l1), c(0), (add(x1),c(x2):-sum(x1,x2,x3),c(x3)), (sum(s(x1),x2,x3):-sum(x1,s(x2),x3)), (sum(0,x2,x3):-x2 = X3,sumzumi), byouga(l2), {a(l2), (c(x):-repaint(0),c(x)), (c(x),repaintzumi:-addatom(50,100,x)), (buttonevent(x),+(x):-plus), (buttonevent(x):-int(x) int(x)), addbutton(1),addbutton(2),addbutton(3), addbutton(4),addbutton(5),addbutton(6), addbutton(7),addbutton(8),addbutton(9),addbutton(+), c(0) 29

4.2 line(10,10,30,10),line(30,10,30,30),line(10,10,10,30), line(10,30,30,30),atom(30,30,a) 4.1: 4.3 LMNtal Java 30

class Bound{ int x1,y1; boolean xb,yb; public Bound(int xx,int yy){ x1 = xx; y1 = yy; public String[] next(string x2,string y2){ int x = Integer.parseInt(x2); int y = Integer.parseInt(y2); if(!xb){ x = x+5; if(x>x1)xb = true; else{ x = x-5; if(x<0)xb = false; if(!yb){ y = y+5; if(y>y1)yb = true; else{ y = y-5; if(y<0)yb = false; String[] s = new String[2]; s[0] = Integer.toString(x); s[1] = Integer.toString(y); return s; 31

(a(x,y):-[[/*inline*/string[] ss = Control.bound.next(me.nth(0),me.nth(1)); me.getarg(0).getatom().changename(ss[0]); me.getarg(1).getatom().changename(ss[1]); me.changename("az"); ]](X,Y)), (az(x,y):-[[/*inline*/sample.control.objects[0].resetdraw(); System.out.println("az"); Sample.control.addAtom(me.getArg(0).getAtom().toString(), me.getarg(1).getatom().tostring(), "1","0"); me.changename("a"); Thread.sleep(100); ]](X,Y)) 32

4.2: Boud 33

5 5.1 5.2 LMNtal sum 5.3 Runtime LMNtal 5.4 GUI 34

[1], : Programming with Logical Links, 19, 2002. [2] : Java LMNtal,,,2003. [3] : LMNtal Runtime Java,,,2003. [4] Cay S.Horstmann,Gary Cornell : CoreJAVA2 volume1, ASCII, 2000. [5] Sun,microsystems http://java.sun.com [6] Dennis Gannon, Randall Bramley, Geoffrey Fox, Shava Smallen, Al Rossi, Rachana Ananthakrishnan, Felipe Bertrand, Ken Chiu, Matt Farrellee, Madhu Govindaraju, Sriram Krishnan, Lavanya Ramakrishnan, Yogesh Simmhan, Alek Slominski, Yu Ma, Caroline Olariu, Nicolas Rey-Cenvaz : Programming the Grid: Distributed Software Components, P2P and Grid Web Services for Scientific Applications, 2002. http://www.extreme.indiana.edu/~gannon /ProgGrid/ProgGridsHTML.htm 35

LMNtal LMNtal Java 36

A A.1 2 [[/*inline_define*/ import java.util.*; import javax.swing.*; import javax.swing.uimanager; import java.awt.*; import java.awt.event.*; class Sample { public static Control control = new Control(); class Control { Object[] objects; int objectid; public static Bound bound; public Control(){ objects = new Object[100]; objectid = 0; addpanel(); bound = new Bound(240,200); public String addpanel(){ LMNtalpanel g = new LMNtalpanel(); Frame lmntalframe = new LMNtalframe(g); objects[objectid] = g; objectid++; lmntalframe.show(); return Integer.toString(objectid-1); 37

public void addline(string x1,string x2, String y1,string y2,string n){ Line line = new Line( Integer.parseInt(x1),Integer.parseInt(x2), Integer.parseInt(y1),Integer.parseInt(y2)); ((LMNtalpanel)objects[Integer.parseInt(n)]).addDraw(line); ((LMNtalpanel)objects[Integer.parseInt(n)]).repaint(); public void addatom(string x,string y,string s,string n){ Atomm atom = new Atomm( Integer.parseInt(x),Integer.parseInt(y),s); ((LMNtalpanel)objects[Integer.parseInt(n)]).addDraw(atom); ((LMNtalpanel)objects[Integer.parseInt(n)]).repaint(); public String addbutton(string a,string b){ JButton button = new JButton(a); ((LMNtalpanel)objects[Integer.parseInt(b)]).add(button); ((LMNtalpanel)objects[Integer.parseInt(b)]).repaint(); objects[objectid] = button; objectid++; return Integer.toString(objectid-1); public void addlistener(string id,abstractmembrane mem){ class LMNtalframe extends JFrame{ LMNtalpanel g; public LMNtalframe(LMNtalpanel g1){ settitle("lmntal"); setsize(240,200); g = g1; addwindowlistener(new WindowAdapter(){ public void windowclosing(windowevent E){ System.exit(0); 38

); Container contentpane = getcontentpane(); contentpane.add(g); class LMNtalpanel extends JPanel{ Draw ldraw,cdraw; public LMNtalpanel(){ public void paintcomponent(graphics g){ cdraw = ldraw; while(cdraw!= null){ cdraw.draw(g); cdraw = cdraw.ndraw; public void adddraw(draw draw){ draw.ndraw = ldraw; ldraw = draw; repaint(); public void resetdraw(){ ldraw = null; class ButtonListener implements ActionListener{ AbstractMembrane mem; JButton button; String label; public ButtonListener(JButton button1,abstractmembrane mem1){ button = button1; label = button.gettext(); mem = mem1; button.addactionlistener(this); public void actionperformed(actionevent evt){ Functor f1 = new Functor("buttonevent",1); 39

Functor f2 = new Functor(label,1); Atom a = mem.newatom(f1); Atom b = mem.newatom(f2); Link l1 = new Link(a,0); Link l2 = new Link(b,0); a.args[0] = l2; b.args[0] = l1; class Draw{ Draw ndraw; public void draw(graphics g){ class Line extends Draw{ int x1,x2,y1,y2; public Line(int xx1,int xx2,int yy1,int yy2){ x1 = xx1;x2 = xx2;y1 = yy1;y2 = yy2; public void draw(graphics g){ g.drawline(x1,x2,y1,y2); class Atomm extends Draw{ int x,y; String s; public Atomm(int xx,int yy,string ss){ x = xx;y = yy;s = ss; public void draw(graphics g){ g.setcolor(color.black); g.filloval(x,y,30,30); g.setcolor(color.blue); g.filloval(x+2,y+2,26,26); g.setcolor(color.black); g.drawstring(s,x+10,y+18); 40

]], (line(x1,y1,x2,y2):-[[/*inline*/ Sample.control.addLine(me.getArg(0).getAtom().toString(), me.getarg(1).getatom().tostring(), me.getarg(2).getatom().tostring(), me.getarg(3).getatom().tostring(),"0"); ]](X1,Y1,X2,Y2)), (atom(x,y,l):-[[/*inline*/ Sample.control.addAtom(me.getArg(0).getAtom().toString(), me.getarg(1).getatom().tostring(), me.getarg(2).getatom().tostring(), "0"); ]](X,Y,L)), line(10,10,30,10),line(30,10,30,30),line(10,10,10,30),line(10,30,30,30), atom(30,30,a) A.2 3 [[/*inline_define*/ import java.util.*; import javax.swing.*; import javax.swing.uimanager; import java.awt.*; import java.awt.event.*; class Sample { public static Control control = new Control(); class Control { Object[] objects; int objectid; 41

public static Bound bound; public Control(){ objects = new Object[100]; objectid = 0; addpanel(); bound = new Bound(240,200); public String addpanel(){ LMNtalpanel g = new LMNtalpanel(); Frame lmntalframe = new LMNtalframe(g); objects[objectid] = g; objectid++; lmntalframe.show(); return Integer.toString(objectid-1); n){ public void addline(string x1,string x2,string y1,string y2,string Line line = new Line(Integer.parseInt(x1),Integer.parseInt(x2), Integer.parseInt(y1),Integer.parseInt(y2)); ((LMNtalpanel)objects[Integer.parseInt(n)]).addDraw(line); ((LMNtalpanel)objects[Integer.parseInt(n)]).repaint(); public void addatom(string x,string y,string s,string n){ Atomm atom = new Atomm(Integer.parseInt(x),Integer.parseInt(y),s); ((LMNtalpanel)objects[Integer.parseInt(n)]).addDraw(atom); ((LMNtalpanel)objects[Integer.parseInt(n)]).repaint(); public String addbutton(string a,string b){ JButton button = new JButton(a); ((LMNtalpanel)objects[Integer.parseInt(b)]).add(button); ((LMNtalpanel)objects[Integer.parseInt(b)]).repaint(); objects[objectid] = button; objectid++; return Integer.toString(objectid-1); public void addlistener(string id,abstractmembrane mem){ 42

class LMNtalframe extends JFrame{ LMNtalpanel g; public LMNtalframe(LMNtalpanel g1){ settitle("lmntal"); setsize(240,200); g = g1; addwindowlistener(new WindowAdapter(){ public void windowclosing(windowevent E){ System.exit(0); ); Container contentpane = getcontentpane(); contentpane.add(g); class LMNtalpanel extends JPanel{ Draw ldraw,cdraw; public LMNtalpanel(){ public void paintcomponent(graphics g){ cdraw = ldraw; while(cdraw!= null){ cdraw.draw(g); cdraw = cdraw.ndraw; public void adddraw(draw draw){ draw.ndraw = ldraw; ldraw = draw; repaint(); public void resetdraw(){ ldraw = null; 43

class ButtonListener implements ActionListener{ AbstractMembrane mem; JButton button; String label; public ButtonListener(JButton button1,abstractmembrane mem1){ button = button1; label = button.gettext(); mem = mem1; button.addactionlistener(this); public void actionperformed(actionevent evt){ Functor f1 = new Functor("buttonevent",1); Functor f2 = new Functor(label,1); Atom a = mem.newatom(f1); Atom b = mem.newatom(f2); Link l1 = new Link(a,0); Link l2 = new Link(b,0); a.args[0] = l2; b.args[0] = l1; class Draw{ Draw ndraw; public void draw(graphics g){ class Line extends Draw{ int x1,x2,y1,y2; public Line(int xx1,int xx2,int yy1,int yy2){ x1 = xx1;x2 = xx2;y1 = yy1;y2 = yy2; public void draw(graphics g){ g.drawline(x1,x2,y1,y2); class Atomm extends Draw{ int x,y; 44

String s; public Atomm(int xx,int yy,string ss){ x = xx;y = yy;s = ss; public void draw(graphics g){ g.setcolor(color.black); g.filloval(x,y,30,30); g.setcolor(color.blue); g.filloval(x+2,y+2,26,26); g.setcolor(color.black); g.drawstring(s,x+10,y+18); class Bound{ int x1,y1; boolean xb,yb; public Bound(int xx,int yy){ x1 = xx; y1 = yy; public String[] next(string x2,string y2){ int x = Integer.parseInt(x2); int y = Integer.parseInt(y2); if(!xb){ x = x+5; if(x>x1)xb = true; else{ x = x-5; if(x<0)xb = false; if(!yb){ y = y+5; if(y>y1)yb = true; else{ y = y-5; if(y<0)yb = false; String[] s = new String[2]; s[0] = Integer.toString(x); s[1] = Integer.toString(y); return s; 45

]], (atom(x,y,l):-[[/*inline*/ Sample.control.addAtom(me.getArg(0).getAtom().toString(), me.getarg(1).getatom().tostring(), me.getarg(2).getatom().tostring(), "0"); ]](X,Y,L)), (a(x,y):-[[/*inline*/string[] ss = Control.bound.next(me.nth(0),me.nth(1)); me.getarg(0).getatom().changename(ss[0]); me.getarg(1).getatom().changename(ss[1]); me.changename("az"); ]](X,Y)), (az(x,y):-[[/*inline*/sample.control.objects[0].resetdraw(); System.out.println("az"); Sample.control.addAtom(me.getArg(0).getAtom().toString(), me.getarg(1).getatom().tostring(), "1","0"); me.changename("a"); Thread.sleep(100); ]](X,Y)), a(10,10) 46