po-7. クラス階層,継承

スライド概要

Python プログラミング演習
URL: https://www.kkaneko.jp/cc/po/index.html

profile-image

kunihikokaneko

@6674398749

作者について:

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

スライド一覧
シェア
埋め込む»CMSなどでJSが使えない場合

公開日

2021-12-21 12:03:31

各ページのテキスト

1. po-7. クラス階層,継承 プログラミングの基礎を Python で学びたい人へ(全9回) URL: https://www.kkaneko.jp/cc/po/index.html 金子邦彦 1

2. 7-1 復習 7-2 クラス階層 7-3 継承 アウトライン • クラス階層を理解し,親クラス, 子クラスを Python で扱えるよう になる. • 継承について理解する. 2

3. 7-1.復習 3

4. Python のオブジェクトの生成 • 次の2つのオブジェクトを生成する Python プロ グラム a 1 2 "red" b 2 x 4 y "green" color • クラス Ball のオブジェクト生成を行うプログラム 4

5. Python のメソッド 次のメソッドを考える. • Ball クラスに属するメソッド move • このメソッドは,オブジェクトの属性 x, y を増減させ るためのもの y 左 x が減る 上 y が増える 右 x が増える 下 y が減る x 5

6. クラス定義 クラス定義の中には,コンストラクタの定義,その 他メソッドの定義を含める. オブジェクトの生成を行うメソッドのことを コンストラクタという 6

7. • 資料:8~14 • 次のことを理解しマスターする 演習の指示 • クラス定義 • コンストラクタによるオブジェ クト生成 • メソッド定義 • 「オブジェクト名」+「.」で属 性やメソッドにアクセス 7

8. 演習 ① ウェブブラウザを起動する ② Python Tutor を使いたいので,次の URL を開く http://www.pythontutor.com/ 8

9. ③ 「Python Tutor」をクリック 9

10. 「Python 3.6」になっている エディタ 実行のためのボタン 10

11. Python Tutor でのプログラム実行手順 (1)「Visualize Execution」 をクリック. (3) 結果を確認する. (2)「Last」をクリック. (4)「Edit this code」 11 をクリックして戻る

12. ④ 次のプログラムを実行し,結果を確認しなさい 12

13. 13

14. 14

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

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

17. • 資料:18~21 • 次のことを理解しマスターする 演習の指示 • オブジェクトが生成されるタイ ミング • いま使用したプログラムは,次 で使うので,消さずに残してお くこと 17

18. ステップ実行により、プログラム実行の流れをビ ジュアルに観察 ①「First」をクリックして,最初に戻しなさい 18

19. ②「Step 1 of 21」と表示されているので, 全部で,ステップ数は 21 あることが分かる 19

20. ③ 最初に戻したので ・すべてのオブジェクトは消えている ・赤い矢印は,main メソッドの先頭コマンド のところに戻っている 20

21. ④ ステップ実行したいので,「Next」をクリック しながら,矢印の動きを確認しなさい. ※「Next」ボタンを何度か押し,それ以上進めな くなったら終了 ジャンプする 実行が進むと, オブジェクトが更新される 21

22. 7-2.クラス階層 22

23. 問いかけ • オブジェクト指向の利点は何で しょうか? 23

24. クラス階層とは クラス階層とは,複数のクラスが親子 関係をなすこと まとめページ クラスA 親 子 クラスB 親 子 クラスC 親 子 クラスD 24

25. 継承 • 継承とは,親クラスの属性とメソッドを子クラスが 受け継ぐこと • 親クラスのことを「スーパークラス」,子クラスの ことを「サブクラス」ともいう 25

26. Python のオブジェクトの生成 • 次の3つのオブジェクトを生成 a 1 2 "red" b 3 4 "green" x 6 y "blue" color 5 x 1 r • オブジェクト生成を行うプログラム 26

27. クラスの類似性 • 類似した2つのクラス Ball 属性 Circle 属性 x x y y color メソッド x, y, color は同じ r の有り無しが 違う color r move move reset reset メソッドの名前も 中身も全く同じとする 27

28. 2つのクラスのプログラム (親子関係にしない場合) Ball Circle 追加 全く同じ 28

29. 問いかけ 同じようなプログラムを繰り返し書きたいですか? -> No. クラス階層により解決 Ball Circle 追加 全く同じ 29

30. クラスの親子関係 • クラス①が親,クラス②が子であるとき • クラス②は,クラス①の属性とメソッドをすべて持つ • クラス②で,クラス①にない属性やメソッドが追加さ れることがある クラス① クラスBall 親 親 子 子 クラス② クラスCircle 属性 r を追加 30

31. クラスの親子関係 クラス名 Ball 属性 x, y, color メソッド move, reset クラス名 Circle 属性 x, y, color, r メソッド move, reset クラス Circle は,親クラスで あるクラス Ball の属性とメ ソッドを継承する. 31

32. 2つのクラスのプログラム 親子関係にしない場合とする場合の比較 Ball Ball 働きは 同じ Circle 親子関係にしない (同じようなプログラムを繰り返す) Circle 親子関係にする 32

33. Python でのクラスの親子関係の書き方 親子関係の指定「class Circle(Ball):」 子クラスである Circle で追加される 属性,メソッドを書く コンストラクタの定義. super(Circle, self).__init__ により,親クラスの コンストラクタを呼び出していることに注意 33

34. Python でのクラスの親子関係の書き方 親クラスのコンストラクタを 呼び出して,属性値を設定 子クラスで追加した属性を設定 34

35. 問いかけ • オブジェクト指向の利点は何で しょうか? クラス階層により,プログラムが書 きやすい (金子見解) 35

36. 7-3.継承 36

37. • 資料:38~40 演習の指示 • 次のことを理解しマスターする • 親子関係にある2つのクラス定 義 • クラス定義での親クラスの指定 • 親クラスのコンストラクタの呼 び出し • 継承 37

38. ④次のようにプログラムを書き換えなさい プログラムは,次ページに続いている Ball クラス定義の部分 38

39. Circle クラス定義と, コンストラクタによるオブジェクト生成 結果は次ページに記載 39

40. 40

41. 全体まとめ • クラス階層とは,複数のクラスが親子関係をなす こと • クラス①が親,クラス②が子であるとき • クラス②は,クラス①の属性とメソッドをすべて持つ • クラス②で,クラス①にない属性やメソッドが追加さ れることがある • 親子関係の指定は,「class Circle(Ball):」のよう に書く.Circle が子,Ball が親. • 継承とは,親クラスの属性とメソッドを子クラス が受け継ぐこと • 親クラスのことを「スーパークラス」,子クラス のことを「サブクラス」ともいう 41

42. 関連資料 • Python まとめページ https://www.kkaneko.jp/cc/python/googlecolab.html • Python の基本 Google Colaboratory,Paiza.IO を使用. https://www.kkaneko.jp/cc/colab/index.html • Python 入門(全6回) Google Colaboratoryを使用. https://www.kkaneko.jp/cc/pf/index.html • Python プログラミング演習(全9回) Python Tutor, VisuAlgo を使用 https://www.kkaneko.jp/cc/po/index.html • さまざまな Windows アプリケーションのインストールと設定 https://www.kkaneko.jp/cc/tools/index.html 42