初心者プログラマーの最初の壁「オブジェクト指向」とは?【徹底解説】

魂ゴール
こんにちは、アラフィフ現役システムエンジニア(SE)の魂ゴールです。
(*^▽^*)

今回は、初心者プログラマーの最初の壁といっても過言でない「オブジェクト指向」について徹底解説していきますよ。

オブジェクト指向は最近のプログラミングにおいてなくてはならない「概念」です。

人気言語のJava、Python、C#など様々な言語で使われています。

しかし、「概念」だから完璧に理解することは非常に難しいです。

概念
思考において把握される、物事の「何たるか」という部分。抽象的かつ普遍的に捉えられた、そのものが示す性質。対象を総括して概括した内容。 あるいは、物事についての大まかな知識や理解。

プログラミングにおけるオブジェクト指向とは?

プログラミングにおけるオブジェクト指向とは?の前に覚えておいてほしいことがあります。

オブジェクト指向の勉強の前に

最初に言ったようにオブジェクト指向は「概念」だということです。

「概念」なので、オブジェクト指向は曖昧なものだと理解してほしいのです。

したがって「本質はなに?」「何が正しい説明?」は人によって様々な正解がある事を理解しておいてください。

「概念」だから難しい

オブジェクト指向について書籍やネットなどで数多くの説明がなされていますが、どの説明も似ているようですが、細かい所はまちまちなので初心者には何が正解なのか分からなくなるかもしれません。

したがって、最初から100%理解する必要はなく、自分なりに最初はこんな感じかなと思うことが大事だと思います。

プログラミングを数多くこなしていくうちに自分なりのオブジェクト指向が身についていきますよ。

本題 オブジェクト指向とは?

前置きはここまでにして、本題のオブジェクト指向とは?の説明を行っていきますね。

Wikipediaではオブジェクト指向の事を以下のように解説しています。

オブジェクト指向
オブジェクト指向(オブジェクトしこう、英: object-oriented)は、ソフトウェア設計とプログラム記述の際に用いられる考え方である。元々は特定のプログラミング・パラダイムを説明する為に考案された言葉だった。object-oriented programmingのように修飾語として用いられるのが常であり、それ単体で扱われる事はない漠然とした設計構想でもある。

なんのこっちゃまったく分かりませんね。(汗

オブジェクト=モノ

オブジェクト指向とは、モノを操作すると思ってください。

テレビというモノを操作する際に、テレビの中は知らなくてもリモコンというモノを操作すればテレビは動きます。

したがって、オブジェクト指向とは、モノを作ってモノとモノとをつなげ、操作することだと言えます。

なぜモノを作る必要があるのか

プログラムは処理を上から下に記述していくと動作します。

しかし、毎回同じような処理を上から下まで書いていては時間ばかり掛かってしまいます。

自動車を例に説明していきます。

自動車はタイヤ、エンジン、ボディでできているモノだと仮定します。

  • A自動車 タイヤ、エンジン、ボディを作る
  • B自動者 タイヤ、エンジン、ボディを作る
  • C自動車 タイヤ、エンジン、ボディを作る

毎回自動車を増やすたび一々全部作成していては時間と手間がかかってしまいます。

そこで自動車とはこういうモノだと定義し1つ作成しておきます。

後は、自動車というモノをコピーしていけば何十台、何百台増やしても時間と手間がかかりません。

自動車に新たに色を付けたい場合は、自動車をコピーしそれぞれ白、黒、赤と色を追加するだけで良いとい考え方です。

オブジェクト指向プログラミングとは、多種多様なモノを作成しておき、新たにプログラミングする時でも前に作ったモノを再利用し時間と手間を省くプログラミング手法です。

魂ゴール

もちろん初めてのモノは、その時に作成する必要がありますが、モノを作れば作るほど便利になるという事だね!

(*^▽^*)

オブジェクト指向の基本概念【4つ】

オブジェクト指向には4つの基本的な概念が存在します。

それぞれの基本概念を簡単に説明していきます。

継承

継承とは、特定のオブジェクトの機能を引き継ぐことを継承といいます。

先ほどの自動車の例がまさに継承で、自動車という機能を引き継いだ色のついた自動車を作成しています。

継承の詳細な解説は、別記事で行っていますのでそちらを見てください。

カプセル化

あるオブジェクト(モノ)が持つ特徴(データや処理)が他のオブジェクトでは不要な特徴の場合、他のオブジェクトから隠すことをカプセル化といいます。

カプセル化することにより他のオブジェクトから干渉を受けなくなるためプログラムとして強固なプログラムとなります。

カプセル化の詳細な解説は、別記事で行っていますのでそちらを見てください。

抽象化

複数の具体的な対象を表すモノから共通するデータや処理を取り出して親として定義することを抽象化と呼びます。

抽象化は4つの基本概念の中でも特に理解しづらいので今はこいう概念があると覚えておいてください。

抽象化の詳細な解説は、別記事で行っていますのでそちらを見てください。

ポリモーフィズム

同じ名前の処理を複数のモノで使用できるようにして、その処理を通して、暗黙的に複数のプログラムの動作を切り替えることができるようにする概念のことをポリモーフィズムといいます。

ポリモーフィズムはプログラムを実際に記述していくと理解が進むと思うので今はポリモーフィズムという概念があるという事だけ覚えておいてください。

ポリモーフィズムの詳細な解説は、別記事で行っていますのでそちらを見てください。

まとめ

今回は、初心者プログラマーの最初の壁「オブジェクト指向とは?」というテーマで徹底的に解説してみました。

オブジェクト指向という「概念」のお話だったので今一ピンとこないという方もいるかもしれませんね。

しかし、最初にもいったように昨今のプログラミングではオブジェクト指向は切っても切り離せない「概念」です。

一回見ただけで分からないと挫折しないでください。

プログラミングの数をこなせばここに書かれていることが理解できるようになってくるはずです。

4つの基本概念のそれぞれの解説とオブジェクト指向でよく使われる用語の解説は別途記事を書いていますのでそちらを見てもらえると大変嬉しいです!

魂ゴール

あきらめず、頑張っていこう!
(*^▽^*)

魂ゴールのメルマガ「ゴールへのミチシルベ」

魂ゴールのメルマガ「ゴールへのミチシルベ」を始めます。

プログラミング言語や開発手法、ツールのトレンド、IT業界の最新情報などはもちろんですが、ブログではちょっと語れないIT業界裏話なども発信して行こうと思っていますよ。

プログラミングメルマガ「ゴールへのミチシルベ」

=>魂ゴールのメルマガ「ゴールへのミチシルベ」へ

不定期配信となりますが、みなさんに役に立つ情報を配信できるよう頑張っていきます。

無料相談受付中!

只今無料相談を受け付けています。
(^^)

無料相談受付中

=>魂ゴールに無料で相談をしてみる

現役システムエンジニア歴28年の私がプログラミングの不明点やわからない専門用語などなんでもよいのでこちらからご相談ください。