目次 >> 第3章 基本的な操作 |
この章のチュートリアルのために、BlueJの配布ファイルに含まれているプロジェクトpeopleを開いてください。これはBlueJをインストールしたディレクトリ直下のexamplesディレクトリにあります。プロジェクトを開いた後、あなたは図1のようなウインドウを見ることができます。もっともあなたの環境では完全には同じに見えないかもしれませんが、違いがあったとしても小さいはずです。
図1:BlueJ メインウインドウ
BlueJの基本的な特長の1つは、完全なアプリケーションを実行できるだけではなく、どんなクラスの単一のオブジェクトとも直接対話して、それらのpublicなメソッドを実行することができることです。通常、BlueJの威力は、オブジェクトを生成し、次にオブジェクトのメソッドのひとつを呼び出すことによって発揮されます。これはアプリケーションの開発において非常に役立ちます。クラスが書かれるなり、あなたはそれらを個別にテストすることができるのです。最初に完全なアプリケーションを書く必要はどこにもありません。
サイドノート:
まずオブジェクトを生成しないで、staticなメソッドを直接実行することができます。staticなメソッドのひとつは"main"でしょう。したがって、Javaアプリケーション中で通常行なわれるのと同じこと――staticなmainメソッドによって実行されるアプリケーションを起動させること――を行なうことができます。これについては後ほど触れることにします。最初にわたしたちは、Javaの環境において普通はできない、もっと興味深い他のことをやってみましょう。
メインウインドウの中央部にある四角形(Database、Person、Staff、およびStudentというラベルになっています)は、このJavaアプリケーションに関わっているクラスを表わすアイコンです。このクラスアイコンを右クリックすると、クラスを操作するためのポップアップメニューが表示されます(図2)。示されたメニュー項目は、まずこのクラスのために定義されたコンストラクタの記述をともなうnewです。そして開発環境により提供されているクラス操作の項目がいくつか続いています。
図2:クラス操作 (ポップアップメニュー)
ここでStaffクラスのオブジェクトを生成したいので、Staffクラスのアイコンを右クリックします(図2で示されているメニューをポップアップ表示することになります)。メニューには、Staffオブジェクトを生成するために、パラメータがあるものとないものとの二種類のコンストラクタが示されます。まずはパラメータのないコンストラクタを選んでください。図3で示されるダイアログが現われます。
図3:パラメータなしのオブジェクト生成
このダイアログでは、生成するオブジェクトの名前を求められます。同時に、デフォルトの名前(staff_1)も提示されます。今はこのデフォルト名で充分なので、そのまま
生成したオブジェクトはオブジェクトベンチに置かれます(図4)。オブジェクトを生成したら、すべてここに置かれることとなります。クラスの操作メニューからコンストラクタを選べば、それが実行され、オブジェクトが生成されてオブジェクトベンチに置かれるのです。
図4:オブジェクトベンチのオブジェクト
あなたはPersonクラスに<<abstract>>(これは抽象クラスであることを意味します)というラベルがついていることに気づいたかもしれません。もし試みたとしても、(Java言語仕様が定義している)抽象クラスのオブジェクトは生成できないことがわかるでしょう。
要約:オブジェクトを生成するには、クラスのポップアップメニューからコンストラクタを選びます。
オブジェクトを生成したので、そのpublicなメソッドを実行することができます。オブジェクトを右クリックすると、そのオブジェクトを操作するためのメニューがポップアップ表示されます(図5)。このメニューは、利用可能なメソッドと、開発環境が提供する特別なふたつの機能 (InspectとRemove) を示しています。後者についてはあとで述べます。まずはメソッドの操作に集中しましょう。
図5:オブジェクト操作のメニュー
このStaffメンバーには、部屋番号を設定したり返したりするメソッド、setRoomとgetRoomがあるとわかります。getRoomを呼んでみましょう。単にオブジェクトのメニューから選ぶだけで実行されます。そして実行結果を示すダイアログが表示されます(図6)。わたしたちがこの人物のために部屋を指定しなかったので、ここでは「(unknown room)」が返されています。
図6:メソッドの戻り値の表示
スーパークラス(基底クラス)から継承されたメソッドは、サブメニューを通じて利用することができます。オブジェクトのポップアップメニューの先頭に、ふたつのサブメニューがあります。ひとつはObjectから継承したもの、もうひとつはPersonから継承したものです(図5)。サブメニューからそれを選ぶことで、Personのメソッド(getNameなど)を呼ぶことができます。試してみてください。示された答えが等しくあいまいであることに気づくでしょう。わたしたちがこの人物に名前を設定しなかったので、「(unknown name)」と返されています。
今度は部屋番号を設定してみることにしましょう。こちらは呼び出すときパラメータを持っていることがわかります(getRoomとgetNameの呼び出しでは、戻り値はあってもパラメータはありませんでした)。メニューからそれを選択することで、setRoom機能を呼んでください。パラメータの入力を促すダイアログが表示されます(図7)。
図7:パラメータを持つメソッドの呼び出しダイアログ
このダイアログの上部に、メソッドを呼び出すための書式(コメントと、シグネチャと呼ばれるメソッドの引数リスト)が示されています。パラメータを入力するためのテキスト入力フィールドは、その下にあります。上部のシグネチャは、期待されるのはString型のパラメータひとつであると言っています。テキストフィールドに新しい部屋番号(引用符""を含む)を入力し、
これですべてです。このメソッドはパラメータを返さないので、ダイアログによる戻り値の表示はありません。部屋番号が本当に変わったかどうかチェックするために、再びgetRoomを呼んでください。[訳注]
しばらくは、オブジェクトの生成やメソッドの呼び出しでいろいろ遊んでみてください。引数つきでコンストラクタを呼び出し、操作に詳しくなるまで、多くのメソッドを呼び出してください。
要約:メソッドを実行するには、そのオブジェクトのポップアップメニューから選択します。
これまでのところ、わたしたちはオブジェクトのインタフェースだけを扱いました。これからは中を見るときです。クラス操作メニューから
return room;
を、次のように変更することで、そうすることができます。
return "room " + room;
BlueJは 100% Pure Java をサポートしているので、クラスをインプリメントするにあたり、特別な作業は何もありません。
要約:クラスのソースを編集するには、そのクラスのアイコンをダブルクリックします。
テキストを挿入したあと、他のことをする前にメインウインドウにおけるプロジェクトの概観をチェックしてください。Staffのクラスのクラスアイコンが変わった――斜線がかかった――ことに気づくでしょう。斜線のかかった外観は、最後の変更以来、コンパイルされていないクラスであることを示します。エディタに戻ってください。
サイドノート:
あなたは自分で最初にこのプロジェクトを開いたとき、クラスアイコンになぜ斜線がかかっていなかったのかと疑問に思うかもしれません。それは、このプロジェクトにおけるクラスが既にコンパイル済みの状態で配布されたからです。BlueJのプロジェクトはしばしば未コンパイルの状態で配布されますから、これから先最初にプロジェクトを開くと、ほとんどのクラスアイコンに斜線がかかっていることが予想されます。
エディタの上部にあるツールバーには、頻繁に使用される機能を呼び出すいくつかのボタンがあります。ひとつは
クラスのコンパイルが成功したら、エディタを閉じてください。
サイドノート:
クラスのソースを意識的に保存する必要はありません。いつでも適切なときに、自動的に保存されます(たとえば、エディタを閉じたときや、クラスがコンパイルされたときなど)。意識的に保存することもできます――エディタの メニューの中に、その機能があります――が、頻繁にクラッシュするなど、あなたのシステムが本当に不安定で、作業の成果を失うのが心配だという場合にだけ必要になることでしょう。
メインウィンドウのツールバーも
あなたはオブジェクトベンチが再び空になってしまったことに気づくでしょう。ソースコードが変更されたときは常に、オブジェクトは削除されるのです。
要約:クラスをコンパイルするには、エディタで
ボタンをクリックします。プロジェクトごとコンパイルするには、メインウィンドウで ボタンをクリックします。
始めたばかりの学生はしばしば、コンパイルエラーのメッセージを理解するのに苦労します。わたしたちはいくつか、手助けとなる機能を提供しようと思います。
再びエディタを開いてください。そして間違ったコーディングをしてコンパイルしてください。エラーメッセージがエディタのインフォメーション領域に表示されます。インフォメーション領域の右端には、疑問符 が現われています。これをクリックすることで、この種類のエラーについて、より多くの情報を得ることができます(図8)。
図8:コンパイルエラーとヘルプボタン
現在のところ、ヘルプはすべてのエラーメッセージに対して利用可能というわけではありません。いくつかのヘルプはまだ書かれていないからです。しかし多くのエラーが既に説明されているので、試みる価値はあります。残りはいずれ執筆され、今後のBlueJリリースに含まれることでしょう。
要約:コンパイル時のエラーメッセージに関するヘルプを見るには、エラーメッセージの横にある
ボタンをクリックします。