Opeには4つの柱があることを知り､ カプセル化について学びました｡
2つ目は何ですか？
まあ､ 抽象化というやつですね｡
そして､ 抽象化とは､ 情報を隠す､ あるいは情報を抽象化して必要なものだけにアクセスできるようにすることです｡
ですから､ ユーザーやプログラマー､ マシンが興味を持つものは何でも､ それ以外のすべてのものにアクセスできるようにしています｡
私たちは､ ユーザーがそれを気にする必要がないように､ フードの下に毛布で隠しているようなものなのです｡
どういうことか､ お見せしましょう｡
ここで昔の例に戻ると｡
つまり､ 辞書の代わりに､ たくさんのメソッドを持ったプレイヤーキャラクターが実際に存在するのです｡
抽象化というのは､ 実はここでも見られるんですね｡
私がプレイヤーをやると､ 1つの点が喋ります｡
実行」をクリックすると､ 抽象化された動作が見られます｡
このドリンクをいただくのですが､ speakを呼ぶと､ speakがどう実装されているかはあまり気にならないんです｡
私が知っているのは､ プレイヤー1がspeakメソッドにアクセスし､ 私がそれを使うことができるということだけです｡
タプルみたいなのを使ってる時も同じ｡
そうですね｡
1､ 2､ 3とあって､ ここにドットがあれば､ タプルの中にいくつの項目があるか数えることができる｡
だから､ 印刷をして､ 実行をクリックすると｡
まあ､ 求めているモノをあげないといけないんですけどね｡
私たちの場合､ 1つを見て､ ここにもう1つ追加してみましょう｡
実行」をクリックすると
私もそうです｡
さて､ countメソッドがどのように実装されたかを知る必要があるでしょうか｡
いいえ｡
つまり､ 調べに行けるんです｡
PythonのドキュメントやPythonのコードを見て､ 実際にどのようにこれらをカウントしているのかを理解することができるのです｡
でも､ 本当は必要ないんです｡
そうですね｡
いちいち細かく理解しようとすると､ 頭が爆発してしまいそうです｡
時には､ メソッドや属性が必要なだけで､ それがどのように実装されているかを気にすることなくアクセスできるのは､
本当に素晴らしいことです｡
内蔵機能も同様ですね｡
ここで長さを決めて､ 実行をクリックすると｡
長さは4と出ますが､ Pythonで長さがどのように実装されていたかはあまり知る必要がありません｡
私たちから抽象化されているのです｡
そして､ これこそがOPの力なのです｡
気にする必要のないものは抽象化され､ 少なくとも､ ある方法で動作することがわかるので､ ゼロから学習したりコーディングしたりする時間を無駄にすることなく､
より効率的に作業を進めることができるのです｡
例えば､ 私たちのiPhoneがあったとして､ まあ､ iPhoneのカメラ機能は､ 私たちが作るアプリがそれを使うにはいいでしょうが､
iPhoneのカメラがiPhoneのノートでどのようにコーティングされているかを実際に正確に知る必要はないでしょう｡
その代わり､ iPhoneは通常､ カメラ､ ドット､ テイクと言う方法を与えてくれます｡
写真
アップルのエンジニアが実際にどのようにカメラをコーディングしたかを知らなくても､ 実際に写真を撮れるようにすること｡
だから､ とても強力なコンセプトなんです｡
だから､ 抽象度を上げようかな､ と思っているんですね｡
でも､ これだけは聞いておきたい｡
プレイヤー1だけでいいですか？
ドット名イコール､ 例えばエクスクラメーションマーク､ そしてプレイヤードットラン｡
もしくは､ あのね？
スピークイコールトゥブーをしよう｡
プレイヤー1であることを確認してください｡
さて､ 今､ プリントしてプレイヤー1をやると｡
ドットスピークで､ この機能を動かしてみた｡
見てみよう｡
speakが変更されたため､ stringオブジェクトは呼び出すことができませんと表示されます｡
Speakは､ 私たちが必要としたであろうこの実際の関数の代わりに､ 文字列の値に変更されました｡
speak属性のチェックだけで実行するとブーイングが出るように｡
ふむ｡
抽象化するのはいいのですが､ ちょっとお待ちください｡
これはヤバい｡
抽象化してしまったけど､ 誰でも参加できるような授業があれば｡
どんなプログラマーが来ても､ 私の苦労を全部削って､ こんな風に上書きしてしまうことができるのです｡
それはまずくないですか？
一息ついて､ 次のビデオでこのテーマをもう少し掘り下げてみましょう｡