メソッド(static method)

(Text 第8章pp.188)

戻り値の型 メソッド名(引数列)
{
    処理;
    return文;
}

Avarage1.java

Expand allFold all
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
-
-
|
|
|
|
|
|
|
|
|
|
|
|
!
!
public class Avarage1{
    public static void main(String[] args){
        int yamada, ueda, oda;
        double avarage;
        
        yamada = 99;
        ueda = 47;
        oda = 64;
        avarage = (yamada + ueda + oda)/3.0;
 
        System.out.println("山田は" + yamada + "点");
        System.out.println("上田は" + ueda + "点");
        System.out.println("小田は" + oda + "点");
        System.out.println("平均点は" + avarage + "点");
    }
}

AvarageM.java

Expand allFold all
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
-
-
|
|
|
|
|
|
|
|
|
|
|
|
!
|
-
|
!
!
public class AvarageM{
    public static void main(String[] args){
        int yamada, ueda, oda;
        double av;
        
        yamada = 99;
        ueda = 47;
        oda = 64;
        av = avarage(yamada,ueda,oda);
 
        System.out.println("山田は" + yamada + "点");
        System.out.println("上田は" + ueda + "点");
        System.out.println("小田は" + oda + "点");
        System.out.println("平均点は" + av + "点");
    }
 
    public static double  avarage(int a, int b, int c){
        return (a + b + c)/3.0;
    }
}

Graph1.java

Expand allFold all
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
-
-
|
!
-
-
|
!
|
!
!
public class Graph1 {
    public static void main(String[] args) {
        printGraph(10);
    }
    public static void printGraph(int x) {
        for (int i = 0; i < x; i++) {
            System.out.print("*");
        }
        System.out.println("");
    }
}

Power1.java

Expand allFold all
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
-
-
|
!
|
-
|
-
|
!
|
!
!
public class Power1 {
    public static void main(String[] args) {
        System.out.println(getPower(8, 2));
    }
    /* x の n 乗の計算 */
    public static int getPower(int x, int n) {
        int y = 1;
        for (int i = 0; i < n; i++) {
            y = y * x;
        }
        return y;
    }
}

オブジェクト指向へ向けて

メソッドtoStringは、オブジェクトの情報を文字列で返すメソッド
Avarage7.java

Expand allFold all
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
-
-
-
|
|
|
|
|
!
|
-
|
|
!
|
|
!
!
public class Avarage7{
    public static void main(String[] args){
        Seiseki[] seiseki = {
            new Seiseki("山田", 99),
            new Seiseki("上田", 47),
            new Seiseki("小田", 64),
            new Seiseki("幸田", 43),
            new Seiseki("井田", 72),
        }; 
        int sum = 0;
        for (int i = 0; i < seiseki.length; i++){
                System.out.println(seiseki[i]);
                sum += seiseki[i].point;
        }
        double avarage = (double) sum / seiseki.length;
        System.out.println("平均点は" + avarage + "点");
    }
}

Seiseki.java:

Expand allFold all
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
-
|
|
|
-
|
|
!
|
-
|
!
!
public class Seiseki{
    String name;
    int point;
 
    public Seiseki(String name, int point){
        this.name = name;
        this.point = point;
    }
 
    public String toString(){
      return name + "は" + point + "点";
    }
}

コンパイル:

$ javac Avarage7.java Seiseki.java

実行:

$ java Avarage7

クラスとインスタンス

  • クラスは,関連した情報をひとつにまとめたもの
  • クラスは,フィールドとメソッドを持つ.
    • フィールドは,変数のようなもの
    • メソッドは,関数のようなもの
  • クラスから作られた「具体的なもの」(具体例,実体,実例)をインスタンスという.
  • クラス宣言
    public class クラス名 {
        フィールドの宣言
        メソッドの宣言
    }
  • インスタンスの作り方
    クラス名  変数  =  new  クラス名();
  • フィールドへの代入
    インスタンス.フィールド名 = 値;

コンストラクタとメソッド

  • コンストラクタは,インスタンスの初期化を行うもの.
    • コンストラクタは,クラス名と名前が同じ.
    • 戻り値の型が書かれていない.
  • thisは,現在のインスタンスを示す.
  • toStringメソッドは,そのクラスの標準的な文字列表現を定めている.

クラスの利用

  • クラスは,フィールドとメソッドを持っている
    • フィールドには,インスタンスフィールドと,クラスフィールドの2種類ある.
    • メソッドには,インスタンスメソッドと,クラスメソッドの2種類ある,

      クラス宣言の枠組み

        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
       11
       12
       13
       14
       15
       16
      
      public class クラス名{
      	型	フィールド名;
      	型	フィールド名;
      	型	フィールド名;
       
      	型	メソッド名( 引数列 ) {
      		型	変数名;
      		…
      	}
       
      	型	メソッド名( 引数列 ) {
      		型	変数名;
      		…
      	}
       
      }

主なロボットのmethod

ロボットの色

setColors(ボディの色, 砲塔の色, レーダーの色);
setColors(Color.red,Color.blue,Color.green);
選べる色:
black, darkGray, lightGray, gray, green, cyan, blue, magenda, red, orange, pink, white, yellow

ロボットの動作:

前進ahead(距離)
後退back(距離)
右回転turnRight(角度)
左回転turnLeft(角度)
砲塔右回転turnGunRight(角度)
砲塔左回転turnGunLeft(角度)
レーダー右回転turnRadarRight(角度)
レーダー左回転turnRadarLeft(角度)

ロボットの情報収集:

進行方向(絶対角度)getHeading()
スピードgetVelocity()
X座標getX()
Y座標getY()
砲塔方向(絶対角度)getGunHeading()
エネルギーgetEnergy()
名前getName()
getWidth()
高さgetHeight()

バトルフィールドの情報:

getBattleFieldWidth()
高さgetBattleFieldHeight()

さまざまなイベント:

イベント内容イベントメソッド引数
敵を発見した場合onScannedRobot()ScannedRobotEvent e
敵の攻撃を受けた場合onHitBybullet()HitByBulletEvent e
壁に衝突した場合OnHitWall()HitWallEvent e
他のロボットと衝突した場合onHitRobot()HitRobotEvent e
ロボットが勝ち残った場合onWin()WinEvent e


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-20 (月) 12:52:53 (1855d)