po-8. 継承に関する演習

>100 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-8. 継承に関する演習 プログラミングの基礎を Python で学びたい人へ(全9回) URL: https://www.kkaneko.jp/cc/po/index.html 金子邦彦 1

2.

8-1 復習 8-2 継承に関する演習 アウトライン • クラス階層と継承の有用性を理 解し,Python で扱えるようにな る. 2

3.

8-1.復習 3

4.

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

5.

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

6.

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

7.

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

8.

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

9.

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

10.

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

11.

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

12.

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

13.

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

14.

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

15.

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

16.

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

17.

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

18.

③ 「Python Tutor」をクリック 18

19.

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

20.

Python Tutor でのプログラム実行手順 ①「Visualize Execution」を クリック. ③ 結果を確認する. ②「Last」をクリック. ④「Edit this code」を 20 クリックして戻る

21.

④ 次のプログラムを実行し,結果を確認しなさい プログラムは,次ページに続いている Ball クラス定義の部分 21

22.

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

24.

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

25.

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

26.

8-2. 継承に関する演習 26

27.

ここで行うこと クラス名 Ball 属性 x, y, color クラス Ball 親 子 クラスCircle クラス名 Circle メソッド move, reset 親 子 クラスSquare クラス名 Square 属性 x, y, color, r 属性 x, y, color, s メソッド move, reset, area メソッド move, reset, area 円 正方形 27

28.

• 資料:29~32 演習の指示 • 次のことを理解しマスターする • Ball, Circle, Square のクラス定 義により,継承をより深く理解 する 28

29.

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

30.

② Circle クラス部分を,次のように書き換えなさい 30

31.

Square クラス定義, コンストラクタによるオブジェクト生成,メソッド呼び出し 結果は次ページに記載 31

33.

関連資料 • 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 33