チュートリアル 01 HelloWorld - 伝統的な「最初のプログラム」

Max 互換の Java クラスは、Max オブジェクトに共通した変数やメソッドを定義したプロトタイプです。 mxj オブジェクトのためのプログラミングであなたが行なうことは、Max の世界とのインターフェイスとして働くメソッドを持った MaxObject というクラスを拡張することです。 空のオブジェクトボックスに mxj MyClass と入力して新しいMaxオブジェクトを作った場合、mxj は 2 つのオブジェクトをインスタンス化(インスタンスを生成)します。1つは MyClass というクラスのJava オブジェクト、もう1つはこのJava オブジェクトを「入れる」ためのピア mxj オブジェクトです。

最初に見る例は古典的なプログラムです。このオブジェクトをインスタンス化すると、Max のコンソール(Max ウィンドウ)に "hello world!" と表示されます。これが、この HelloWorld1 Java クラスのコードです。

import com.cycling74.max.*;

public class HelloWorld1 extends MaxObject {

	public HelloWorld1() {
		post("hello world!");
	}
}

簡潔なコードですが、最初の import 文からコードのブロックを詳しく調べてみましょう。最初の行は、このクラスでmxj API の基本的なクラスとメソッドのすべてを使用できるようにするものです。1.4 Java API やサードパーティ製のライブラリから任意のクラスをインポートすることも可能ですが、このクラスで必要なものは、すべて Cycling '74 によって提供される max.jar パッケージに含まれています。

次のブロックでは、私たちのクラスを、インポートされたAPI の第1の所有者である MaxObject のサブクラスとして定義しています。

public class HelloWorld1 extends MaxObject {
	...
}

クラス宣言の前にある public 修飾子は、このクラスがプログラムの外部からアクセス可能であるということを意味するだけものです。Max の世界で存在するためには、Java クラスは MaxObject のサブクラスでなければなりません。この関係は extends キーワードを使って宣言します。サブクラスは、そのスーパークラスが持つパブリック変数とメソッドをすべて継承します。MaxObject には数多くのメソッドがあり、これによってJava コードとMax の間のやり取りが可能になります。しかし、この最初の例では post メソッドだけを使用しています。この post メソッドはアーギュメントとして与えられた文字列(String)をMax コンソールに表示するものです。

	public HelloWorld1() {
		post("hello world!");
	}

上のコードは、HelloWorld1クラスのコンストラクタです。コンストラクタは、クラスのオブジェクトがインスタンス化されるたびに呼び出されるメソッドです。Max環境でのプログラミングでは、HelloWorld1というアーギュメントを持つ新しい mxj オブジェクトが作られるときにこのメソッドが呼び出されます。コンストラクタは、生成のもとになるクラスと同じ名前を持っていなければなりません。

HelloWorld1 クラスのコンストラクタメソッドは、非常に単純なものです。これは、post を呼び出し、"hello world!" をMax ウィンドウに出力するように命じています。下の図でわかるとおり、mxj はこれを実行してくれます。この段階で、HelloWorld1.java, を開き、"hello world!"をもっとエキサイティングな文字列に置き換え、新しく書き直された HelloWorld1 クラスのコンパイルとインスタンス化が可能であることを確認しておくとよいでしょう。

実行例: