BlueJの使い方
Oracle製のIDE「BlueJ」を使ってみようと思います。
そもそも、「なんで使ってみようと思ったのか?」に関して、以下の理由があります。
下の動画のように、作成したクラスがクラス図(簡易バージョン)で表現されるところです。
<HelloWorldの実行動画>
他にも、継承関係も表示できる用ですので、クラス間の関係性を説明するときに、自分で確認するときにも便利です。
BlueJインストール
こちらのページからダウンロードできます。MSIファイルなので、クリックするだけでインストールできました。
そして、ドキュメント、サンプルプロジェクトもそろっているようです。
そんなわけで、上記の赤丸部分をクリックしてダウンロードした。ファイルの中身を見てみます。
サンプルプロジェクト
ダウンロードしたprojects.zipを展開すると、Chapter01~16までプロジェクトが入っていました。
これらの中にあるフォルダが、BlueJで開くべきプロジェクトになります。
Chapter1のプロジェクト(figure)
開いたプロジェクトは下のような形でした。
これに、メインクラスを作成し、メインメソッドを追加して実行しました。
<実行結果>
サンプルプロジェクトを見る
ダウンロードしたZIPファイルを展開したあと、「projects」-> 「chapter01」-> プロジェクトとフォルダを下がっていく形になります。
具体的には、「projects」-> 「chapter01」-> 「home」を開きます。
プロジェクトを開いた結果
ここから、Javaプログラムの解説になります。
Java プログラム
開いたプロジェクトは、下のようなクラスがあります。
- Picture
- Circle
- Square
- Triangle
- Person
- Canvas
クラスの関係について
上記のクラス図から、Circle, Square, Triangleの3クラスがPictureクラスに呼び出されています。
そして、Picture以外のクラスがCanvasクラスを呼び出しています。
なので、ここに「」クラスを作成し、Picture、Personクラスを起動するメインメソッドを実装、起動します。
Pictureクラス
このクラスは、Circle, Square, Triangleの3クラスを呼び出しています。
詳細は、フィールド変数に上記の3クラスを持っています。
そして、コンストラクタで各クラスのインスタンス化を行い。
draw()メソッドで描画を行っています。
なので、メインメソッドでは、インスタンス化とdraw()を呼び出しを行っています。
/**
* This class represents a simple picture. You can draw the picture using
* the draw method. But wait, there's more: being an electronic picture, it
* can be changed. You can set it to black-and-white display and back to
* colors (only after it's been drawn, of course).
*
* This class was written as an early example for teaching Java with BlueJ.
*
* @author Michael Kölling and David J. Barnes
* @version 2016.02.29
*/
public class Picture
{
private Square wall;
private Square window;
private Triangle roof;
private Circle sun;
private boolean drawn;
/**
* Constructor for objects of class Picture
*/
public Picture()
{
wall = new Square();
window = new Square();
roof = new Triangle();
sun = new Circle();
drawn = false;
}
/**
* Draw this picture.
*/
public void draw()
{
if(!drawn) {
wall.moveHorizontal(-140);
wall.moveVertical(20);
wall.changeSize(120);
wall.makeVisible();
window.changeColor("black");
window.moveHorizontal(-120);
window.moveVertical(40);
window.changeSize(40);
window.makeVisible();
roof.changeSize(60, 180);
roof.moveHorizontal(20);
roof.moveVertical(-60);
roof.makeVisible();
sun.changeColor("yellow");
sun.moveHorizontal(100);
sun.moveVertical(-40);
sun.changeSize(80);
sun.makeVisible();
drawn = true;
}
}
/**
* Change this picture to black/white display
*/
public void setBlackAndWhite()
{
wall.changeColor("black");
window.changeColor("white");
roof.changeColor("black");
sun.changeColor("black");
}
/**
* Change this picture to use color display
*/
public void setColor()
{
wall.changeColor("red");
window.changeColor("black");
roof.changeColor("green");
sun.changeColor("yellow");
}
}
Mainクラス
このクラスは、筆者が作成したクラスです。単純にPictureクラスとPersonクラスをインスタンス化してそれぞれ描画するメソッドを起動しています。
public class Main
{
public static void main(String[] args) {
Picture pic = new Picture();
Person per = new Person();
pic.draw();
per.makeVisible();
}
}