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

2.

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

3.

j9-1. クラス階層と多 相性 Java を基礎から学びた い人へ(入門者向け) 金子邦彦 4

4.

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

5.

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

6.

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

7.

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

8.

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

9.

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

10.

① Java Tutor で,次のソースコードを入れる メソッド move メソッド area メソッド area 11

11.

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

12.

② 実行.実行結果を確認 「Visualize Execution」をクリック, 「Last」をクリック. 13

13.

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

14.

① Java Tutor で,次のソースコードを入れる 15

15.

続き 16

16.

② 実行.実行結果を確認 「Visualize Execution」をクリック, 「Last」をクリック. 17

17.

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

18.

j9-2. インターフェイ スと実装 Java を基礎から学びた い人へ(入門者向け) 金子邦彦 19

19.

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

20.

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

21.

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

22.

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

23.

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

24.

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

25.

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

26.

① Java Tutor で,次のソースコードを入れる インターフェイス クラス定義 27

27.

続き クラス定義 28

28.

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

29.

② 実行.実行結果を確認 「Visualize Execution」をクリック, 「Last」をクリック. 30

30.

① Java Tutor で,次のソースコードを入れる 31

31.

続き 32

32.

② 実行.実行結果を確認 「Visualize Execution」をクリック, 「Last」をクリック. 33

33.

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

34.

j9-3. デザインパター ン Java を基礎から学びた い人へ(入門者向け) 金子邦彦 35

35.

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

36.

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