目次 >> 第3章 基本的な操作

第3章 基本的な操作 - 編集/コンパイル/実行

| 前の章 | 次の章 |

 この章のチュートリアルのために、BlueJの配布ファイルに含まれているプロジェクトpeopleを開いてください。これはBlueJをインストールしたディレクトリ直下のexamplesディレクトリにあります。プロジェクトを開いた後、あなたは図1のようなウインドウを見ることができます。もっともあなたの環境では完全には同じに見えないかもしれませんが、違いがあったとしても小さいはずです。

図1:BlueJ メインウインドウ

第1節 オブジェクトの生成

 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)も提示されます。今はこのデフォルト名で充分なので、そのまま Ok ボタンをクリックします。これでStaffオブジェクトが生成されます。
 生成したオブジェクトはオブジェクトベンチに置かれます(図4)。オブジェクトを生成したら、すべてここに置かれることとなります。クラスの操作メニューからコンストラクタを選べば、それが実行され、オブジェクトが生成されてオブジェクトベンチに置かれるのです。

図4:オブジェクトベンチのオブジェクト

 あなたはPersonクラスに<<abstract>>(これは抽象クラスであることを意味します)というラベルがついていることに気づいたかもしれません。もし試みたとしても、(Java言語仕様が定義している)抽象クラスのオブジェクトは生成できないことがわかるでしょう。

要約:オブジェクトを生成するには、クラスのポップアップメニューからコンストラクタを選びます。

第2節 実行

 オブジェクトを生成したので、その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型のパラメータひとつであると言っています。テキストフィールドに新しい部屋番号(引用符""を含む)を入力し、Okをクリックしてください。
 これですべてです。このメソッドはパラメータを返さないので、ダイアログによる戻り値の表示はありません。部屋番号が本当に変わったかどうかチェックするために、再びgetRoomを呼んでください。[訳注]
 しばらくは、オブジェクトの生成やメソッドの呼び出しでいろいろ遊んでみてください。引数つきでコンストラクタを呼び出し、操作に詳しくなるまで、多くのメソッドを呼び出してください。

要約:メソッドを実行するには、そのオブジェクトのポップアップメニューから選択します。

[訳注]
部屋番号の設定手順を説明していたのに、原文では途中からそれが名前の設定であるかのように説明がすりかわってしまっています。このチュートリアルにそって勉強しようとする人が混乱しかねないので、邦訳においては修正しています。

第3節 クラスの編集

 これまでのところ、わたしたちはオブジェクトのインタフェースだけを扱いました。これからは中を見るときです。クラス操作メニューから Edit Implementation を選択することで、クラスのソースコードを見ることができます(クラスアイコンを右クリックすれば、クラス操作メニューが現われることを思い出してください)。クラスアイコンをダブルクリックすることは同じ機能へのショートカットです。エディタについては、このチュートリアルで詳細な説明がなされているわけではありませんが、とても簡単に使うことができるでしょう。エディタ細部に関しては、後ほど説明します。今は、Staffクラスのソースを開いてください。そしてgetRoomメソッドのコーディングを見つけてください。名称が示唆しているように、これはスタッフの部屋番号を返すメソッドです。単に「G.4.24」ではなく、頭に「room」を付加した戻り値を得られるよう、メソッドを変更しましょう(メソッドの戻り値が「room G.4.24」になるように、ということです)。

  return room;

 を、次のように変更することで、そうすることができます。

  return "room " + room;

 BlueJは 100% Pure Java をサポートしているので、クラスをインプリメントするにあたり、特別な作業は何もありません。

要約:クラスのソースを編集するには、そのクラスのアイコンをダブルクリックします。

第4節 コンパイル

 テキストを挿入したあと、他のことをする前にメインウインドウにおけるプロジェクトの概観をチェックしてください。Staffのクラスのクラスアイコンが変わった――斜線がかかった――ことに気づくでしょう。斜線のかかった外観は、最後の変更以来、コンパイルされていないクラスであることを示します。エディタに戻ってください。

サイドノート:
 あなたは自分で最初にこのプロジェクトを開いたとき、クラスアイコンになぜ斜線がかかっていなかったのかと疑問に思うかもしれません。それは、このプロジェクトにおけるクラスが既にコンパイル済みの状態で配布されたからです。BlueJのプロジェクトはしばしば未コンパイルの状態で配布されますから、これから先最初にプロジェクトを開くと、ほとんどのクラスアイコンに斜線がかかっていることが予想されます。

 エディタの上部にあるツールバーには、頻繁に使用される機能を呼び出すいくつかのボタンがあります。ひとつは Compile です。この機能はエディタから直接、このクラスをコンパイルすることができるというものです。Compile ボタンをクリックしてください。どんなミスもしていなければ、クラスがコンパイルされたことを通知するメッセージが、下部のインフォメーション領域に現われるでしょう。もし文法ミスに通じる誤りをしていたなら、エラー行が強調され、エラーメッセージがインフォメーション領域に表示されます(この最初のコンパイル作業のために、セミコロンを削除するなど、わざと文法エラーを入れてみてください。そしてその結果がどのように見えるかを知るためにだけ、再コンパイルしてみてください)。
 クラスのコンパイルが成功したら、エディタを閉じてください。

サイドノート:
 クラスのソースを意識的に保存する必要はありません。いつでも適切なときに、自動的に保存されます(たとえば、エディタを閉じたときや、クラスがコンパイルされたときなど)。意識的に保存することもできます――エディタの Classメニューの中に、その機能があります――が、頻繁にクラッシュするなど、あなたのシステムが本当に不安定で、作業の成果を失うのが心配だという場合にだけ必要になることでしょう。

 メインウィンドウのツールバーも Compile ボタンも持っています。ここでのコンパイル操作により、プロジェクト全体がコンパイルされます(実行の際は、どのクラスに再コンパイルが必要なのかを判断し、その結果に基づいてコンパイルします)。ふたつ以上のクラスを変更して――ふたつ以上のクラスが、クラス図で斜線がかかった状態になるということです――Compile ボタンをクリックし、それを試してみてください。コンパイルしたクラスでエラーが検出されれば、エディタが開かれ、エラーの位置とエラーメッセージが示されます。
 あなたはオブジェクトベンチが再び空になってしまったことに気づくでしょう。ソースコードが変更されたときは常に、オブジェクトは削除されるのです。

要約:クラスをコンパイルするには、エディタで Compile ボタンをクリックします。プロジェクトごとコンパイルするには、メインウィンドウで Compile ボタンをクリックします。

第5節 コンパイルエラーのヘルプ

 始めたばかりの学生はしばしば、コンパイルエラーのメッセージを理解するのに苦労します。わたしたちはいくつか、手助けとなる機能を提供しようと思います。
 再びエディタを開いてください。そして間違ったコーディングをしてコンパイルしてください。エラーメッセージがエディタのインフォメーション領域に表示されます。インフォメーション領域の右端には、疑問符 が現われています。これをクリックすることで、この種類のエラーについて、より多くの情報を得ることができます(図8)。

図8:コンパイルエラーとヘルプボタン

 現在のところ、ヘルプはすべてのエラーメッセージに対して利用可能というわけではありません。いくつかのヘルプはまだ書かれていないからです。しかし多くのエラーが既に説明されているので、試みる価値はあります。残りはいずれ執筆され、今後のBlueJリリースに含まれることでしょう。

要約:コンパイル時のエラーメッセージに関するヘルプを見るには、エラーメッセージの横にある ボタンをクリックします。