← メディア一覧

科目B「オブジェクト指向」をRPGで攻略

6分17秒 | アルゴリズム基礎FE

基本情報技術者試験の頻出テーマを解説した動画コンテンツです。

トランスクリプト(字幕テキスト)

はい、どーも。科目Bの勉強、進んでますか?さて、「クラスはたい焼きの金型で、インスタンスはたい焼きそのものだよ」 この説明、もう何回聞きました?正直、聞き飽きましたよね。 しかも、この話を聞いて科目Bの疑似言語問題がすらすら解けるようになった、って人、あんまりいないんじゃないですかね? じゃあ、なんであのたい焼きの例えじゃダメなのかっていうと、それは、試験で聞かれているのがふわっとした概念じゃないからなんです。 そうじゃなくて、データと手続きが、具体的にどう動くのか、その流れを追えるかどうかが問われてるんですよ。 たい焼きの例えだと、この一番大事な部分が全然見えてこないんですよね。 そうなんです。試験の鍵は、概念の丸暗記じゃなくて、データと手続きがどう動くかを正確にトレースする力。 今日この解説を聞けば、皆さんが「うわ、苦手だな」って思ってるオブジェクト指向がガラッと変わって、「よし、ここで点とるぞ!」っていう得点源になりますからね。約束します。 よし、じゃあここからはですね、ちょっと頭を切り替えてもらいましょう。もうたい焼きのことは忘れてください。僕たちに馴染み深い、 そう、ロールプレイングゲームの世界で考えていきましょう。このほうがね、絶対に分かりやすいです。 じゃあまず、そもそもオブジェクト指向って何なんだって話なんですけど、これ、もうものすごくシンプルに言うと、 「データと処理を便利なワンセットの部品にすること」なんです。RPGに出てくるキャラクター、あれをイメージしてください。 まずこの「クラス」っていうのは、キャラクターの設計図だと思ってください。ここには、「HPはこれくらい」とか「名前」みたいなデータと、 「攻撃する」みたいな処理の内容が書かれてるだけ。あくまで設計図なので、これだけじゃまだモンスターとは戦えないですよね。 そこで登場するのが、「new」っていう魔法の呪文です。この命令がポチッと実行された瞬間に、設計図から、 こう、ポンッと本物のキャラクターがゲームの世界に召喚されるわけです。この実体化したキャラクターのこと、これを「インスタンス」って呼びます。 ここ、ここがめちゃくちゃ重要です!同じ「勇者」の設計図からでも、「HPが100の勇者A」と、 ちょっと屈強な「HP150の勇者B」みたいに、何体もインスタンスを作れるんです。 設計図は一緒だけど、それぞれの「状態」、つまり持ってるデータはまったくの別物。 試験では、今どっちの勇者を操作してるのか、これを見落としちゃうと、もう全部ずれちゃうんで、ここが一番大事です。 はい、じゃあ次行きましょうか。理屈は分かったと。じゃあ、試験で点を取るために絶対に絶対に押さえておくべき、3つのキーワード、これを見ていきましょう。 まず1つ目、「カプセル化」。これはね、安全ルールです。キャラクターのHPみたいな大事なデータを、外から誰かに勝手に書き換えられたら困りますよね。 だから、データを隠して、決められたやり方でしか変更できないようにする。それが「カプセル化」です。 2つ目は、「継承」。これは、楽するためのテクニックですね。例えば、すでにある「勇者クラス」をベースにして、そこに魔法の能力をプラスした「魔法戦士クラス」を作る、みたいな感じです。 ゼロから全部作り直さなくていいから、すごく効率的なんです。試験では、「親クラスの技、そのまま使えるんだっけ?」みたいな視点がよく問われますよ。 そして3つ目、これがね、結構みんなつまずくんですよ。 「多態性」、またの名を「ポリモーフィズム」。でも大丈夫!要は、こっちからは同じ「攻撃!」っていう命令を出すだけで、 相手が騎士なら剣を振るし、魔術師なら呪文を唱える、みたいに、 中身は自動でいい感じに切り替わってくれる、超便利な仕組みのことです。 はい、理論はここまでにして、じゃあ実際に、試験でどうやってコードを読んでいけばいいのか、そのコツ、実践的なテクニックに入っていきましょう。ここからが本番です! 実際のコードを読むとき、まず最初にチェックしてほしいのが、「コンストラクタ」です。 これは、インスタンスが「new」で生まれた、その瞬間に、1回だけ自動で実行される初期設定プログラムのことです。 RPGで言えば、勇者がゲームに召喚されたときの、初期ステータスを決める大事な儀式みたいなもんですね。 そして、この疑似言語で本当によく、本当によく出てくるのが、「this」っていうキーワード。これはもう、超シンプルに覚えてください。 「自分自身のインスタンス」、はい、これだけです!本当にこれだけ。 例えばね、コードに「this.HP」って書いてあったら、頭の中で「ああ、オッケー。今自分が操作してる、このインスタンスのHPのことね」って変換するんです。 この「this」が勇者Aを指してるのか、勇者Bを指してるのか、それさえ分かれば、 どんなに複雑に見える処理でも、絶対正確に追えるようになりますからね。 さて、じゃあ最後に、今日の話をギュッとまとめて、合格への最短ルート、これをおさらいしましょう。 覚えることは、たったの3つです!いいですか?まず1つ、クラスは設計図、インスタンスはゲームの中にいる実体。 2つ目、「new」で実体が生まれて、「this」は自分自身を指す。 そして3つ目、カプセル化とか継承とかの難しい言葉は、全部プログラムを楽するための道具にすぎないってこと。 この3つだけ、本当にこの3つさえ頭に入っていれば、もう怖くないです! 最初はちょっととっつきにくいかもしれないですけど、一度この「ものの動き方のコツ」さえ掴んじゃえば、 オブジェクト指向ってまるでパズルを解くみたいに、面白いくらいスラスラ解けるようになります。 だから苦手意識はもう捨てて、自信持ってくださいね。 さて、どうでしょう。あれだけ分厚い壁みたいに感じていたオブジェクト指向が、なんだかこう、「よし、ここで点稼いでやろう!」っていうチャンスに見えてきませんか? その感覚、大事にしてください。この調子で、一緒に合格を掴み取りましょう!

このコンテンツは Web society で視聴・学習できます。