dポイントプレゼントキャンペーン実施中!

やさしいJavaからの問題です。
次のように、整数値の座標をあらわす MyPoint クラスを作成してください。

フィールド
private int x; (X座標)
private int y; (Y座標)

メソッド
public void setX(int px); (X座標を設定する)
public void setY(int py); (Y座標を設定する)
public int getX(); (X座標を得る)
public int setY(); (Y座標を得る)

という問題で、回答は以下の通りですが、

class MyPoint
{
int x;
int y;

void setX(int px)
{
x = px;
}
void setY(int py)
{
y = py;
}
int getX()
{
return x;
}
int getY()
{
return y;
}
}

class Sample5
{
public static void main(String[] args)
{
MyPoint p1;
p1 = new MyPoint();
p1.setX(10);
p1.setY(5);

int px = p1.getX();
int py = p1.getY();

System.out.println("p1のX座標は" + px + "Y座標は" + py + "でした。");
}
}

教科書の関連の章ではreturnが先に来ているのですが、突然この問題ではvoidから始まっているのですが、int getX()~return y;までとvoid setX~y = py;までの部分
の順番を変えてもいいですか?

A 回答 (2件)

【M】class MyPoint{…内部の19行分省略…}


【S】class Sample5{…内部の12行分省略…}

上記の【M】と【S】は別のクラス。
コーディングする順序はどちらが先でどちらが後でもかまわない。
このプログラムの実行はどちらが先にコーディングされていようとも,public static void main()メソッドが定義されている【S】クラスのmain()メソッドから開始することになる。

--------
class MyPoint
{
int x;
int y;
【A】void setX(int px){x = px;}
【B】void setY(int py){y = py;}
【C】int getX(){return x;}
【D】int getY(){return y;}
}

上記の【A】【B】【C】【D】はそれぞれ別々のメソッド。
コーディングする順序はどれが先でどれが後でもかまわない。
これらのメソッド定義がどの順序で並んでいるかは実行にはまったく関係なく,他のメソッドがこれらのメソッドをどの順で呼び出しているかによって実行順序が決まる。

この回答への補足

呼び出し順がすべてなんですね。回答有難うございます。

補足日時:2013/08/03 14:10
    • good
    • 0

すみません。

おっしゃっている意味がよくわからないのですが。

各メソッドは
void setX(int px){x = px;}
でsetX
void setY(int py){y = py;}
でsetY
int getX(){return x;}
でgetX
int getY(){return y;}
でgetYの定義になります。閉じ括弧までがセットです。

「return y;まで」では、メソッドの途中になります。通常は、そんなところを入れかえたら、元のプログラムと意味が変ってきます。
今回はたまたま変化しない例となりますが。


メソッドの定義の固まりを分解しないのなら、順番は変更可能です。

例えば
// X関係。getter,setter
int getX(){return x;}
void setX(int px){x = px;}

// Y関係。getter,setter
int getY(){return y;}
void setY(int py){y = py;}
のように。

この順番を変えることと、「関連の章ではreturnが先に来ている」「voidから始まっている」との関連がわかりません。


一般には、関係のあるものを近くにまとめるのが、作法です。
上はX,Yに注目して集めてますし、例示されたものは、 set? と get? とで集めています
returnやvoidで順番を決める、ということは、まずやりません。

この回答への補足

やさしいJavaを読んだことのない人からしたら唐突だったかもしれません。同じ章の前のページを見てみると、returnの箇所が先に来てて、voidの箇所が後に書いてあったのに何故この練習問題はvoidが先に来てて、returnが後に来ているのでなぜかなあと思いまして。

補足日時:2013/08/03 13:53
    • good
    • 0
この回答へのお礼

回答またお願いします。

お礼日時:2013/08/03 13:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!