無料相談はこちら

チャットでアドバイザーに
相談してみる

目次に戻る 目次に戻る
ユニゾンキャリア バナー

オブジェクト指向とは?例を使ってわかりやすく解説!

オブジェクト指向とは ?

IT業界を本音で語る「ユニゾンキャリア編集部」の真心です。

本記事のトピックスはこちら!

  • ・オブジェクト指向とは?
  • ・オブジェクト指向で使われるワードの説明
  • ・オブジェクト指向のメリットとデメリット

オブジェクト指向について学びたいけど「本で読んでも、ネットで調べてもわかりにくい!」と感じ躓いてしまう方は多いです。

そんな方にオブジェクト指向を扱うメリットから魅力まで細かくお伝えします。

本記事では、出来る限りわかりやすくオブジェクト指向について解説していきます。オブジェクト指向のプログラミングを勉強する上でおすすめな本も紹介しているので、参考にしてみてください!

事前に読みたい⇒【職種・レベル別】ITエンジニアにおすすめの勉強法!本・サイト・アプリを徹底比較&紹介|就職・転職者職業ガイド

1.オブジェクト指向とは

オブジェクト指向」とは、ソフトウェア開発の考え方のひとつで処理を部品化して、部品を組み合わせることで1つのプログラムを作る考え方のことを指します。

人がシステム開発を効率的に行うために、多くの言語で取り入れられている概念です。

オブジェクト指向は、車の例にして表現されることが多くあります。車の部品を個々に作っておけば、色んな車に転用できますよね?

オブジェクト指向のイメージ

オブジェクト指向のイメージ

各車に必要な共通の機能は、同じ機能を使って作成し、各車に独自に備わっている機能を独自に作りこんで実装する。

これをプログラムに落とし込んだ考え方がオブジェクト指向なのです。

ユニゾンキャリアではオブジェクト指向を研修でしっかりと学べる企業を紹介しています

気になる方は、下記から無料相談をお試しください。

\Google口コミ「★4.8」の安心サポート/

完全無料で今すぐ相談する▼

※強引な大量応募・大量面接は一切なし!

2.オブジェクト指向で使われる概念

オブジェクト指向に触れていると、以下のワードが頻出します。

それぞれ、オブジェクト指向型言語を扱うために必要なワードです。

オブジェクト指向でよく出る概念

  • ・オブジェクト
  • ・クラス
  • ・インスタンス
  • ・プロパティ
  • ・メソッド

キーワード 概要
オブジェクト
オブジェクト指向プログラミングにおいては、クラスやインスタンスなどを抽象的に「オブジェクト」と呼んでいる。
クラス
オブジェクト指向プログラミングにおいて、オブジェクトの設計図に相当するもの。
インスタンス
クラスはそのまま使うことはできないため、オブジェクトとして使うためにメモリ上に「クラスの実体」を作る必要がある。
この実体を「インスタンス」と呼ぶ。
プロパティ 不用意にデータを編集しないように、一部のデータだけを編集できるようにする機能。
メソッド
「クラスの中で定義された関数」を指す。
関数には「単独で呼び出せるもの」と「クラスを通じて呼び出されるもの」があり、後者を”メソッド”と呼ぶ。

3.オブジェクト指向の三原則

オブジェクト指向の考え方をプログラムに落とし込むためには、「オブジェクト指向の三原則」を理解する必要があります。

オブジェクト指向の三原則

  • ・継承
  • ・ポリモーフィズム(多態性)
  • ・カプセル化

3-1.継承

継承とは「既存のクラスの機能を受け継いだ新しいクラスを作ること」です。

継承を使うことで、既存のクラスから変数やメソッド(関数)を引き継ぐことが出来ます。そのため、同じような機能を持つクラスであれば新たにコードを書く必要がなくなります。

簡単に言うと、「共通して使えるものを使いまわせるようにする機能」です。

継承元のクラスの呼び方

  • ・親クラス
  • ・スーパークラス
  • ・基底クラス

継承して作ったクラスの呼び方

  • ・子クラス
  • ・サブクラス
  • ・派生クラス

3-2.ポリモーフィズム(多態性)

ポリモーフィズムは簡単に言うと、同じ名前の機能で、全く違う動きをする処理を実装できることです。

ポリモーフィズムを実装するために、以下の2つの機能が使われています。

  • ・オーバーライド
  • ・オーバーロード

●オーバーライド

オーバーライドを簡単に説明すると、継承で引き継いだメソッドを、同じ名前のまま別の処理として上書きできる機能です。

オーバーライドを理解するためには、先ほどの「継承」を理解している必要があります。

プログラムを組んでいると、継承したメソッドに「独自に機能を加えたい…」「同じ名前で別の処理をしてほしい…」と思うことがあります。

その時に役に立つのが、「オーバーライド」という機能なのです。

オーバーライドする前

オーバーライドする前

例えば、通常の敵」というクラスを継承して、「ボス敵」というクラスを新たに作りました。

ですがこのままだと、通常の敵は[Attack]した時に1点のダメージしか与えることができません。ボス敵はもっとパワーアップした攻撃ができるようにしたいです。

この時、[Attack]という名前のまま、通常の敵とは違うボス敵用の[Attack]を作りたいですよね?

オーバーライドした後

オーバーライドした後

そこで使うのが「オーバーライド」の機能です。

ボス敵クラスの中で新しく[Attack]メソッドを作ると、通常の敵から継承した[Attack]メソッドは、新たに作成したボス敵用の[Attack]メソッドに上書きされます。

こうすることで、ボス敵だけの強い攻撃が可能になります

●オーバーロード

オーバーロードを簡単に説明すると同じ名前の関数(メソッド)を複数宣言できる機能のことです。

オーバーロードの説明に入る前に、まず関数を使う際の用語についておさらいしましょう。

下記の画像では、「CalcIntという関数」に、「int型の変数numA」と「int型の変数numB」を引数として渡しています。

関数の説明

関数の説明

用語 概要
関数
関数とは、何か特定の動作を行うための機能を持った処理。
Excelでよく使われる「SUM」や「AVERAGE」も関数。
SUM関数であれば、「合計値を計算する機能」を持った関数。
引数
関数に渡す値のこと。
SUM関数であれば、SUM()の括弧内に指定しているものが引数。
データ型 データ型とは、その名の通りデータの種類を意味する。
画像のint型は「整数型」と呼ばれ、このint型を持つ変数には整数を入れることができる。
変数
変数とは、数値や文字など、データを入れるための領域のこと。
プログラミングでは、この変数にデータを入れて処理を行う。

オーバーロードの利点

関数は、引数のデータ型や引数の数が変わるごとに、それに対応した関数を作らなければなりません。

オーバーロードの機能を使わない場合、全ての関数に違う名前を付ける必要があります

オーバーロードが無かったら

オーバーロードが無かったら

「同じような名前の関数が沢山出来てしまってわかりにくい…」
「関数が沢山できて、どの関数を使えばいいかわからない…」

こういう時、オーバーロードの機能を利用すると全部同じ名前の関数として定義できるのです

オーバーロードが適用されると

オーバーロードが適用されると

オーバーロードの機能を使うと、似たような関数が沢山できてしまうことや、どの関数を使えばいいかわからないなんてことをなくせるのです。

でも同じ名前の関数を沢山作ったら、プログラムがどれを使えばいいかわからなくなるのでは…?」と思いますよね。

オーバーロードの機能には、同じ名前の関数が複数定義されていた場合、関数の呼び出され方によって自動で判別して適切な関数を呼び出してくれる機能が備わっています。

これを「オーバーロード解決と呼びます。

●オーバーロードの使用例

public class OverloadingExample {
  // ①文字列を受け取り、そのまま表示するメソッド
  public void printMessage(String message) {
    System.out.println(message);
  }

  // ②数値を受け取り、その数値を含むメッセージを表示するメソッド
  public void printMessage(int number) {
    System.out.println(“数字は” + number + “です。”);
  }

  // ➂文字列と数値のを受け取り、組み合わせたメッセージを表示するメソッド
  public void printMessage(String message, int number) {
    System.out.println(message + “:” + number);
  }

  public static void main(String[] args) {
    OverloadingExample example = new OverloadingExample();

    // 文字列だけを渡す = ①を呼び出す
    example.printMessage(“計算を開始します!”);

    // 数値だけ渡す =②を呼び出す
    example.printMessage(42);

    // 文字列と数値を渡す = ➂を呼び出す
    example.printMessage(“1~10を全部足すと”, 55);
  }
}

上記のプログラムを実行すると、以下の結果が出力されます。

計算を開始します!
数字は42です。
1~10を全部足すと: 55

それぞれの呼び出しに対して、適切なメッセージが出力されたのがわかると思います。

これが「オーバーロード」の機能です。この機能を使うことによって、引数ごとに使う関数を意識する必要なく開発できます

3-3.カプセル化

カプセル化とは、「オブジェクトのデータを、カプセルに入れて他の機能から隠ぺいすること」です。

外から見えたままだと、誰でも簡単にデータを編集出来てしまうためオブジェクトのデータをカプセルに入れて、外から見えないように隠ぺいするのです。

そうすることで、想定していない処理に勝手にアクセスされて、知らないうちにデータを書き換えられてしまうという可能性を防ぐことができます。

データが知らないところで勝手に編集されないよう、守るための機能が「カプセル化」なのです。

4.オブジェクト指向の言語の一覧

オブジェクト指向の考え方は、幅広い言語で取り入れられています。

ここでは、その一例をご紹介いたします。

言語 概要
Java
アプリケーション開発などで幅広く使われている言語。
オブジェクト指向の代表例として挙げられることもあり、ノウハウ本が多く出版されている。
PHP
主にWEBアプリケーションのバックトエンド開発で使われている言語。
ネットショップ等のECサイトや、WordPress等で用いられている。
Ruby
日本の技術者が開発したプログラミング言語で、WEBアプリケーション開発等で用いられる。
シンプルで初心者にも学びやすく、日本語でのノウハウが多い言語。
JavaScript
WEBアプリケーションのフロントエンド開発で使われている言語で、ブラウザ上でWebページに動きをつけるために用いられている。
Python
人工知能をはじめとした幅広い分野で使われている言語。
コードが短くわかりやすいため初心者にも学びやすい言語。
Swift.
Apple社が2014年に発表したプログラミング言語で、Apple製品向けソフトウェア開発に向いている言語。
R言語
統計分析など、データの解析を行うことに特化した言語。
人工知能や機械学習の普及に伴い、需要が増えている言語でもある。
C# Microsoft社が開発した言語でC言語とJavaを元に作られており、どちらかといえばJavaに近いプログラミングが可能。

C++
C言語にオブジェクト指向の機能等を加え、改良した言語。
C言語を拡張した言語であるため、C言語と互換性があることが特徴。
VB.Net
Microsoft社が開発した言語で、フォームを使ったプログラミングが特徴的。
Windows系アプリケーションで使用されることがある。

5.オブジェクト指向を扱うメリット

オブジェクト指向の考え方は様々な言語で取り入れられていますが、オブジェクト指向を意識することでどんなメリットがあるのでしょうか。

5-1.効率的に開発が行える

オブジェクト指向プログラミングでは、処理を部品化するという考え方でプログラミングを行います

部品化した処理は色んなところで使いまわすことができるため、その分開発にかかる時間を短縮することが可能です。

「全ての処理を1から作成していく」のではなく「使いまわせるところは使いまわす」ことで、効率的に開発を行えます。

5-2.メンテナンスがしやすい

オブジェクト指向では、使いまわせる処理は使いまわすようにプログラミングをしています

そのことから、処理に不具合や改修があった場合、1つの処理を修正すれば使いまわした箇所全てに適用されるのです。

修正漏れがなくなることから、メンテナンス性は高いと言えるでしょう。

6.オブジェクト指向を扱うデメリット

オブジェクト指向は理解するのに時間がかかるというのがデメリットとして挙げられるでしょう。

実際数多くのプログラマーが、オブジェクト指向を理解しようとして躓いています。経験が浅いうちはどうしても「理解するのが難しい」と感じてしまうことがあります。

オブジェクト指向を完全に理解するためには、実際にプログラミングを行って徐々に理解していくのが一番の近道なります。

7.オブジェクト指向を勉強するのにおすすめな本

オブジェクト指向言語を学んでいく上で、参考になる本ピックアップしました

今後オブジェクト指向を使った開発をしていきたい方は、是非参考にしてみてください!

●新わかりやすいJava オブジェクト指向徹底解説 第2版

わかりやすいJavaオブジェクト指向

わかりやすいJavaオブジェクト指向

出典:Amazon

オブジェクト指向を勉強するのにはこの一冊がいいでしょう。オブジェクト指向を勉強する上で難しい単語を、対話や図、プログラムを用いて丁寧に説明してくれています。

プログラミングを始めた方、オブジェクト指向を勉強して詰まってしまった方におすすめです!

●良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方

良いコード/悪いコードで学ぶ設計入門

良いコード/悪いコードで学ぶ設計入門

出典:Amazon

オブジェクト指向やプログラミングの勉強をした後、プログラマーが必ずぶつかる壁が以下の3つです。

  • ・オブジェクト指向を使うって…この書き方で正しいのかな
  • ・コードがわかりにくいって言われたけど、どう直せばいいのかわからない…
  • ・プログラマーとして成長したい。良いコードを書くにはどうすればいいんだろう…

本書はそんな方に向けて、良いコードの書き方と悪いコードの書き方を比較しながら解説している本になります。

オブジェクト指向を使ったコードの例にも触れているので、正しいオブジェクト指向プログラミングを知りたい方におすすめの一冊です!

8.オブジェクト指向のご相談はユニゾンキャリアへ

オブジェクト指向を簡単に説明すると、「処理を部品化して、部品を組み合わせることで1つのプログラムを作る考え方」のことです。

オブジェクト指向を理解するためには、実際にプログラミングをしながら徐々に理解をしていく方法がいちばんわかりやすいです。

また、本記事を通してもオブジェクト指向についてイマイチよく分からなかったという方も多くいるでしょう。

ユニゾンキャリアへご相談してもらえればオブジェクト指向に限らずITに関する不安や疑問などを丁寧に解消できます。

すぐに相談してみるのは怖い」「ユニゾンキャリアで本当に解決できるの…?」とお考えの方は実際にユニゾンキャリアを利用してみた人の意見を見てみてください。

このようなことで
悩まれています。

お悩み1

今の世の中に不安がありませんか?

「スキル身につけたい…」「安定したい…」
スキルをつけれる厳選な求人を紹介!

お悩み2

現在の会社で年収上がるビジョンが見えない

「年収が低すぎる…」「年収をアップさせたい…」
年収の高い企業に入社すべき!

お悩み3

ワークライフバランスを整えたい

「残業なしがいい」「週3,4日で働きたい」
ITエンジニアはスキルを磨けば仕事は選べます!

簡単30秒

まずは気軽にWebで無料相談

コンシェルジュ

こんにちは!
はじめに職歴をお聞かせください。

この記事の監修者

監修者画像

エンジニア

土肥 将司

大学卒業後、新卒で不動産会社に就職。その後23歳で開発エンジニアにキャリアチェンジし、3年間大手Slerにて様々な開発に携わる。その後、インフラストラクチャー企業にて人材コンサルタントとして経験を積み、株式会社ユニゾン・テクノロジーを創業。現在の代表取締役

おすすめ記事

Recommended Articles

成功者インタビュー

岩崎友哉様インタビュー

転職で年収アップに
成功した方

年収UP

【年収150万UP】大手自社開発でリモートワーク!自分のスキルと経歴で転職成功するとは思いませんでした

転職

槇原さまインタビュー_アイキャッチ

未経験から転職成功事例

年収UP

「PCをほぼ触ったことありませんでした…」完全未経験からエンジニアに転職成功|年収100万以上アップ!

転職

枌夏月様インタビュー

SES企業からキャリアアップ

キャリアアップ

【SESから独立系SIer】インフラエンジニアとしてさらにスキルアップできる環境にチャレンジ

転職

森崎圭介様インタビュー

未経験から転職成功事例

未経験

【販売職からエンジニア】 2ヶ月間の充実した研修内容が入社の決め手に!

転職

石井颯一様インタビュー

未経験

文系からITエンジニアに!理系科目が苦手でITスキルも無い状態から内定を獲得しました

就活

冨田瑠南様インタビュー

未経験から転職成功事例

未経験

【完全未経験からエンジニア】キャリアアドバイザーと二人三脚で内定獲得!

転職

関連記事

人気の記事一覧