コピー2023.08.01はじめに今回の記事では、前回までの「クラス」や「インスタンス」の基本をふまえて、オブジェクト指向における「継承」「ポリモーフィズム」「カプセル化」について説明していきます。つまずきやすい部分(実際に筆者がつまずいた部分)を中心に、初心者にもわかりやすく順を追って説明していきます。前回までは、オブジェクト指向という考え方をもとに、その基本である「クラス」「インスタンス」を用いて実際にプログラムを作成しました。今回は、そのオブジェクト指向における重要な3つの要素「継承」「ポリモーフィズム」「カプセル化」の考え方について解説していきます。オブジェクト指向の考え方に沿って便利な機能を利用するためには、基本となる「クラス」「インスタンス」の理解が必要になります。家電の例で考えてみようオブジェクト指向の3つの要素については、わかりやすく図解できるように例をあげて説明していきます。今回は家電というインスタンスをつくる「家電クラス」をベースにしてみます。変数には使う電気量、メソッドには「電源ボタンをONにする」「電源ボタンをOFFにする」を定義します。print("電源がオフになりました")「継承」って何?クラスを使ってインスタンスを作成していると、インスタンスごとに「別のメソッドを追加できたらな~」というように、カスタマイズしたい場合があります。家電クラスに「スマホ遠隔操作」の機能を新しく追加して、遠隔操作機能付き家電クラスを作成したいとします。このような場合に使うのが「継承」という機能です。継承を使うと、元のクラスに別のメソッドなどを追加して、新しいクラスを作成することができます。継承を使って作成したクラスは、元のクラスの機能を受け継ぎます。上の画像の遠隔機能付き家電クラスでは、元となる家電クラスの機能を使うことができます。class()のカッコ内に、元になるクラスを書きます。大元になるクラスをスーパークラス、受け継いだクラスをサブクラスと呼びます。メソッドなどを増やしたいときに継承を使いますが、継承のメリットは、増やしたい項目だけ記述すれば同じ処理は書かなくてよいというところです。継承はよく使う機能なので、ぜひ覚えてみてください。SmartHomeAppliance(100)tv.turnon()tv.remort_control()継承して作った「遠隔操作機能付き家電クラス」には、「電源オンメソッド」の記述がないにもかかわらず、呼び出して使用することができています。このように継承機能を使えば、記述を省略することが可能です。「ポリモーフィズム」って何?家電クラスを継承して、TVクラス・エアコンクラス・電子レンジクラスを作りたいとします。このとき、電源ボタンを押すとTVでは画面が点灯し、エアコンからは冷風が出て、電子レンジからはマイクロ波が出ます。このとき、TVが「点灯しました」、エアコンが「冷風を送りました」、電子レンジが「マイクロ波を出しました」というふうに実際の動作はバラバラですが、これはTV・エアコン・電子レンジが「動きました」というように共通した名前で表すことができます。このように、同じ名前のメソッドで異なる動作を実現する考え方をポリモーフィズムといいます。「ポリモーフィズム」という言葉は和訳すると「多様性」で、これは、一つのメソッドがそれぞれのクラスであらゆる多様性をもつところに表れています。ポリモーフィズムの考え方では、子クラスのインスタンスで、スーパークラスのメソッドを使うことができます。この考え方を用いると、例えば家電の種類が洗濯機・・・と増えていっても、ボタンを押せば動くという部分は変わらないので、末端のクラスの動作だけ書き換えればよくなり、プログラムの管理が楽になります。上の例で、動かすという部分を「テレビが点く」「冷風を送る」にしたりと、スーパークラスのメソッドの内容をサブクラスで書き換えることをオーバーライドといいます。スーパークラスで定義されたメソッドを、サブクラスで同名のメソッドとして定義することで上書きすることができます。「カプセル化」オブジェクト指向では現実のモノをプログラムに例えますが、実際に利用する人が知らなくてよいモノ・動作があります。TVクラスから作ったテレビがあるとします。私たちがテレビを利用するさいには、電源をつける・消すこと、多くてもチャンネルを変えることくらいしか行いません。テレビを使うときには、内部の基盤やLEDの部分を知らないまま使うことができます。中身の詳細を知らなくても、ユーザーが操作できるような形にしておくことをカプセル化といいます。ここまでは「カプセル化」についての考え方の説明をしました。実際のプログラミングでは、カプセル化とはプログラムを外部から操作できないようにしておくことです。外側から間違えて書き換えができないようにしておくことで、不具合を減らすことができます。まとめオブジェクト指向には「クラス」と「インスタンス」を基本にした3つの要素があり、それぞれ「継承」「ポリモーフィズム」「カプセル化」といいます。継承は、ひとつのクラスから同じ規格を受け継いで新たにクラスつくることをいいます。受け継ぎ元の親のようなクラスをスーパークラス、受け継いだ側のクラスをサブクラスといいます。ポリモーフィズムとは、同じ名前のメソッドで異なる動作を実現する考え方のことをいいます。これによって、サブクラスが増えそれぞれが別の処理を行っても、スーパークラス側のメソッドの名前を変更することなく対応することができます。カプセル化とは中身の詳細を知らなくても操作できるような形にしておくことをいいます。実際のプログラムでは、プログラムを外部から操作できないようにしておくことカプセル化といいます。外側から間違えて書き換えができないようにしておくことで、不具合を減らすことができます。以上の3つの要素を応用することで、大きなプログラムを作成する場合に修正が容易になったり、プログラムを運用していくうえで便利になります。普段のプログラムに組み込んでみてください。次回は、オブジェクト指向の3要素を用いてクラスを利用する演習を行う予定です。今回の記事からは、実際にプログラムを作成する実践編に入っていきます。これまで学習した内容を生かしながら、つまずきやすい部分(実際に筆者がつまずいた部分)を中心に解説していきます。今回のブログでは、第1回「プログラミングって何?」で触れた「関数」について解説していきます。今回の記事では、クラスやオブジェクト指向を使って簡単なRPGをつくる演習を引き続き行います。ポイントを解説しながら、数回にわたって記事を掲載していきます。今回の記事は、実際にプログラムを作成する実践編になります。これまで学習した部分を生かしながら、つまずきやすい部分(実際に筆者がつまずいた部分)を中心に複数回にわたって解説していきます。今回の記事は、実際にプログラムを作成する実践編になります。これまで学習した部分を生かしながら、つまずきやすい部分(実際に筆者がつまずいた部分)を中心に複数回にわたって解説していきます。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。最近のコメント表示できるコメントはありません。ほやほやSE日記.ホーム検索トップサイドバータイトルとURLをコピーしました。