jp-10. 標準ライブラリ
(Java 体験学習シリーズ)
1
金子邦彦
アウトライン
10-1 復習
10-2 repl.it を使ってみる
10-3 時間,スリープ
10-4 疑似乱数
10-5 マルチスレッド
• 標準ライブラリ
の機能のうち,
時間,スリープ,疑似乱数,マ
ルチスレッドの機能を知る
• 標準ライブラリ
の機能を使うと
き,標準ライブラリのクラスを
継承して使う場合があることを
知る.
2
Java の標準ライブラリの機能
• コレクション (ArrayList, HashMap など)
• ラッパクラス
• 文字列の操作
• ファイルの操作
• その他
• 標準入出力 • 数値処理 • スレッド • 時間,タイマー • 疑似乱数 • ファイル読み書き3
10-1.復習
Java のオブジェクトの生成
次の2つの
オブジェクト
を生成する
Java プログラム
• このとき,次の
クラス
を使うことにする
5
a 1 2 "red" b 3 4 "green" x 5 6 "blue" 1 x y color rクラス名 Ball
属性 x, y, color
クラス名 Circle
属性 x, y, color, r
クラスの類似性
• 2つの
クラス
を考える
Ball
Circle
属性
属性
x
x
y
y
color
color
r
メソッド
move
move
reset
reset
6
全く同じ 追加クラスの類似性
Ball
Circle
7
全く同じ 追加 2つのクラスのプログラム問いかけ
8
全く同じ 追加Ball
Circle
同じようなプログラムを繰り返し書きたいですか? -> No. クラス階層により解決クラスの親子関係
• クラス①が
親
,クラス②が
子
であるとき
• クラス②は,クラス①の属性とメソッドをすべて持つ • クラス②で,クラス①にない属性やメソッドが追加さ れることがある9
クラス① クラス② 親 子 クラスBall クラスCircle 親 子 属性 r を追加 まとめページ親クラスからの継承
クラス名 Ball 属性 x, y, color メソッド move, reset10
クラス名 Circle 属性 x, y, color, r メソッド move, reset クラス Circle は,親クラスで あるクラス Ball の属性とメ ソッドを継承する. class Ball { double x; double y; String color;public Ball(double x, double y, String color) {
this.x = x; this.y = y;
this.color = color; }
public void move(double xx, double yy) {
this.x = this.x + xx; this.y = this.y + yy; }
public void reset() { this.x = x;
this.y = y; }
}
class Circle extends Ball { double r;
public Circle(double x, double y, String color, double r) {
super(x, y, color); this.r = r;
} }
Java でのクラスの親子関係の書き方
11
クラス階層を使わない (同じようなプログラムを繰り返す) クラス階層を使う 次ページに拡大図 Ball Circle Ball Circle 働きは 同じJava でのクラスの親子関係の書き方
12
親子関係の指定「class Circle extends Ball」
子クラスである Circle で追加される
属性,メソッドは書く
コンストラクタは書く.
super(x, y, color) により,親クラスの
10-2.repl.it を使ってみ
る
オンライン開発環境 repl.it
• プログラミングを行える Web サービス
https://repl.it/
• ウェブブラウザを使う
• たくさんの言語を扱うことができる
Python3, Java, C/C++, C#, JavaScript, R,
SQLite など
repl.it で Java を動かす手順
① ウェブブラウザを起動する
② 次の URL を開く
https://repl.it/
③ 「Languages」のところで,「Java」を選ぶ
エディタ画面 実行ボタン プログラムを 書き換えること ができる
17
端末画面 実行手順や 結果が表示される実習の指示
• 資料:19~24
• 次のことを理解しマスターする
• repl.it の使い方
①エディタに次のように入れ,実行し,実行結果を
確認する
System.out.
printf("%d", 3*2);
すべて半角文字 「*」は掛け算の記号19
20
動くボール 5 6 速度(1,1) いまから 行うこと ボールの 9秒間の動き の計算21
② エディタで,今のプログラムをすべて消したのち,次のように入れる
22
続けて,次のように入れる23
続けて,次のように入れ,実行し,実行結果を確認する24
指示:プリントの問1を解きなさい10-3.時間,スリープ
Java で現在日時の取得
26
スリープ
• パソコンの処理を,一定時間止
めたいことがありますか?
Yes
ゲームでのタイミング
一定間隔での監視
27
Java でタイマー
28
標準ライブラリ内のクラス Thread を使用 2秒止まる 「2000」 とあるのは ミリ秒単位実習の指示
• 資料:30~33
• 次のことを理解しマスターする
• スリープ
30
① エディタで,1秒待つためのプログラムを書き加える
try {
Thread.sleep(
1000
);
31
② 実行し,結果を確認する
表示は変わらないが, 1つ表示のたびに,
③ 現在日時の表示プログラムを書き加える
32
java.time.LocalDateTime d;d = java.time.LocalDateTime.now(); System.out.println(d);
33
② 実行し,結果を確認する.現在日時も表示されるように なる
10-4.疑似乱数
疑似乱数
• コンピュータの計算によって算出されたランダム
な数のこと
35
ランダム. そして,実行のたびに 違う値が表示される実習の指示
• 資料:37~38
• 次のことを理解しマスターする
• Javaでの疑似乱数の算出
37
① ボールの位置を疑似乱数で設定するためのプログラムを書
き加える
java.util.Random r = new java.util.Random();
MovingBall a = new MovingBall(r.nextInt(
10
),
r.nextInt(
10
), "blue", 1, 1);
38
② 実行し,結果を確認する
ランダムなので, 実行のたびに
10-5.マルチスレッド
スレッド
• スレッド
とは,処理の流れのこと.
• 複数の処理を並行させたいときには,
マルチス
レッド
(複数のスレッド)で処理を行う
Java でのマルチスレッド
別スレッドで動かしたいプログラム
41
処理の
本体
標準ライブラリのクラス Thread を継承
上のプログラムを別スレッドで起動
実習の指示
• 資料:43~44
• 次のことを理解しマスターする
• Java のマルチスレッドのプログラミング
43
① 「3秒ごとに Hello と表示するプログラム」を別スレッド
で動かしたい.そのために,Hello クラスを定義する次のプ
44
② ①のプログラムを別スレッドで起動するために,
45
③ 実行し,結果を確認する