pi-3. メソッド,クラス,オブジェクトの生成(コンストラクタ)

215 Views

January 26, 22

スライド概要

Java の基本
URL: https://www.kkaneko.jp/cc/pi/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

pi-3. メソッド,クラス, オブジェクトの生成(コンストラクタ) (Java の基本) URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 1

2.

問いかけ • プログラミングでの根本問題は 何でしょうか? • プログラミングの一番の基礎は 何でしょうか? 2

3.

プログラミングでの根本問題 私の見解 • プログラミングでの根本問題は何でしょうか? 誤り(バグ)の無いプログラムの作成 • プログラミングの一番の基礎は何でしょうか? 抽象化 式を抽象化したもの = メソッドや関数 ※ クラス(同一種類のオブジェクトの集まり) も抽象化できるということは、次回以降の授業で 3

4.

アウトライン 番号 項目 説明時間の 目安 3-1 式の抽象化とメソッド 13分 3-2 メソッド呼び出し 8分 3-3 クラス定義,オブジェクト生成(コン ストラクタ) 11分 3-4 this によるアクセス 7分 3-5 メソッド定義と this に関する追加実習 9分 各自、資料を読み返したり、課題に取り組んだりも行う この授業では、Java を用いて基礎を学び、マスターする 4

5.

Java のまとめ(今回の授業の部分) • 抽象化は :変数を使って,複数の式を1つにまと めることなど • メソッド呼び出し:ジャンプ,変数の生成と消去 が自動で行われる • Java のクラス定義では,クラス名,属性名と各 属性のデータ型を指定する.メソッド定義も行う. • コンストラクタとは,オブジェクトの生成を行う メソッドのことである. • クラス定義のプログラムの中で,メソッドや属性 にアクセスするために this を使う場合がある 5

6.

3-1. 式の抽象化とメソッド URL: https://www.kkaneko.jp/pro/pi/index.html 金子邦彦 6

7.

オブジェクトとメソッド hero.moveDown() hero オブジェクト moveDown() メソッド 間を「.」で区切っている • オブジェクト コンピュータでの操作や処理の対象となるもののこと. ※ 値が変化するオブジェクトのことを変数と呼んだりもする • メソッド オブジェクトに属する操作や処理のこと 7

8.

式の抽象化 100 * 1.1 150 * 1.1 400 * 1.1 類似した複数の式 a * 1.1 変数 a を使って,複数 の式を1つにまとめる (抽象化) 8

9.

メソッド 100 * 1.1 a * 1.1 150 * 1.1 400 * 1.1 類似した複数の式 変数 a を使って,複数 の式を1つにまとめる (抽象化) 式「a * 1.1」を含むメソッド foo を定義し使用 9

10.

メソッド • このメソッドの本体は 「return a * 1.1;」 • このメソッドは,式「 a * 1.1」に,名前 foo を付けたものと考えることもできる 10

11.

式の抽象化とメソッド 抽象化前 類似した複数の式 実行結果 抽象化後 メソッドの定義と使用 同じ 実行結果になる 11

12.

実習 • 次のことを理解しマスターする • 式の抽象化とメソッド 12

13.

Java Tutor Java などのプログラミング言語の体験, 演習ができるオンラインサービス ① ウェブブラウザで次の URL を開く http://www.pythontutor.com/ 13

14.

使用上の注意点1 • 次のような表示が出ることがある → 無視してよい 過去の文法ミスに関する確認表示 邪魔なときは「Close」 14

15.

使用上の注意点2 「please wait ... executing」のとき、10秒ほど待つ. → 混雑しているときは、 「Server Busy・・・」 というメッセージが出ることがある. 混雑している.少し(数秒から数十秒)待つと自 動で表示が変わる(変わらない場合には,操作を もう一度行ってみる) 15

16.

② 「Java Tutor」をクリック 16

17.

「Java 8」になっている 最初から main メソッドの ひな形が入っている エディタ 実行のためのボタン 17

18.

③ Java Tutor で,次のソースコードを入れて実行. 実行結果を確認(あとで使うので消さないこと) 実行結果を確認 Visualize Execution をクリック, Last をクリック ※ 編集画面に戻るには Edit this code をクリック 18

19.

3-2. メソッド呼び出し URL: https://www.kkaneko.jp/pro/pi/index.html 金子邦彦 19

20.

メソッド呼び出し 呼び出し メソッドmain 呼び出され メソッドfoo 20

21.

ステップ実行 ステップ実行により、プログラム 実行の流れをビジュアルに観察 21

22.

実習 • 次のことを理解しマスターする • メソッド呼び出しにおけるジャ ンプ • メソッド内で使用される変数が 消えるタイミング 22

23.

① Java Tutor で,次のソースコードを入れて実行. 実行結果を確認(あとで使うので消さないこと) 実行結果を確認 Visualize Execution をクリック, Last をクリック ※ 編集画面に戻るには Edit this code をクリック 23

24.

②「First」をクリックして,最初に戻る 24

25.

③ 「Step 1 of 17」と表示されているので, 全部で,ステップ数は 17 あることが分かる (ステップ数と,プログラムの行数は違うもの) 25

26.

④ 最初に戻したので ・すべての変数やオブジェクトは消えている ・赤い矢印は,main メソッドの先頭 のところに戻っている 26

27.

⑤ ステップ実行したいので,「Next」をクリック しながら,矢印の動きを確認. ※「Next」ボタンを何度か押し,それ以上進めなく なったら終了 見どころ main と foo の間で ジャンプするところ 27

28.

⑥ 終わったら,もう一度,「First」をクリックし て,最初に戻る 28

29.

⑦ もう一度,ステップ実行. 今度は、緑の矢印を見ながら、変数 a が生成、消去 されるタイミングを確認 緑の矢印:いま実行が終わった行 メソッド foo の実行中は, 変数 a が現れる 29

30.

3-3. クラス定義,オブジェク ト生成(コンストラクタ) URL: https://www.kkaneko.jp/pro/pi/index.html 金子邦彦 30

31.

クラス • クラスは,同じ種類のオブジェクトの集まりと考 えることができる 31

32.

Java のクラスとオブジェクト 次の2つのオブジェクトを生成する Java プログラム a 1 b 3 x 2 4 y “red" “green" color • このとき,次のクラスを使うことにする クラス定義 コンストラクタ クラス名 Ball 属性 x, y, color オブジェクトの生成を 行うメソッドのことを コンストラクタという 32

33.

クラス定義,コンストラクタ • Java のクラス定義では,クラス名,属性名と各属 性のデータ型を指定する.メソッド定義も行う. (以下省略) • コンストラクタとは,オブジェクトの生成を行う メソッドのことである. 33

34.

実習 • 次のことを理解しマスターする • クラス定義 • オブジェクト生成(コンストラ クタ) 34

35.

① Java Tutor で,次のソースコードを入れる クラス定義 コンストラクタによるオブジェクト生成 35

36.

② 実行.実行結果を確認 「Visualize Execution」をクリック, 「Last」をクリック. (あとで使うので、プログラムを消さないこと) 2つのオブジェクト a, b が生成される 36

37.

キーワード • class クラス定義 • new コンストラクタ(オブジェクトの生成の メソッド)の呼び出し • return メソッドの評価値を呼び出し側に返す • String 文字列 37

38.

3-4. this によるアクセス URL: https://www.kkaneko.jp/pro/pi/index.html 金子邦彦 38

39.

メソッドと属性 • メソッドや属性は,クラスに属する • メソッド内のプログラムは,そのメソッドが所属 するクラスの属性やメソッドへのアクセス権があ る 39

40.

this による属性アクセス、メソッドアクセス • メソッド内で,そのメソッドが所属するクラスで 定義された属性やメソッドにアクセスするときは this +「.」 ※ それ以外の場合は「オブジェクト名」 + 「.」 40

41.

実習 • 次のことを理解しマスターする • this によるアクセス 41

42.

① Java Tutor で次のように入れて実行.実行結果 を確認.(あとで使うので消さないこと) メソッド内の属性アクセス 実行結果 42

43.

3-5. メソッド定義と this に関す る追加実習 URL: https://www.kkaneko.jp/pro/pi/index.html 金子邦彦 43

44.

Java のメソッド • 上下左右の移動を考える • オブジェクトの属性 x, y を増減 • そのためのメソッド move を定義 y 左 x が減る 上 y が増える 右 x が増える 下 y が減る x 44

45.

実習 • 資料:47~50 • 次のことを理解しマスターする • メソッド定義 • 「.」を用いたメソッドへのアク セス 45

46.

① Java Tutor で次のように入れて実行. 実行結果を確認. 2つのオブジェクト a, b メソッド定義 「.」でメソッドにアクセス 46

47.

属性 x, y の変化 47

48.

③ Java Tutor で次のように書き換えなさい.結果 を確認. 48

49.

上や下に動かすためのメソッドを、 メソッド left, right を参考に作ってみなさい。 49