【10分でわかる】ポケモンで例える「オブジェクト指向」講座
Summary
TLDRこの動画では、オブジェクト指向プログラミングをポケモンの例を使って解説しています。初めにオブジェクト指向の基本概念と、それをプログラミングにおいてどのように活用するかを説明し、次に具体的なポケモンの例を通じて、カプセル化、継承、ポリモーフィズムの3大要素を紹介しています。また、効率的なプログラミングの重要性と、オブジェクト指向の考え方がどのように役立つかを説明しています。最後に、プログラミング学習のための特典情報も提供しています。
Takeaways
- 😀 オブジェクト思考とは効率的にプログラムを作るための考え方
- 👍 プログラムをパーツ(オブジェクト)で考えることがポイント
- 💡 オブジェクトはデータと処理を1つにカプセル化
- 📝 オブジェクト同士はメッセージ(メソッド)でやり取り
- 🔎オブジェクト思考の3大要素はカプセル化、継承、ポリモーフィズム
- 🤔 ポケモンでいうクラスはピカチュウなどの種族の定義
- 😮 ポケモンでいうインスタンスは個々のピカチュウなど実体
- 👍 ピカチュウからライチュウへの進化が継承の例
- 📝 戦うメソッドの結果がポケモンごとに違うのがポリモーフィズム
- ❤️ オブジェクト思考の概念を掴むことが大切、コーディングを通じて徐々に身についていく
Q & A
オブジェクト思考とはどのようなプログラミングの考え方ですか?
-オブジェクト思考とは、プログラムをパーツ(オブジェクト)に分割して考えることで、効率的にプログラムを作成する考え方です。
オブジェクト思考の3大要素とは何ですか?
-オブジェクト思考の3大要素は、カプセル化、継承、ポリモーフィズムです。データを隠蔽したり、クラスの特徴を継承したり、異なるクラスでも同じコマンドを使えるようにすることができます。
クラスとインスタンスの違いを教えてください。
-クラスは設計図のようなもので、オブジェクトの定義です。インスタンスはその定義から実際に作られた個々のオブジェクトのことです。クラスが型でインスタンスが実際のオブジェクト、というイメージです。
なぜオブジェクト思考が必要なのでしょうか?
-オブジェクト思考を使うことで、プログラムの効率性や可読性が高まります。また拡張性や再利用性にも優れているため、大規模なシステム開発に適しています。
オブジェクト思考では直接データを変更することはできないのでしょうか?
-直接データの変更はできません。オブジェクトが持つメソッドを呼び出すことで、カプセル化されたデータの変更を実現します。外から内部状態を直接変えることはできません。
ポリモーフィズムとはどのような特徴なのでしょうか?
-ポリモーフィズムとは、異なるクラスのオブジェクトでも同じメッセージ(メソッド呼び出し)に対してそれぞれ適切な処理結果を返す機能のことです。クラスごとの実装の違いを吸収できるため、柔軟な設計ができます。
オブジェクト思考を理解するにはどうしたらいいですか?
-実際にプログラミングを通じてオブジェクト指向のメリットを体感することが大切です。基本概念の理解と合わせて、開発現場での活用シーンをイメージしながら学習していくことをおすすめします。
オブジェクト思考以外にプログラミングで大切な概念は何がありますか?
-その他にも抽象化、カプセル化、モジュール化などの概念が重要です。要件定義やアーキテクチャ設計などの上流工程も欠かせません。オブジェクト指向はプログラミング全体の一部です。
初心者はまずオブジェクト思考のどの部分を理解すべきでしょうか?
-まずはクラスとインスタンスの違い、オブジェクトのカプセル化といった基本的な部分の理解から始めることをおすすめします。抽象的過ぎないレベルから着実に理解を深めていきましょう。
オブジェクト思考を使った設計手法にはどのようなものがありますか?
-代表的な設計手法としてUML(ユースケース図、クラス図など)を用いたモデリング、DDD(ドメイン駆動設計)などがあげられます。問題域の分析とモデル化に適しています。
Outlines
💡 オブジェクト思考とは
オブジェクト思考はプログラムを書くときの考え方です。プログラミングには文法はありますが、書き方のルールはありません。効率的にプログラムを作るための考え方として、オブジェクト思考が生まれました。
🍳 オブジェクト思考の基本的な考え方
オブジェクト思考では、まずプログラムをパーツ(オブジェクト)で考えます。パーツを組み合わせてプログラムを作っていきます。パーツの中身のコードを読まなくても、パーツの役割が分かればプログラムを組むことができます。これがオブジェクト思考の基本的な考え方です。
🎓 オブジェクト思考の3大要素
オブジェクト思考には、カプセル化、継承、ポリモーフィズムの3大要素があります。カプセル化はデータを直接見えない状態にすること、継承はクラスの特徴を引き継ぐこと、ポリモーフィズムは違うクラスで同じコマンドを使えるようにすることです。これらを活用することで、効率的なプログラムを書くことができます。
Mindmap
Keywords
💡オブジェクト思考
💡カプセル化
💡継承
💡ポリモーフィズム
💡クラス
💡インスタンス
💡メソッド
💡パラメーター
💡コマンド
💡効率的
Highlights
オブジェクト思考とはプログラムを書く時の考え方
効率的にプログラムを作る方法で書きたい
オブジェクト思考はプログラムをまずパーツで考える
オブジェクト思考の3大要素を説明
カプセル化についての説明
継承についての説明
ポリモーフィズムについての説明
オブジェクト思考を理解するには繰り返しの気づきが必要
オブジェクト思考以外にも様々な概念の理解が必要
Webアプリ面接対策100本ノックを紹介
LINEから特典を受け取る方法を紹介
特典は変更や終了の可能性があるため早めに受け取る
チャンネル登録高評価をお願い
オブジェクト思考で効率的にプログラムを書ける
オブジェクト思考の具体的なプログラムの作り方を後日紹介
Transcripts
テックキャンプのしぼです今回は
オブジェクト思考をポケモンで例えながら
説明をしますなおこの動画の後半では
プログラミングを勉強しているあなたにお
すめの特典も用意しています是非最後まで
ご覧くださいまずオブジェクト思考という
のはプログラムを書く時の考え方です
プログラミングに文法はありますが書き方
のルールはないですま極論動くのであれば
どんな書き方をしてもいいんですまでも
どうせなら効率的にプログラムを作る方法
で書きたいですよね例えばサッカーを考え
てみましょう素人で集まって遊びで
サッカーをする時にはフォーメーション
なんて気にしないですもうとにかくゴール
をすればいいと思ってみんなプレイをし
ますでもレベルが上がればそうはいきませ
ん役割が与えられフォーメーションが決め
られ戦い方をみんなで統一しますこれは
効率的に勝つための考え方ですルールでは
ありませんこれと同じものがオブジェクト
思考なんですより効率的にプログラムを
作るにはどうすればいいかを考えた結果
生まれた考え方がオブジェクト思考です
オブジェクト思考を理解するために簡単な
小話をしましょう車を作ろうとする2人の
技術者がいました佐藤さんは天才です佐藤
さんは天才的な頭脳により独自の方法で0
からAという車を作りました独自の方法で
作ったので作りはめちゃですがとりあえず
車としては動きますその後別のbという車
を作ろうとなりましたAの車を参考にし
たいのに作りはめちゃくちゃなのでまた1
からBを作ることになってしまいました
しかも全てを把握している佐藤さん以外は
車を作れないので他に人を増やすことも
できませんそのため佐藤さんの会社は成長
せずに倒産してしまいます一方でもう1人
の鈴木さんは効率的な方法を思いつきまし
たそれが車を構成するパーツをまずは作る
という方法ですエンジンブレーキハンドル
Cとボディなどのパーツを先に作ったん
ですそしてそれを組み合わせてCという車
を作りましたその後にCとエンジンだけ
変えたDという車やボディやシートを変え
たEという車などを次々と生み出しました
さらにはエンジンに特化した高橋さんを
呼んでエンジンの改良を重ねたり美しい
ボディが作れる田中さんを呼んで確信的な
車を次々と生み出します結果鈴木さんの
会社は大きく成長していきました鈴さんが
行ったことがまさにオブジェクト思考です
プログラミングはとにかく行動を変えて
サービスを作ることもできますですがそれ
だと全てのコドを理解している人でないと
コドが書けませんしそういった人でもコド
の改良はだんだん難しくなります
オブジェクト思考ではプログラムをまず
パーツで考えます車で言うところの
エンジンやブレーキボディですねで
それぞれのパーツを作って組み合わせます
ボディを作る人はエンジンやブレーキの
詳細な仕組みまでは知らなくてもいいです
あくまでもエンジンにできることや大きさ
など概要を知っていればボディは作れます
同じようにコドをパーツで考えることで
それぞれのパーツの中身のコードを読ま
なくてもパーツの役割が分かっていれば
行動を書くことができますしかも
組み合わせもしやすいです改善する時も
パーツごとにアップデートをしたり今ある
パーツを元に新しいパーツを作ればいい
ですこれがオブジェクト思考です
プログラミングではこうしたパーツを物と
いう単位でくって物を意味する
オブジェクトで考えることをオブジェクト
思考と呼ぶことにしましたもと言いますが
実際には人間やSNSの投稿なんかも
プログラミングで表現するオブジェクトに
なりますので物理的なものだけではない
ことに注意しましょう
それでは具体的な例をポケモンのゲームを
使って説明していきますポケモンという
モンスターを育てて戦ったり冒険をする
ゲームです代表的なポケモンはピカチュウ
ですねポケモンには1匹ずつレベルや攻撃
力技などが決まっています人間のように
ポケモンにも個性があります同じ
ピカチュウでもサトシのピカチュウとヒシ
のピカチュウはパラメーターが違うんです
ねゲームに出てくるあらゆるピカチュウを
全て1から作るのは大変ですオブジェクト
思考ではまずピカチュウ自体を定義します
ピカチュウというのはこんな特徴があって
こんな技が覚えられるという全ての
ピカチュウに共通する部分をプログラムで
定義するんですねこれはあくまでも定義
ですまいわば設計図のようなものですここ
から具体的なサトシのピカチュウやヒシの
ピカチュウを作っていきますピカチュウ
共通の特徴を持った上で細かいレベルや
攻撃力技性格はそれぞれのピカチュウごと
に異なりますこれが個性ですねでも
ピカチュウである以上は絶対に電気タイプ
ですし見た目も一緒ですピカチュウの定義
のことをクラスサトシやヒシのピカチュウ
のような実際に存在しているピカチュウを
インスタンスと言いますイメージとしては
焼きの型がクラスですあくまでも型なので
それは焼きそのものではありませんこの型
から作った実際の焼きがインスタンスです
個々のインスタンスは焼き加減に微妙に
違いがあるなどの個性がありますまた中身
の具材は自由に変えられますまずは型を
用意してから具体的なものを作っていくと
いうのがオブジェクト思考の基本的な考え
方ですまずは初心者はこれだけでも覚えて
くださいではここからオブジェクト思考の
3大要素と言われる特徴を説明していき
ますこの3大要素は少しややこしいです
ですのであくまでも大枠のイメージを掴ん
でいただければと思いますまずはカプセル
化ですポケモンでは技を出して攻撃をし
ますすると相手のHPが減りますですが
相手のポケモンのHPや防御力の具体的な
数値は分かりませんこのようにデータを
直接見えない状態にすることをカプセルに
入れて隠すイメージでカプセルかと言い
ます具体的にはプログラムにおいて物の中
にデータを隠していますピカチュウの中に
はHPや攻撃力それ以外にもどの
プレイヤーにも見えない隠れたデータが
入っていますま例えば捕まえやすさや夏
気動などですカプセル化をすることで直接
データを書き換えられないようにしたり
見えてはいけないデータを隠すことが
できるようになりますではどうやってHP
を変化させるのかと言うと攻撃するのよう
なコマンドを通じてHPを変化させるん
です具体的にはピカチュウが持っている
攻撃コマンドを実行しますすると
ピカチュウの綿と攻撃力あとは攻撃する
相手の防御力を見てどれだけHPを減らす
のかを処理しますこの処理の詳細は分から
なくてもプレイヤーは攻撃コマンドを選択
すれば相手のポケモンのHPを減らすこと
ができますこのようにオブジェクト思考で
は直接データを書き換えずにオブジェクト
が持っているコマンドを使って処理をする
んですねちなみにこのコマンドをメソッド
と呼んだりしますオブジェクトの中で複雑
な計算がされているんですが使う側はその
中身を知らなくても攻撃するのような
コマンドを使えば望んでいる処理を行う
ことができますプログラミングに置き換え
て考えてみます例えばログイン機能をA
さんが作ったとしましょうこのAさんが
書いたログイン機能をBさんが使うには
単にログインというコマンドを使えばいい
だけなんですログイン機能のコードを全て
読んで理解する必要はありませんこのよう
にコードの詳しい中身を見なくても
コマンドで何ができるかさえ分かっていれ
ばプログラムを組むことができるんですね
全ての行動を読むのは大変なので非常に
効率が上がりますでは次の特徴である継承
を説明しますポケモンは進化をします
ピカチュウであればより強いライチュに
進化しますねこの時ライチュはピカチュウ
の特徴を引き継げますライチュは
ピカチュウと同じで電気タイプですし
ピカチュウが使える技をライチュも使え
ますその上でライチュはピカチュウに使え
なかった新しい技も使えるようになるん
ですこのようにクラスの特徴を引き継いで
新しいクラスを作ることを継承と言います
この継承はプログラミングにおいて本当に
よく使います例えば車というクラスを作り
ます車のクラスにはタイヤやハンドルと
いった特徴やアクセルを踏むといった
コマンドが用意されていますそしてこの車
クラスを元にバイクやバスといった新しい
クラスを作りますこれらの新しいクラスは
車クラスの特徴を引き継いでいますその上
でバイクはタイヤが2つであったりバスは
大人数が乗れるといった新しい特徴を追加
するんですこうしたクラスの継承は
オブジェクト思考における重要な特徴です
最後の特徴がポリモーフィズムです
ポケモンにはピカチュウ以外にも様々な
モンスターがいますこれらは別々のクラス
インスタンスではあるんですが共通して
できることがあります例えば戦うという
コマンドこれはポケモンであれば全員が
できるコマンドですですが実際に戦うと
いうコマンドを支持した結果出てくる技は
ポケモンによって違います例えば
メガリザードンYは火炎放射
メガカメックスはハイドロポンプ
メガフシギバナはソーラービームのように
それぞれのポケモンが違う技を出すんです
ねですがコマンドは全て戦うで共通になっ
ていますこれがポリモーフィズムです
ポリモーフィズムがないとポケモンごとに
プログラムで判定して技を選ばないといけ
ませんこのポケモンがメガリザードンYの
時は火炎放射メガカメックスの時は
ハイドロポンプのような形ですもう今や
ポケモンは1000匹近くいるので戦通り
の確認をしないといけませんでも
ポリモーフィズムがあれば戦うという
コマンドをポケモンに支持するだけでその
ポケモンの持っている技が自動的に選ば
れるようになりますポリモーフィズムを
活用すれば違うクラスであっても同じ
コマンドを使えるようになるのでコードが
シンプルで分かりやすくなりますはいと
いうことでオブジェクト思考ポケモンを
使って例えてきましたオブジェクト思考の
考え方を活用することによって単にコード
を上から順番に書いていくよりも効率的に
プログラムを書くことができます今の段階
ではカプセル化継承ポリモーフィズムが
どうして必要なのかどこで使うのかを理解
しきれないかもしれませんでもそれが
当たり前ですプログラミングをしている中
でなんか効率が悪いなもしかしてこれが
オブジェクト思考なのかという気づきが
生まれてきますこうした気づきを繰り返し
ながらオブジェクト思考の考え方は身に
ついていくんですですがこの気づきを得る
ためにもオブジェクト思考へのイメージを
持っておく必要がありますそのために今回
はポケモンを使って説明をしていきました
今後はオブジェクト思考での具体的な
プログラムの作り方も紹介していく予定な
ので興味のある方は是非チャンネル登録を
お願いしますまたプログラミングでは
オブジェクト思考以外にも様々な概念の
理解が必要になりますそうした学習に
ぴったりの特典をご用意しましたそれが
こちらのWebアプリ面接対策100本
ノックですwebサービス開発における
問題が100問ありAIと対話形式で理解
度をチェックできますアウトプットをする
ことで自分の苦手な分野が分かったり理解
が深まるアプリになっていますこちらの
アプリは概要欄の1番上のLINEから
受け取ることができますこの特典以外にも
ここのの特典があり全部で10個の特典が
無料でもらえますこちらの特典ですが途中
で変えたり終了する可能性があるため興味
のある方は今のうちに受け取っておくと
いいかと思いますこの動画が少しでも参考
になったという方はチャンネル登録高評価
を是非お願いします最後までご視聴
ありがとうございまし
たY
5.0 / 5 (0 votes)