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

120 Views

December 21, 21

スライド概要

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

profile-image

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

シェア

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

各ページのテキスト
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

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

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