私の先生がコードを書き、整理する方法は、私の補足教科書で提案されているものとは大きく異なります。最近のラボでは、wheels
ライブラリを使用して1つのウィンドウに複数のオブジェクトを表示する必要がありました。これが私の先生によって書かれたSnowman
クラスです(他のオブジェクトのコードは便宜上含まれていません):
public class Snowman {
private Ellipse _top;
private Ellipse _middle;
private Ellipse _bottom;
public Snowman() {
_top = new Ellipse();
_top.setColor(Color.WHITE);
_top.setFrameColor(Color.BLACK);
_top.setFrameThickness(1);
_top.setSize(80, 80);
_middle = new Ellipse();
_middle.setColor(Color.WHITE);
_middle.setFrameColor(Color.BLACK);
_middle.setFrameThickness(1);
_middle.setSize(120, 120);
_bottom = new Ellipse();
_bottom.setColor(Color.WHITE);
_bottom.setFrameColor(Color.BLACK);
_bottom.setFrameThickness(1);
_bottom.setSize(160, 160);
}
public void setLocation(int x, int y) {
_top.setLocation(x + 40, y - 170);
_middle.setLocation(x + 20, y - 100);
_bottom.setLocation(x, y);
}
}
このオブジェクトは、とりわけ、後でSnowmanCartoon
クラスでインスタンス化されます。
public class SnowmanCartoon extends Frame{
private Snowman _snowman;
private Eyes _eyes;
private Hat _hat;
private Bubble _bubble;
public SnowmanCartoon() {
_snowman = new Snowman();
_snowman.setLocation(100, 300);
_eyes = new Eyes();
_eyes.setLocation(165, 150);
_hat = new Hat();
_hat.setLocation(152, 98);
_bubble = new Bubble();
_bubble.setLocation(280, 60);
}
public static void main(String[] args) {
new SnowmanCartoon();
}
}
これが私の懸念です:
これらのクラスの両方で、なぜクラスと同じ名前のメソッドがあり、その目的は何ですか?
何も返さないのに
setLocation()
、メソッドがvoidメソッドであるのに、メソッドがvoidメソッドであるのはなぜですか?Snowman()
Snowman()
クラスでは、と
SnowmanCartoon
言うとき、クラス、またはむしろメソッド を参照していますか?private Snowman _snowman;
_snowman = new Snowman();
Snowman
Snowman
Snowman()
Snowman
オブジェクトのインスタンス化がSnowman()
そのすべてのプロパティを設定するメソッドを参照している場合、ドット演算子を使用する必要がないのはなぜSnowman.Snowman()
ですか。私の教科書では、インスタンス変数とメソッドは1つのクラスで宣言され、別のクラスでインスタンス化されます。しかし、それらは私の先生のコードで同時に発生しているようです。