前回のビデオでは､ Opieはパラダイムと呼ばれるもので､ コードについて考え､ コードを構成するための方法であることを学びました｡
そして､ プログラミング言語の歴史に関するWikipediaの素晴らしい記事をリンクしておきます｡
まずは基本的なプログラミング言語からスタートしましたね｡
アセンブリ言語のように､ 低レベルでマシンコードに近いものもあります｡
COBOLのようなものがあって､ 60年代から70年代にかけてコードをどんどん書いていくうちに､
基本的なパラダイムが確立されていったんです｡
そして､ 特にSmalltalkというプログラミング言語で生まれた大きなパラダイムの1つが､
オブジェクト指向プログラミングやオブジェクト指向言語という考え方でした｡
それまで､ 私たちは手続き型コードと呼ばれるものを書いていたんですね｡
どういうことかというと､ 例えばPythonのファイルを見てみると､ 手続き的なコードはプロシージャと同じようなものだったのです｡
単純に1行目から100行目まであって､ その上から下に行くだけなんです｡
条件分岐やループもありましたが､ すべて「ああしろ､ こうしろ」でした｡
私たちが機械に､ 「おい､ これだけは正確にやれよ」と言ったのです｡
これから､ オブジェクト指向のパラダイムを紹介しながらお伝えします｡
これが少し変わりました｡
そこで､ 実世界のオブジェクトをコードで表現してみよう､ ということになったのです｡
例えば､ これから車をコーディングする場合､ 車オブジェクトを作ります｡ 車オブジェクトには､ 色は何色か､
エンジンの種類は何か､ 座席はいくつあるかといったデータの他に､ 車が前進する､
後退する､ ドアを開けるといったメソッドのようなアクションも持たせます｡
そして､ 一行一行の手続き的なコードではなく､ モデルや現実世界の青写真という観点から考えることができるのです｡
部屋を思い浮かべてください｡
物を整理して､ 特定の場所にいろいろなグループがいて､ 一緒に作業することで工場を考える｡
それは､ 物事を考える上でも､ 実行する上でも､ より良い方法だと思います｡
では､ Pythonではどうでしょうか｡
Pythonはオブジェクト指向の言語であり､ オープンなアイデアをサポートすることができます｡
このオブジェクトとモデリングという考え方は､ typeを使うときに見てきましたが､ このclassキーワードを使うので､
すべてがオブジェクトであることがわかります｡
しかし､ このPythonのclassキーワードは何なのでしょうか？
自分でデータを作って､ classと言うだけで自分のクラスを打ち､ その後に好きな名前を付けることができるんです｡
クラスとしましょう｡
大きい｡
オブジェクトです｡
今すぐにでも｡
ここで､ 命名規則が今までと違うことがわかると思います｡
標準である大文字表記にします｡
プログラマーには､ これがクラスになることを知らせたいし､ スネークケースを使うこともないのです｡
私たちはキャメルケースと呼ばれる､ 新しい単語はすべて大文字にする方法をとっています｡
そして､ ここでコロンを使い､ この中にコードを書きます｡
さて､ 今すぐコードを書くつもりはない｡
パスする
しかし､ ここで新しいクラスを作ったので､ 例えば､ 次のようにします｡
タイプです｡
Big Objectと私はRunをクリックします｡
というのも､ 今作成したのはこのクラスで､ これはブループリントですが､ 実際にはオブジェクトを作成していないからです｡
表現がわかりにくいかもしれませんが､ ご容赦ください｡
これを説明します｡
これで､ 例えば､ 大きなオブジェクトに等しいオブジェクトを作成し､ このクラスを実行することができます｡
つまり､ ここにオブジェクトを入力して､ オブジェクト1､ 実行をクリックします｡
クラスがわかる｡
大きな物体｡
ここのメインは後で話すので､ とりあえず無視でOKです｡
しかし､ ここで私は自分のオブジェクトを作ったばかりであることがわかります｡
さて､ 今ここで起こったことは､ 理解することが多いので考えてみましょう｡
オブジェクト指向のプログラミングでは､ クラスとオブジェクトという考え方がありますよね｡
さて､ 授業とはこのようなものです｡
それが青写真です｡
作りたいものの青写真｡
私たちのクラスが持っている基本的な属性､ つまりプロパティは何でしょうか？
私たちのクラスが取ることのできる基本的なメソッドやアクションにはどのようなものがあるでしょうか？
そして､ この設計図をもとに､ さまざまなオブジェクトを何度も作り直すことができるのです｡
この設計図がクラスと呼ばれるものですね｡
このクラスは､ classキーワードで定義し､ インスタンス化することができます｡
それが､ 異なるインスタンスを作成する動作です｡
そして､ その事例とはどのようなものでしょうか｡
これらはすべてオブジェクトです｡
さて､ ここでのネーミングは､ 慣れるしかないでしょう｡
そして､ すべてのオブジェクト指向プログラミング言語がこの言語を持っている｡
だから､ 誰かの言うことを理解するしかないんです｡
おい､ クラスをインスタンス化したぞ｡
つまり､ 新しいインスタンス､ 新しいオブジェクトを作ったということです｡
では､ この図を見て､ 先ほどのコードに戻りましょう｡
ここでは､ クラスまたはブループリントを作成しました｡
そして､ この二重括弧は､ クラスのインスタンスを作成して､ 「やあ､ クラス､ ここにあるコードを何でも使って､ インスタンス化して新しいオブジェクトを作ってくれ」と言っているところです｡
つまり､ このクラスをインスタンス化して新しいオブジェクトを作成しているわけです｡
そして､ これはまさにリストのようなものでやっていることですよね｡
複数のリストを何度も作成できる
そして､ リストを作成するたびに､ これらのメソッドや､ 時には属性にまでアクセスし､ 使用することができるのです｡
そして､ この方法で､ 自分でコーディングする代わりに､ 多くの時間を節約しています｡
そして､ 同じようにここに複数のオブジェクトを作ることができます｡
反対する｡
オブジェクト3｡
ただ､ それだけなんです｡
そして､ この設計図に基づいて使用できる3種類のオブジェクトができました｡
さて､ 今の設計図には何も書かれていません｡ なぜなら､ 後でここにコードを追加できるからです｡
しかし､ 美しさは､ ここで効率を考えましょう｡
設計図そのものを見ることができるのです｡
クラスはメモリに保存されることになる｡
Pythonのインタプリタが､ ちょっと､ 大きなオブジェクトはこのための設計図になるんだ､ と言うわけです｡
そこで､ そのコードをすべてメモリに保存することにしました｡
でも､ オブジェクトを作るたびに､ コードを書き換えたりする必要はないんだ｡
メモリ内の大きなオブジェクトがある場所に行って､ そのコードを実行すればいいんです｡
私たちは､ コードをオブジェクトにインスタンス化できる場所を1つ持っています｡
一息ついて､ 次のビデオでこの授業を展開しましょう｡