オブジェクト指向とは何か?わかりやすい例で説明してみた。

こんにちは!侍エンジニア塾ブログ編集部です。

プログラミングに興味のある方はオブジェクト指向プログラミングという言葉を聞いたことがあるのではないでしょうか。

ただ、聞いたことがあっても、なんとなくしか理解していないという方も多いかと思います。実際、色んな専門用語のカタカナ言葉も出てきますし、難しいプログラムで説明されていることが多いので、混乱するのも無理はないでしょう。

侍エンジニア塾の受講生からも、

オブジェクト指向って何?
なんのためにあるの?
どういうものなの?

といった質問をされることがあります。そこでステップバイステップのシリーズ構成で、順番にできるだけ専門用語を丁寧に噛み砕いて解説をしていきます。

今回は、まずオブジェクト指向の概念をざっくりつかむということを目指しましょう!多くの生徒さんの指導を通してウケが良かった例えも踏まえて説明していきます!

〜連載記事一覧!オブジェクト指向について〜
Vol.1 「オブジェクト指向とは何か?わかりやすい例で説明してみた。
Vol.2 「オブジェクト指向のクラスって?メソッドやインスタンスの関係を解説してみた

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


画像:Shutterstock

プログラミングはそもそもプログラムを作ることです。プログラムを作ることはコンピュータが理解できる言葉を並べて、プログラマの意図したとおりの順番でコンピュータが動作するようにすることです。

このとき、プログラムをどうやって表現するかということにも様々な種類があり、代表的なものは以下のとおりです。

  • オブジェクト指向プログラミング
    • 「モノ」を組み立てるように表現して、コンピュータに動作をさせる
  • 手続き型プログラミング
    • 上から下まで単調なルールで文章を読むように動作する
  • 関数型プログラミング
    • 数学の関数のイメージでデータに何かしらの処理をして答えを取得するように動作する

現在ではオブジェクト指向言語が主流になっていますので、プログラミングをする上でオブジェクト指向の概念を押さえておくことは非常に重要です。たとえば、以下のプログラミング言語はすべてオブジェクト指向言語です。

  • さまざまなプラットフォームで動作するJava
  • Webページに動きを与えるRubyやPHPやJavaScript
  • Mac OSやiOSのアプリ開発で使われるSwift
  • 商用のプログラミング言語として定評のあるC++
  • WordやExcelのマクロとして使用されているVBA

JavaやPHPにおけるオブジェクト指向について説明した記事がありますので、JavaとかPHPは分かる!という方には、こちらの記事をお勧めします。


【PHP入門】オブジェクト指向プログラミングを理解しよう!
更新日 : 2018年9月4日

オブジェクト指向のメリット

オブジェクト指向をどのように使うのか、そのイメージを簡単に見てみましょう。オブジェクト指向は、主にモノと、そのモノができること(役割)を決めます。プログラムの中では、「モノA」、「モノB」のように何種類もの「モノ」を用意します。

そして、「モノA」が、「モノB」に対して「モノBができること」をお願いする形で、コンピュータを動作させます。抽象的で少し分かりづらいと思いますので、例を出して説明しましょう。例えば、オブジェクト指向プログラミングで「すごろく」を作る場合、

  • ゲームマスター
  • プレイヤー
  • すごろく(プレイヤーコマ、サイコロ、すごろく盤を含む)

というように何種類もの「モノ」を用意して、それぞれの「モノ」や「モノができること(役割)」を表現していきます。

スクリーンショット 2016 06 11 13 41 58

画像:オブジェクト指向の例

まず、「ゲームマスター」は、「プレイヤーに、(何か)指示できる」ことにします。「プレイヤー」は、「すごろくに、サイコロを振るように指示できる」ことにします。オブジェクト指向プログラミングでは、「モノ」の中に「モノ」を入れておいてもよいので、「すごろく」の中に、

  • プレイヤーコマ
  • サイコロ
  • すごろく盤

を作るという表現もできます。「すごろく盤」は、(プレイヤーに)「サイコロ」を振るように指示されたら「コマ」を移動させることにします。(高度なすごろく盤で、プレイヤーがサイコロを振るボタンを押したら自動的にコマが移動するイメージです。)

このように、それぞれの「モノ」に意味を与え、「モノができること(役割)」を作っていく考え方が、オブジェクト指向プログラミングです。意味を与えた「モノ」(ゲームマスターやプレイヤー)という単位で、役割(動作)を決定していければ、わかりやすく開発が進められそうな気がしますね。

オブジェクト指向プログラミングにはさまざまなメリットが有りますが「分かりやすくプログラムを表現できる」というのが最大のメリットです。

オブジェクト指向の原則とは

せっかくですので、少し難しい話も書いておきましょう。オブジェクト指向には原則と呼ばれるものがあります。

  • カプセル化
    • できるだけ他のプログラムから干渉されないように/他のプログラムに干渉しないようにする仕組み
  • 継承
    • 再利用性を高める考え方
  • ポリモーフィズム
    • 振る舞いを様々に変えられる仕組み

原則については、ここで説明するとボリュームが大きくなってしまいますので、別の記事になっています。ぜひご覧ください!


オブジェクト指向「継承」とは?わかりやすく解説してみた
更新日 : 2016年8月10日

オブジェクト指向を理解していないことへのデメリットとは

前述したようにオブジェクト指向のプログラミング言語が主流となっている現在、オブジェクト指向を理解することは非常に重要です。概念を理解せず、なんとなくわかったつもりでは、オブジェクト指向プログラミングをするときに苦しくなります。

簡単なプログラムの改修程度なら、わかったつもりでも対応できるかもしれません。

しかし、自分でクラスやメソッドを追加したり、機能を追加する場合は、オブジェクト指向を理解していなかったら曖昧なままプログラミングをすることになり、うまくいきません。

もし、正常に動作しなかったら、その原因を探し出すことに苦労するでしょう。そのため、オブジェクト指向については、概念や仕組みをしっかりと把握しておきましょう。

オブジェクト指向を理解しておけば、どんなオブジェクト指向言語でも応用できるようになりますので、少し頑張ってみてくださいね!

オブジェクト指向プログラミングをマスターしよう!

オブジェクト指向言語プログラミングでは、「クラス」「メソッド」「インスタンス」を活用することは必須となります。オブジェクト指向言語を本格的に活用するためには、それぞれの役割を知り、正しく設計することが非常に大切です。

詳しくは、以下の記事で説明していますので、ぜひご覧ください。


オブジェクト指向データベース

オブジェクト指向プログラミングに近い考え方を取り入れたデータベースも開発が進められています。そのようなデータベースを管理するシステムは、オブジェクト指向データベース管理システム(OODBMS)オブジェクトデータベース管理システム(ODBMS)と呼ばれています。

オブジェクト指向プログラミング言語のデータ構造を採用することで、アプリケーションとデータベースのとの間でオブジェクトを共有できるという仕組みです。

オブジェクト指向プログラミングで大きなデータ(オブジェクト)を取り扱うことになった場合は、オブジェクト指向データベースの採用を検討することになるでしょう。

オブジェクト指向エクササイズ(9つのルール)

オブジェクト指向エクササイズという考え方があります。詳細を説明すると長くなってしまいますので、9つのルールだけ紹介しますね。

  1. 1つのメソッドにつきインデントは1段階までにすること
  2. else句を使用しないこと
  3. すべてのプリミティブ型と文字列型をラップすること
  4. 1行につきドットは1つまでにすること
  5. 名前を省略しないこと
  6. すべてのエンティティを小さくすること
  7. 1つのクラスにつきインスタンス変数は2つまでにすること
  8. ファーストクラスコレクションを使用すること
  9. Getter, Setter, プロパティを使用しないこと

オブジェクト指向プログラミングを始めてみようという今はまだピンと来ないと思いますが、しばらく開発を進めてから振り返ってみると、このルールは大切!と思えるでしょう

オブジェクト指向言語をより深く学ぶなら

オブジェクト指向言語についてある程度ご理解いただけたと思います。

しかし、オブジェクト指向言語はJava、Ruby、PHP、JavaScript、Swift、C++、VBAなど数多くあり、

どのプログラミング言語を選べば良いのか分からない!

という方も多いですよね。プログラミング言語選びは今後のエンジニアとしてのキャリアも、決めかねない大切な選択の1つです。人気や他者から薦められたといった理由で選んでしまうと、本当に自分の作りたいものが作れないといったことになりかねません。

そこであなたに最適なプログラミング言語を選ぶために、プログラミング言語診断アプリを用意しました。この診断アプリを使えば、あなたの目的にあった最適なプログラミング言語がわかりますよ。

プログラミング言語を
無料診断してみる

今のプログラミング学習に不安を感じている方は

この記事では、初心者の方にとって分かりづらいオブジェクト指向について解説してきましたが、現在プログラミングを学習している人の中には、

思ったよりも難しい..
今の学習方法でいいのかな?

と不安に感じている人もいるのではないでしょうか?

確かに昔と比べてネット上などにも情報が出回っているので、独学しやすい環境にはなってきています。しかしそれでも実は、プログラミング独学の挫折率は8割ほどと言われており、まだまだハードルが高いのも事実です。

そこで、現状の学習状況に少なからず不安がある方は、プログラミングスクールを利用してみてはいかがでしょうか?

手前味噌ではありますが、弊社侍エンジニア塾では今までの指導実績をもとに、プログラミング学習を効率的に学べるコースをご用意しています。

  • 最初から最後まで講師が変わらない業界唯一の専属マンツーマン
  • あなただけに作成するオリジナルカリキュラム
  • フリーランスへの転向までサポートするキャリアカウンセラー

これらを一挙に叶える専属マンツーマンレッスンであなたもエンジニアを目指してみませんか?

いきなり入会するのはちょっと不安…

そんな方は、まずは毎月500名以上が受講している無料体験レッスンにて、コンサルタントにプログラミング学習の悩みや不安、仕事獲得方法、業界知識など相談してみてください。入会する、しないに関わらず、あなたにぴったりの学習プランを提供させて頂きます。

無料体験は以下のカレンダーから直接予約が可能となっています。遠方の方でもオンラインで受講できるのでお気軽にご利用下さい。

まとめ

なんとなくオブジェクト指向のメリットはおわかり頂けましたでしょうか?オブジェクト指向は『モノの関係性を作っていく考え方』ということが分かればスムーズに理解できます。

ぜひオブジェクト指向言語の考え方を理解していただいて、プログラミングができるようになりましょう!

関連記事

プログラミングの勉強を始める初心者が最初にやるべき7つのこと
更新日 : 2019年10月16日
非WEB系SEがWEBエンジニアに3ヶ月で転職出来た7つの理由
更新日 : 2019年4月2日
【全て無料】プログラミング学習サイトTOP5|独学でスキルを手に入れる方法
更新日 : 2019年9月26日

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説