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

Preview:

Citation preview

Python Semi 第3回黒柳研究室M1

学籍番号:26413508

大脇謙太

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

第2回 パッケージを使う

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

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

Pythonゼミの予定

前回のおさらい

モジュールを使う

import

from

as

紹介したモジュール

math

wave

Numpy

Matplotlib

cos関数

スペクトラム

スペクトログラム

FIDELにあげておきます

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

pysemi2_1.py

pysemi2_2.py

pysemi2_3.py

第2回課題ソースコード

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

クラスとは

インスタンスとは

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

2. オブジェクトとは

3. クラスとは

4. インスタンスとは

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

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

オブジェクト指向とは?

テレビ例1

• 1chにしなさい!

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

•電源をきりなさい!

生徒例2

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

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

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

車例3

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

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

•ギアを変えなさい!

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

オブジェクトとは?

車種メーカーナンバー

アクセル()

ブレーキ()

ハンドル()

メンバ変数

メソッド

設計図!

必要なメンバ変数

メソッドの処理

それらが書かれたもの

クラスとは?

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

データやメソッドをもつ

インスタンスとは?

オブジェクトを使う

例: math モジュール

モジュールオブジェクト

pi

e

sin()

cos()

tan()

メンバ変数

メソッド

math

math.sin(x)とかく

メソッドの記述

math

sin(x)の計算結果です

sin(x)を計算して!

numpy.sin(x)とかく

メソッドの記述

numpy

sin(x)の計算結果です

sin(x)を計算して!

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

ポリモーフィズムという

同じメソッド??

math numpy

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

“厳密には”

違うメソッド

インスタンスを使う

例 : ファイルリード

file

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

Wave_Readクラス ( wave )

インスタンスを生成

wave

file 専用Wave_read

オブジェクトです!

fileが読みたい

Wave_readクラス

これをもとにして

インスタンスを使う

file

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

readframes()

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() # ファイルを閉じる

何でできているのか?

どうやって作ったのか?

どうして読めるのか?

わからないけど、

必要なことはできる

これをカプセル化という

虫メガネの正体は?

変数に代入する

同じ型しか入らない

C言語

int

X16

“Hello World”

16.0

X :X :

オブジェクト指向

代入する型は?

どんなオブジェクト?

気にする必要はなし

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

これを動的型付けという

変幻自在な箱

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

うっかりすると

X

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

クラスを作る

種類

攻撃力

切れ味

攻撃範囲

攻撃モーション

ガード

近接武器を作る

メンバ変数

メソッド

種類

攻撃力

使える弾

攻撃範囲

攻撃モーション

装填

遠距離武器を作る

メンバ変数

メソッド

まとめて設定できないか

共通点は多い

クラスを多重に利用

武器

近接武器 遠距離武器

種類攻撃力攻撃範囲

切れ味

攻撃モーション

ガード

使える弾

攻撃モーション

装填

共通項目はまとめて

違う部分だけをかく

関係がわかりやすい

これをインヘリタンス

(継承)という

多重に利用すれば

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

オブジェクト指向の特徴

Enjoy your OO programing!

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

参考文献