• 検索結果がありません。

ライブラリ

ドキュメント内 LMNtal LMNtal LMNtal JAVA JAVA JAVA LMNtal LMNtal LMNtal (ページ 40-52)

第 5 章 問題点と今後の課題 34

5.4 ライブラリ

参考文献

[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

謝辞

本研究を進めるにあたり様々な方の指導・助言をいただきました。まず、ご指導 を賜わった上田 和紀教授に深く感謝致します。また、 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);

}

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);

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;

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);

}

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){

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;

} }

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;

ドキュメント内 LMNtal LMNtal LMNtal JAVA JAVA JAVA LMNtal LMNtal LMNtal (ページ 40-52)

関連したドキュメント