#navi(Programming_II/14)
*お知らせ [#ac001bc7]
現在,課題サーバに不具合があったようで,アクセスできません.
課題提出は,延期の上,別途アナウンスする予定です.


*Contents [#l01cf1e2]

#contents

*出席 [#seefea7c]
-[[moodle:https://tarkus.eva.ie.u-ryukyu.ac.jp/moo/]]
//*出席 [#seefea7c]
//-[[moodle:https://tarkus.eva.ie.u-ryukyu.ac.jp/moo/]]
*クラスとインスタンス [#z68c0493]
(教科書11章)
**クラス宣言 [#s492c8a1]
 public class クラス名 {
     フィールドの宣言
     メソッドの宣言
 }
**拡張クラス宣言 [#vb6c1355]
 class MyThead extends Thread {
  ...
 }

**インタフェースを実装したクラスの宣言 [#m9035ddb]
 class MyRunner implements Runnable {
  ...
 }

*フィールドとメソッド [#x7d3f273]
List 11-1
#code(java){{
class Rectangle {
	int width;
	int height;
	void setSize(int w, int h){
		width = w;
		height = h;
	}
	int getArea() {
		return width * height;
	}
}
}}
*インスタンスの作り方 [#e8fbb7b8]
 Rectangle r = new Rectangle();

*フィールドへのアクセス [#n9e6b943]
 Rectangle r = new Rectangle();
 r.width = 123;
 r.height = 45;

 System.out.println("幅は" + r.width);
 System.out.println("高さは" + r.heigth);
*メソッドの呼び出し [#d28b4ade]
 Rectangle r = new Rectangle();
 r.setSize(123, 45);

*コンストラクタの利用 [#t3cbb0c7]
#code(java){{
class Rectangle {
    int width;
    int height;

    Rectangle(int w, int h){
        setSize(w, h);
    }

    void setSize(int w, int h){
        width = w;
        height = h;
    }

    int getArea() {
        return width * height;
    }
}
}}
コンストラクタがある場合:
 Rectangle r = new Rectangle(123, 45);

**例 [#f6f8f6da]
List 11-7 (教科書20ページ)
#code(java){{
class Rectangle {
    int width;
    int height;

    Rectangle(){
        setSize(10, 20);
    }

    Rectangle(int w, int h){
        setSize(w, h);
    }

    void setSize(int w, int h){
        width = w;
        height = h;
    }

    int getArea() {
        return width * height;
    }
    
    public static void main(String[] args){
        Rectangle r1 = new Rectangle();
        System.out.println("r1.width = " + r1.width);
        System.out.println("r1.height = " + r1.height);
        System.out.println("r1.getArea() = " + r1.getArea());
        Rectangle r2 = new Rectangle(123, 45);
        System.out.println("r2.width = " + r2.width);
        System.out.println("r2.height = " + r2.height);
        System.out.println("r2.getArea() = " + r2.getArea());
    }
}
}}
*クラスフィールドとクラスメソッド [#xd6048d1]
(下巻 P.23)
-クラスフィールド
-クラス変数
-スタティックフィールド


#code(java){{
class Rectangle {
    static int counter = 0;
    int width;
    int height;
    int number;

    Rectangle(){
        setSize(10, 20);
	number = counter;
	counter++;
    }

    Rectangle(int w, int h){
        setSize(w, h);
	number = counter;
	counter++;
    }

    void setSize(int w, int h){
        width = w;
        height = h;
    }

    int getArea() {
        return width * height;
    }

    public String toString(){
        return "幅= " + width + " 高さ= "+ height + "だよ";
    }

    public static void main(String[] args){
        Rectangle r1 = new Rectangle();
        System.out.println("r1.width = " + r1.width);
        System.out.println("r1.height = " + r1.height);
        System.out.println("r1.getArea() = " + r1.getArea());
        System.out.println("r1.number = " + r1.number);
        System.out.println("r1.counter = " + r1.counter);
        Rectangle r2 = new Rectangle(123, 45);
        System.out.println("r2.width = " + r2.width);
        System.out.println("r2.height = " + r2.height);
        System.out.println("r2.getArea() = " + r2.getArea());
	System.out.println("r2.number = " + r2.number);
        System.out.println("r2.counter = " + r2.counter);

        System.out.println("r1.number = " + r1.number);
        System.out.println("r1.counter = " + r1.counter);

        System.out.println(r1);
        System.out.println(r2);

    }
}
}}
**toString()メソッド [#i0d0d410]
そのクラスのインスタンスの標準的な文字列表現を定めます.

#code(Java){{
class Rectangle{
	...
	public String toString(){
		return "[ width = " + width + ", height = " + height + "]";
	}
}
}}
以下のように記述する.
 Rectangle r = new Rctangle(123, 45);
 System.out.println(r);
以下のように表示される.
 width= 123, height = 45

r.toStringメソッドを呼び出すと,戻り値の文字列をそのインスタンスの文字列表現として扱う.
*クラスメソッド [#g1615572]

*修飾子 [#bcc4eb0b]
-final
-abstract
-static
-synchronized
-native

*第3回レポート [#b7130a97]

-12月XX日に開催するロボコード大会のためにオリジナルロボットのプログラムを作成し提出せよ.
条件:オリジナルであること.
--ソースにコメントで,説明をつけること
--公開されているロボコードソースを引用した場合でも,自分でさらなる説明をつけること.
--大会後,上位者,下位者は,登壇し全員に対しソースの説明,勝因(もしくは,敗因)等をプレゼンすること.
-package名:e14
-ロボット名(ロボットクラス名):E1457XX_3(学生番号)
--javaファイルが複数ある場合,学籍番号_3というフォルダを作り(E145701_3),上記ファイルを入れて,zip圧縮して,そのファイルをアップロードせよ. (例:E145701_3.zip)
-締め切り:12月1日正午
-提出先:メール
*フォロー [#ud562b77]
-Emacsで[[開いている文書の文字コードを変更するには>Emacs/文字コード]]


#navi(Programming_II/14)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS