お帰りなさい｡
Pythonに限らず､ オブジェクト指向のパラダイムをサポートするあらゆるプログラミング言語で､
オブジェクト指向プログラミングについて改めて学ぶとき､ オブジェクト指向プログラミングが本当によくできている4つの柱という考え方があることを､
まだお伝えしていませんでしたね｡
そして実のところ､ 私たちは実際に最初の1つを学びました｡ それはカプセル化の考え方です｡
カプセル化とは？
カプセル化とは､ データとそのデータを操作する関数を結合することです｡
そして､ 1つの大きなオブジェクトにカプセル化し､ ユーザーやコード､ 他のマシンが対話できるように､ すべてをこの箱の中に入れておくのです｡
そして､ このデータや機能は､ いわゆる属性やメソッドと呼ばれるものですね｡
名前と年齢のデータまたは属性を持つことで､ プレイヤーキャラクターの機能をカプセル化し､ さらにこの名前と年齢を操作することができる関数を持つことができるのです｡
だから､ 例えば､ メソッドを持つことができるんだ｡
この中にShoutと書いてある｡
話すことも｡
そして､ スピークメソッドは､ 名前と年齢が使えるようになりました｡
と言えるのです｡
私はセルフドッドネームと申します｡
そして､ 私はそうです｡
セルフです｡
8歳｡
そうすれば､ もし私がプレーヤーになったとしても､ 1つの点を話すことができます｡
そして､ これを実行します｡
私の名前はアンドレ､ 100歳です｡
機能をカプセル化しているんです｡
もし､ このクラスがなかったら､ いくつかの変数と2つの関数があったでしょう｡
しかし､ カプセル化によって､ 私はこれを複数のオブジェクトを作成できる青写真にパッケージ化しました｡
これにより､ 他の人が私のコードを見たときに､ 「これは私が操作できるオブジェクト全体だ」とわかります｡
プレイヤーキャラクターが描く､ ある意味での使い方ができる｡
また､ Pythonの組み込みデータ型でも､ このようなことがありましたね｡
文字列を作成すると
こんな感じ｡
カプセル化されているため､ すべての機能が利用可能で､ すべてのメソッドにアクセスすることができ､
例えばcapitalizeを実行すると､ 私のすべての強みを生かすことができます｡
私は､ この機能をすべてカプセル化して使っています｡
今すぐ
なぜ､ データや機能を属性やメソッドにパッケージ化するのか？
まあ､ これで余分なパワーが得られるからでしょう？
例えば､ このプレイヤーキャラクターが､ アクションもメソッドも持たず､ 属性だけを持っていたとします｡
まあ､ その場合､ これは辞書みたいなものですよね？
ここでプレイヤー1をプリントして実行をクリックしても､ ちょっと意味がないんです｡
このプレーヤーオブジェクトはありますが､ 名前にはこのようにアクセスできます｡
そして､ Hにもアクセスできる｡
こんな感じ｡
でも､ 本当に何もできないんです｡
ここに同じ辞書があってもいい｡
例えば､ プレイヤー2が「Andre」という名前と「100歳」という年齢を持つ辞書に相当するとしましょう｡
そして､ この2つの本当の違いは､ 私がこの情報にアクセスする方法だけなのです｡
ドット記法の代わりに､ ブラケット記法でキーにアクセスする｡
実行をクリックしたときに､ そうなるように｡
ああ｡
ここで2人分､ プレイヤー2にすることを確認しなければならない｡
実行」をクリックすると
もう一度｡
同じことなんです｡
確かにこうすればいいんだけど､ なんだか無駄な気がするんだよね｡
データが欲しいだけなのに､ なぜ辞書を作らないの？
しかし､ この方法を使って､ 私は物事を組み合わせ､ そのインスタンスや箱にパッケージングすることで､
有用であり､ また意味を持つものにします｡
そうだろ？
だって､ 私たちの世界はデータと行動で溢れていますよね｡
例えば木でも､ 現実の世界で木の授業があれば､ 木には常緑樹か多年草か､
リースがあるかないか､ 高さはどれくらいか､ などがあります｡
その情報だけでなく､ 行動も含めて｡
そうだろ？
木を切り倒すことができる
木は成長し､ 木は根を伸ばすことができる｡
こうすることで､ 現実の世界で起こっていることをコードで模倣することができるのです｡
それがカプセル化であり､ 私たちはそれを見てきたわけです｡
しかし､ 次のビデオでは､ 2つ目の柱についてお話ししましょう｡