pi-9. 多相性,インターフェイス,デザインパターン

>100 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-11. 多相性,イン ターフェイス, デザインパターン トピックス:クラス階層,多相性,インターフェ イス,デザインパターン URL: https://www.kkaneko.jp/cc/pi/index.html (Java の基本) 金子邦彦 1

2.

アウトライン 番号 項目 復習 11-1 クラス階層と多相性 11-2 インターフェイス 11-3 デザインパターン 各自、資料を読み返したり、課題に取り組んだりも行う この授業では、Java を用いて基礎を学び、マスターする 3

3.

Java Tutor の起動 ① ウェブブラウザを起動する ② Java Tutor を使いたいので,次の URL を開く http://www.pythontutor.com/ ③ 「Java」をクリック ⇒ 編集画面が開く 4

4.

Java Tutor でのプログラム実行手順 (1)「Visualize Execution」をク リックして実行画面に切り替える (2)「Last」をクリック. (4)「Edit this code」をク (3) 実行結果を確認する. リックして編集画面に戻る 5

5.

Java Tutor 使用上の注意点① • 実行画面で,次のような赤の表示が出ることがある → 無視してよい 過去の文法ミスに関する確認表示 邪魔なときは「Close」 6

6.

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

7.

11-1. クラス階層と多相性 8

8.

半径 3,場所(2, 4) 色 green 円(Circle) 幅 1, 高さ 2, 場所(6, 4) 色 black 長方形 (Rectangle) 9

9.

クラス階層は何のため? • 似通ったクラス Circle, Rectangle を使いたい.プロ グラムのミスを減らすため,スーパークラスを考える • 将来,図形の種類を増やすときにも有効 スーパークラス Figure 親 子 サブクラス Circle 親 子 Rectangle クラス Circle, クラス Rectangle が似ている. 共通する機能を、スーパークラス Figure にまとめる. 10

10.

半径 3,場所(2, 4) 色 green 円(Circle) Circle クラスでもあり, Figure クラスでもある 幅 1, 高さ 2, 場所(6, 4) 色 black 長方形 (Rectangle) Rectangle クラスでもあり, Figure クラスでもある 11

11.

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

12.

Java のメソッド • 面積を求める • そのためのメソッド size を定義 円: 半径 × 半径 × 3.14 長方形: 縦 × 横 13

13.

メソッドのオーバーライド • 同じ名前のメソッドが,クラスによって違った意 味を持つ メソッド area クラス Figure では 0 クラス Circle では 円の面積 クラス Rectangle では 長方形の面積 14

14.

演習 資料:16 ~ 18 【トピックス】 • クラス階層 • メソッドのオーバーライド 15

15.

① Java Tutor のエディタで次のプログラムを入れる メソッド move メソッド area メソッド area 16

16.

続き メソッド area メソッドを呼び出す部分 17

17.

② 実行し,結果を確認する 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 18

18.

多相性 • さまざまなサブクラスのオブジェクトを、「スー パークラスのオブジェクトである」と思って扱う ときに役立つ 19

19.

演習 資料:21 ~ 23 【トピックス】 • クラス階層 • メソッドのオーバーライド • 多相性 20

20.

① Java Tutor のエディタで次のプログラムを入れる 21

21.

続き 22

22.

② 実行し,結果を確認する 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 23

23.

• リストに、要素を追加 • このリストは「ArrayList<Figure>」 • x や a は、Figure クラスのオブジェクトとして、 リストに追加される • 多相性により、move メソッド(面積の算出)に 問題ない.x では円の面積、a では長方形の面積 24

24.

11-2. インターフェイスと実装 25

25.

さまざまなクラスのオブジェクトを、「同じ種類のオブ ジェクトである」かのように扱う2つの方法 ① スーパークラスとサブクラス、多相性 (11-1. で説明) 継承あり ② インターフェイス (11-2. で説明) Java 処理系は、クラスがインターフェイスに準拠 するかチェックを行う (「継承」は無関係) 26

26.

2つのクラス Matome 属性 Bara 属性 number price unit 数 (number)と 単価 (unit) 価格 (price) 共通する属性がない メソッド total total 名前は同じだが, 中身が違う 27

27.

インターフェイス 複数のクラス A, B が 名前が同じメソッドを持つとき A, B は,共通するインターフェイスを持つ と考えることができる (メソッドの中身は違っても構わない) Java 処理系には,クラスがインターフェイスに準 拠するかをチェックする機能がある. インターフェースは Java, C# 言語などが持つ機能 28

28.

インターフェイスの Java プログラム例 インターフェイス名 中身のないメソッド 29

29.

クラス定義で,インターフェイス準拠の指定 クラス Matome がインターフェイス Product に準拠するとき 30

30.

クラス定義で,インターフェイス準拠の指定 クラス Bara がインターフェイス Product に準拠するとき 31

31.

インターフェイスの機能① メソッドの定義を忘れるなどで、 インターフェイスに適合しないときは、 警告メッセージが出る 32

32.

演習 資料:34 ~ 36 【トピックス】 • インターフェイス 33

33.

① Java Tutor のエディタで次のプログラムを入れる インターフェイス クラス定義 34

34.

続き クラス定義 35

35.

② 実行し,結果を確認する 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 36

36.

インターフェイスの機能② コレクションとの組み合わせ ArrayList<インターフェイス名> のような使い方が可能 37

37.

演習 資料:39 ~ 41 【トピックス】 • インターフェイス • コレクション 38

38.

① Java Tutor のエディタで次のプログラムを入れる 39

39.

続き 40

40.

② 実行し,結果を確認する 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 41

41.

インターフェイス • インターフェイスは,あるメソッドが実装済みで あること保証する仕組み • コレクションで「ArrayList<インターフェイス名 >」のように書くこともできる • さまざまなクラスのオブジェクトを、「同じ種類 のオブジェクトである」かのように扱う仕組みの 1つ 42

42.

11-3. デザインパターン 43

43.

デザインパターンとは • デザインパターンとは,プログラムで頻出される とされるパターンのこと • デザインパターンを知り,活用することが,プロ グラムを簡単に確実に作成できる手段であると唱 える人も • デザインパターンの種類は 23 である(GoFの23 パターン)という説も 44

44.

デザインパターンの例 「Template Method」というデザインパターンの例. サブクラスごとにメソッドの中身が違う.スーパーク ラスでは、メソッドの中身は書かないというパターン 45

45.

関連ページ • Java プログラミング入門 GDB online を使用 https://www.kkaneko.jp/cc/ji/index.html • Java の基本 Java Tutor, GDB online を使用 https://www.kkaneko.jp/cc/pi/index.html • Java プログラム例 https://www.kkaneko.jp/pro/java/index.html 46