基本情報技術者試験で、プログラミング未経験の人が分かりにくいのが「オブジェクト指向」です。
この記事では、「オブジェクト指向」をプログラミング未経験の人でも分かりやすく解説します。
頭がパンクしないようにできる限り用語は少なめで説明しています。
内容としては浅めなので、これを読んだうえで他の説明を読んでくださいね。
プログラミングとは
そもそもプログラミングというのは、「コンピュータに対し指示を書くこと」です。
一番簡単なものは「1 + 1を計算して」「”こんにちは”と画面に表示して」とかですね。
プログラミングでは「条件分岐」というのがよく出てきます。
「Aの場合はこれをして、Bの場合はあれをしてください」みたいな指示です。
また、「繰り返し」というのもあります。
「この計算を100回繰り返して」などです。
よく使われるのが先ほど条件分岐と組み合わせて、「この数字が50になるまでこの作業を繰り返してください」などの指示をします。
プログラミングというのは基本的な計算や「繰り返し」「条件分岐」をたくさん組み合わせることで作り上げられていきます。
「オブジェクト指向」とは
オブジェクト指向というのはプログラミングの考え方の一種で、すごく簡単に書くと、「プログラム全体の指示をいちいち出すのは大変だから、部品ごとに指示を出した方が分かりやすくね?」という考え方です。
例えば、サッカーの試合を考えてみましょう。
オブジェクト指向ではないプログラミングでは、監督が次のように指示を出します。
「Aくんが右に行ったらBくんが真ん中に入ってCくんが前に出て行く」「Aくんが左に行ったらBくんは前に出て行ってCくんが真ん中に入る」
まあこれくらいの指示の長さであればそこまで不都合はありませんが、指示が長くなると「Aくんの動き」「Bくんの動き」「Cくんの動き」」が分かりにくくなります。
オブジェクト指向プログラミングでは、次のように、個々の動きに注目して指示を出します。
「まずはAくん。君は右に行っても左に行ってもいい。」「次にBくん、君はAくんが右に行ったら真ん中で、左に行ったら前に行こう。」「最後にCくん、君はAくんが右に行ったら前に出よう。左に行ったら真ん中に入ろう。」
これだと、「Aくんの役割」「Bくんの役割」「Cくんの役割」が明確です。この「役割の明確化」ができることがオブジェクト指向の利点の1つになります。
オブジェクト指向の特徴
継承
オブジェクト指向の利点の一つに「継承」があります。
これは、ある部品と似たような動きをする部品があるとき、動きが重なっている部分を「使いまわし」することができます。
例えば、某ゲームでのマリオとルイージはだいたい同じ動きなので、「マリオ」を「ルイージ」が継承することで、同じ部分を使いまわしできます。2回作る手間を省けるわけですね。
カプセル化
カプセル化というのは「一部の情報を外からアクセスできないようにする」というものです。
これは実際にプログラミングしないとなかなかイメージが付きづらいのですが、
「部署Aが持っている情報を部署Bの人が欲しい場合は、部署Bの人が取りに行くのではなく、部署Aの人に代わりにとって来てもらってください」みたいな仕組みです。
ポリモーフィズム(多態性)
ポリモーフィズムというのは、「同じ指示を出しても違う動きをするようにできる」という性質です。
先ほどの「継承」は同じ部分を使いまわしするという話でした。しかし、違う部分は当然個々の動きになります。これを「同じ指示」で実現するものです。
例えば「魔法使い」と「戦士」では、同じ「攻撃」でも違う動きをするはずです。これが「ポリモーフィズム」というやつです。
まとめ
オブジェクト指向プログラミングは「プログラム全体の指示をいちいち出すのは大変だから、部品ごとに指示を出した方が分かりやすくね?」という考え方のことです。
頭がパンクしないようにかなりはしょっています!なので一部の事についてはほとんど触れていませんが、これを読んだうえで読めばより理解しやすいと思います。