Transcript
Page 1: Python semi 第3回 --- What's OO Programming?

Python Semi 第3回黒柳研究室M1

学籍番号:26413508

大脇謙太

Page 2: Python semi 第3回 --- What's OO Programming?

第1回 Pythonとは , 基本的文法 , 組み込み型

第2回 パッケージを使う

第3回 オブジェクト指向とは

第4回 Numpy , Scipyを使った科学計算

Pythonゼミの予定

Page 3: Python semi 第3回 --- What's OO Programming?

前回のおさらい

モジュールを使う

import

from

as

紹介したモジュール

math

wave

Numpy

Matplotlib

Page 4: Python semi 第3回 --- What's OO Programming?

cos関数

Page 5: Python semi 第3回 --- What's OO Programming?

スペクトラム

Page 6: Python semi 第3回 --- What's OO Programming?

スペクトログラム

Page 7: Python semi 第3回 --- What's OO Programming?

FIDELにあげておきます

\\fidel\share\黒柳研資料\PythonSemi\第2回課題\

pysemi2_1.py

pysemi2_2.py

pysemi2_3.py

第2回課題ソースコード

Page 8: Python semi 第3回 --- What's OO Programming?

オブジェクト指向とはオブジェクトとは

クラスとは

インスタンスとは

Page 9: Python semi 第3回 --- What's OO Programming?

1. オブジェクト指向とは

2. オブジェクトとは

3. クラスとは

4. インスタンスとは

オブジェクト指向を理解するために

Page 10: Python semi 第3回 --- What's OO Programming?

もの(人)があって、それに命令を出す

オブジェクト指向とは?

テレビ例1

• 1chにしなさい!

•ボリュームを上げなさい!

•電源をきりなさい!

生徒例2

•OOまでに~~やりなさい!

•レポートを提出しなさい!

•学籍番号と名前を教えて

車例3

• スピードをあげなさい!

• スピードをおとしなさい!

•ギアを変えなさい!

Page 11: Python semi 第3回 --- What's OO Programming?

データと命令をまとめたもの

オブジェクトとは?

車種メーカーナンバー

アクセル()

ブレーキ()

ハンドル()

メンバ変数

メソッド

Page 12: Python semi 第3回 --- What's OO Programming?

設計図!

必要なメンバ変数

メソッドの処理

それらが書かれたもの

クラスとは?

Page 13: Python semi 第3回 --- What's OO Programming?

クラスをもとに作ったオブジェクト!

データやメソッドをもつ

インスタンスとは?

Page 14: Python semi 第3回 --- What's OO Programming?

オブジェクトを使う

Page 15: Python semi 第3回 --- What's OO Programming?

例: math モジュール

モジュールオブジェクト

pi

e

sin()

cos()

tan()

メンバ変数

メソッド

math

Page 16: Python semi 第3回 --- What's OO Programming?

math.sin(x)とかく

メソッドの記述

math

sin(x)の計算結果です

sin(x)を計算して!

Page 17: Python semi 第3回 --- What's OO Programming?

numpy.sin(x)とかく

メソッドの記述

numpy

sin(x)の計算結果です

sin(x)を計算して!

Page 18: Python semi 第3回 --- What's OO Programming?

同じ操作にたいして同じメソッドが使える

ポリモーフィズムという

同じメソッド??

math numpy

math.sin(x) numpy.sin(x)

“厳密には”

違うメソッド

Page 19: Python semi 第3回 --- What's OO Programming?

インスタンスを使う

Page 20: Python semi 第3回 --- What's OO Programming?

例 : ファイルリード

file

いったい何が書いてあるんだ?

Page 21: Python semi 第3回 --- What's OO Programming?

Wave_Readクラス ( wave )

インスタンスを生成

wave

file 専用Wave_read

オブジェクトです!

fileが読みたい

Wave_readクラス

これをもとにして

Page 22: Python semi 第3回 --- What's OO Programming?

インスタンスを使う

file

読める!読めるぞ!getframerate()

readframes()

Page 23: Python semi 第3回 --- What's OO Programming?

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?

何でできているのか?

どうやって作ったのか?

どうして読めるのか?

わからないけど、

必要なことはできる

これをカプセル化という

虫メガネの正体は?

Page 25: Python semi 第3回 --- What's OO Programming?

変数に代入する

Page 26: Python semi 第3回 --- What's OO Programming?

同じ型しか入らない

C言語

int

X16

“Hello World”

16.0

Page 27: Python semi 第3回 --- What's OO Programming?

X :X :

オブジェクト指向

Page 28: Python semi 第3回 --- What's OO Programming?

代入する型は?

どんなオブジェクト?

気にする必要はなし

変数が型を合わせてくれる

これを動的型付けという

変幻自在な箱

Page 29: Python semi 第3回 --- What's OO Programming?

変数に何のオブジェクトが入っているか注意

うっかりすると

X

X! getnframes()だ!突然のエラー

Page 30: Python semi 第3回 --- What's OO Programming?

クラスを作る

Page 31: Python semi 第3回 --- What's OO Programming?

種類

攻撃力

切れ味

攻撃範囲

攻撃モーション

ガード

近接武器を作る

メンバ変数

メソッド

Page 32: Python semi 第3回 --- What's OO Programming?

種類

攻撃力

使える弾

攻撃範囲

攻撃モーション

装填

遠距離武器を作る

メンバ変数

メソッド

Page 33: Python semi 第3回 --- What's OO Programming?

まとめて設定できないか

共通点は多い

Page 34: Python semi 第3回 --- What's OO Programming?

クラスを多重に利用

武器

近接武器 遠距離武器

種類攻撃力攻撃範囲

切れ味

攻撃モーション

ガード

使える弾

攻撃モーション

装填

Page 35: Python semi 第3回 --- What's OO Programming?

共通項目はまとめて

違う部分だけをかく

関係がわかりやすい

これをインヘリタンス

(継承)という

多重に利用すれば

Page 36: Python semi 第3回 --- What's OO Programming?

ポリモーフィズム カプセル化 動的型付け 継承

オブジェクト指向の特徴

Page 37: Python semi 第3回 --- What's OO Programming?

Enjoy your OO programing!

Page 38: Python semi 第3回 --- What's OO Programming?

みんなの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

参考文献


Top Related