Download - Python semi 第3回 --- What's OO Programming?
![Page 1: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/1.jpg)
Python Semi 第3回黒柳研究室M1
学籍番号:26413508
大脇謙太
![Page 2: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/2.jpg)
第1回 Pythonとは , 基本的文法 , 組み込み型
第2回 パッケージを使う
第3回 オブジェクト指向とは
第4回 Numpy , Scipyを使った科学計算
Pythonゼミの予定
![Page 3: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/3.jpg)
前回のおさらい
モジュールを使う
import
from
as
紹介したモジュール
math
wave
Numpy
Matplotlib
![Page 4: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/4.jpg)
cos関数
![Page 5: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/5.jpg)
スペクトラム
![Page 6: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/6.jpg)
スペクトログラム
![Page 7: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/7.jpg)
FIDELにあげておきます
\\fidel\share\黒柳研資料\PythonSemi\第2回課題\
pysemi2_1.py
pysemi2_2.py
pysemi2_3.py
第2回課題ソースコード
![Page 8: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/8.jpg)
オブジェクト指向とはオブジェクトとは
クラスとは
インスタンスとは
![Page 9: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/9.jpg)
1. オブジェクト指向とは
2. オブジェクトとは
3. クラスとは
4. インスタンスとは
オブジェクト指向を理解するために
![Page 10: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/10.jpg)
もの(人)があって、それに命令を出す
オブジェクト指向とは?
テレビ例1
• 1chにしなさい!
•ボリュームを上げなさい!
•電源をきりなさい!
生徒例2
•OOまでに~~やりなさい!
•レポートを提出しなさい!
•学籍番号と名前を教えて
車例3
• スピードをあげなさい!
• スピードをおとしなさい!
•ギアを変えなさい!
![Page 11: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/11.jpg)
データと命令をまとめたもの
オブジェクトとは?
車種メーカーナンバー
…
アクセル()
ブレーキ()
ハンドル()
…
メンバ変数
メソッド
![Page 12: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/12.jpg)
設計図!
必要なメンバ変数
メソッドの処理
それらが書かれたもの
クラスとは?
![Page 13: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/13.jpg)
クラスをもとに作ったオブジェクト!
データやメソッドをもつ
インスタンスとは?
![Page 14: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/14.jpg)
オブジェクトを使う
![Page 15: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/15.jpg)
例: math モジュール
モジュールオブジェクト
pi
e
sin()
cos()
tan()
…
メンバ変数
メソッド
math
![Page 16: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/16.jpg)
math.sin(x)とかく
メソッドの記述
math
sin(x)の計算結果です
sin(x)を計算して!
![Page 17: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/17.jpg)
numpy.sin(x)とかく
メソッドの記述
numpy
sin(x)の計算結果です
sin(x)を計算して!
![Page 18: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/18.jpg)
同じ操作にたいして同じメソッドが使える
ポリモーフィズムという
同じメソッド??
math numpy
math.sin(x) numpy.sin(x)
“厳密には”
違うメソッド
![Page 19: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/19.jpg)
インスタンスを使う
![Page 20: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/20.jpg)
例 : ファイルリード
file
いったい何が書いてあるんだ?
![Page 21: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/21.jpg)
Wave_Readクラス ( wave )
インスタンスを生成
wave
file 専用Wave_read
オブジェクトです!
fileが読みたい
Wave_readクラス
これをもとにして
![Page 22: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/22.jpg)
インスタンスを使う
file
読める!読めるぞ!getframerate()
readframes()
…
![Page 23: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/23.jpg)
wavファイルを扱うときに使う
研究でもよく使うパッケージ
wave(第2回より再掲)
例1 import wave
2 wf = wave.open( filename , “r” ) # ファイルを開く
3 fs = wf.getframerate() # サンプリングレートを返す
4 wf.setpos( pos ) # ファイルポインタを移動する
5 c = wf.readframes(n) # nサンプル読み込みます(cは文字列)
6 wf.close() # ファイルを閉じる
![Page 24: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/24.jpg)
何でできているのか?
どうやって作ったのか?
どうして読めるのか?
わからないけど、
必要なことはできる
これをカプセル化という
虫メガネの正体は?
![Page 25: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/25.jpg)
変数に代入する
![Page 26: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/26.jpg)
同じ型しか入らない
C言語
int
X16
“Hello World”
16.0
![Page 27: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/27.jpg)
X :X :
オブジェクト指向
![Page 28: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/28.jpg)
代入する型は?
どんなオブジェクト?
気にする必要はなし
変数が型を合わせてくれる
これを動的型付けという
変幻自在な箱
![Page 29: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/29.jpg)
変数に何のオブジェクトが入っているか注意
うっかりすると
X
X! getnframes()だ!突然のエラー
![Page 30: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/30.jpg)
クラスを作る
![Page 31: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/31.jpg)
種類
攻撃力
切れ味
攻撃範囲
攻撃モーション
ガード
近接武器を作る
メンバ変数
メソッド
![Page 32: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/32.jpg)
種類
攻撃力
使える弾
攻撃範囲
攻撃モーション
装填
遠距離武器を作る
メンバ変数
メソッド
![Page 33: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/33.jpg)
まとめて設定できないか
共通点は多い
![Page 34: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/34.jpg)
クラスを多重に利用
武器
近接武器 遠距離武器
種類攻撃力攻撃範囲
切れ味
攻撃モーション
ガード
使える弾
攻撃モーション
装填
![Page 35: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/35.jpg)
共通項目はまとめて
違う部分だけをかく
関係がわかりやすい
これをインヘリタンス
(継承)という
多重に利用すれば
![Page 36: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/36.jpg)
ポリモーフィズム カプセル化 動的型付け 継承
オブジェクト指向の特徴
![Page 37: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/37.jpg)
Enjoy your OO programing!
![Page 38: Python semi 第3回 --- What's OO Programming?](https://reader034.vdocuments.net/reader034/viewer/2022051516/55a8d87f1a28abbe3e8b4618/html5/thumbnails/38.jpg)
みんなのPython – SoftBank Creative
オブジェクト指向 – Wikipediahttp://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91
オブジェクト指向プログラミング - Wikipediahttp://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
参考文献