お題
クラスの作り方とインスタンスの作り方を学ぼう
手順
◯新規ファイルPositionApp.javaを作成する。内容は以下
public class PositionApp {
public static void main(String[] args) {
}
}◯PositionAppクラスの下にPositionクラスを作成する。記述は以下
public class PositionApp {
public static void main(String[] args) {
}
}
class Position{
}以下はPositionクラスに記述していくこと
◯フィールド変数
int x;
int y;
◯コンストラクタ
1. 引数2つのコンストラクタ -> 引数に入ってきた2つの値でthis.xとthis.yを初期化し、this.displayPositionメソッドを実行する
2.引数なしのコンストラクタ->this.xとthis.yを0で初期化しthis.displayPositionを実行する。この際、1のコンストラクタを呼び出すようにすること
◯メソッド
右に移動するメソッド void moveRight(int len)を作成する。
処理内容は、引数で入ってきた値の分、this.xを増やす
「右にxxx移動しました」と出力する。
左に移動するメソッド void moveLeft(int len)を作成する。
処理内容は、引数で入ってきた値の分、this.xを減らす
「左にxxx移動しました」と出力する。
上に移動するメソッド void moveUp(int len)を作成する。
処理内容は、引数で入ってきた値の分、this.yを増やす
「上にxxx移動しました」と出力する。
下に移動するメソッド void moveDown(int len)を作成する。
処理内容は、引数で入ってきた値の分、this.yを減らす
「下にxxx移動しました」と出力する。
現在地点を表示するメソッド void displayPosition()を作成する。
表示内容は以下
「現在位置は[x:?,y:?]です」
インスタンスの作成
◯上部にあるmainメソッドの中でPositionクラスのインスタンスを引数なしで作成し、Position型の変数p1に代入する
◯p1がmoveRight(5)を行う
◯p1がmoveUp(10)を行う
◯p1がdisplayPosition()を実行することで現在位置を表示する。
◯Positionクラスのインスタンスを引数(4,6)で作成し、Position型の変数p2に代入する
◯p2がmoveLeft(8)を行う
◯p2がmoveDown(20)を行う
◯p2がdisplayPosition()を実行することで現在位置を表示する。
実行例は以下
現在位置は[x:0,y:0]です
右に5移動しました
上に10移動しました
現在位置は[x:5,y:10]です
現在位置は[x:4,y:6]です
左に8移動しました
下に20移動しました
現在位置は[x:-4,y:-14]です
解答例
public class PositionApp{
public static void main(String[] args){
Position p1 = new Position();
p1.moveRight(5);
p1.moveUp(10);
p1.displayPosition();
Position p2 = new Position(4,6);
p2.moveLeft(8);
p2.moveDown(20);
p2.displayPosition();
}
}
class Position{
int x;
int y;
Position(){
this(0,0);
}
Position(int x,int y){
this.x = x;
this.y = y;
this.displayPosition();
}
void moveRight(int len){
System.out.printf("右に%d移動しました%n",len);
this.x += len;
}
void moveLeft(int len){
System.out.printf("左に%d移動しました%n",len);
this.x -= len;
}
void moveUp(int len){
System.out.printf("上に%d移動しました%n",len);
this.y += len;
}
void moveDown(int len){
System.out.printf("下に%d移動しました%n",len);
this.y -= len;
}
void displayPosition(){
System.out.printf("現在位置は[x:%d,y:%d]です%n",this.x,this.y);
}
}
コメント