ObectSquare

[技術講座]


Powered by SmartDoc

Javaオブジェクトの呼び出し

Pnutsの最大の利点は、スクリプトからJavaのオブジェクトに自由にアクセスして操作することができる点である。JavaAPIで提供されているものや、その他さまざまなクラスライブラリをスクリプトから利用することができる。

このセクションの例ではオブジェクトを操作する感覚を伝えるために、対話型のシェル上で作業を行っている。

Javaオブジェクトの生成

Pntusでは、Javaオブジェクトの作成時にnew演算子を「使わない」ことに注意する。オブジェクトの生成は、class <パッケージ名を含めたクラス名()>のように記述する。

またPnutsでは、ある変数がクラスをあらわしているのかオブジェクトなのかはっきりインタプリンタに伝えるためにclassキーワードを使う。コンパイルという作業がないPnutsでは、スクリプトに出てきた変数がオブジェクトへの参照を表すかクラスを表すかどうかを決定できないためである。

オブジェクトの生成
C:\home\kanno\oed\pnuts_1>pnuts
Copyright (c) 1997-2000 Sun Microsystems, Inc. All rights reserved.
Pnuts version 1.0rc1, 1.3.0_02 (Sun Microsystems Inc.)
> aFrame= class java.awt.Frame()
java.awt.Frame[frame2,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,resizable,title=]
>
>//もしくはこのように書いてもよい
//Classオブジェクトを取得して変数Frameに代入してから、それを関数のように呼び出している
> 
> Frame = class java.awt.Frame
java.awt.Frame class
> aFrame = Frame()
java.awt.Frame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,resizable,title=]
>

import文

オブジェクトを生成するたびに、パッケージ名を含めたクラス名を記述するのは面倒である。Pnutsでは、Javaのようにクラスやパッケージをimportする機能がある。この機能を使う方がJavaの流儀に近い。

オブジェクトの生成
>import("java.awt.*")
null
> aFrame=Frame()
java.awt.Frame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,resizable,title=]
>

メソッドの呼び出し

インスタンスメソッドの呼び出しはJavaとほとんど一緒である

メソッドの呼び出し
>import("java.awt.*")
null
> aFrame=Frame()
java.awt.Frame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,resizable,title=]
> aFrame.show()                //Windowが表示される
null
> aFrame.setSize(300,200)      //Windowのサイズが変更される
null
> aFrame.dispose()            //Windowが消去される
null
>

staticメソッドのよびだし

  staticメソッドの呼び出しは レシーバ :: メソッド と記述する

staticメソッドの呼び出し
>Math::sqrt(3)
1.7320508075688772
> Math::random()
0.5332636966391512
>

 

インスタンス変数・クラス変数へのアクセス

基本的にはメソッドの時と要領は一緒である。インスタンス変数へのアクセスには、.をつかいクラス変数へのアクセスには:: を使う。  

フィールドへのアクセス
>Point = class java.awt.Point
java.awt.Point class
> pt = Point(10, 20)
java.awt.Point[x=10,y=20]
> pt.x         //参照
10
> pt.x=5   //代入
5

>//staicなフィールドの場合
> blue = class java.awt.Color::blue
java.awt.Color[r=0,g=0,b=255]
>

© 2001 OGIS-RI Co., Ltd.
Prev. Index Next
Prev. Index Next