簡単30秒

無料
転職相談

無料で転職相談

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

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

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

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

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

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

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

記事の要約

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

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

オブジェクト指向」とは、ソフトウェア開発の考え方のひとつで「データと動きをセットにしたブロックを作って、それらを組み合わせることでプログラムを組み立てる方法」のことを指します。

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

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

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

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

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

ご相談から内定後のサポートまで「完全無料」

あなたのご経歴からお選びください。

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.カプセル化

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

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

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

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

IT専門転職イメージバナー

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8.まとめ

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

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

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

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

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

口コミ評価

4.8
powered by Google
kazuki takaoka (Ream)
23:37 27 Jan 25
河本さんに担当していただきました。it業界についての知識や、面接対策、内定の取り方を丁寧に教えていただきながら活動をすることができたので、自信を持って取り組むことができ、無事内定を取ることができました。今後転職を考えた時にはまた利用させていただきたいと思います。
uifo “w” tratjpo
11:23 26 Jan 25
転職活動期間: 約1ヶ月間担当者: 河本さんエンジニアを目指していましたが、IT業界や職種について具体的な知識がなく、どのようにキャリアを描けばいいのかも分からない状態でした。また、未経験で経歴に空白期間があったため、転職活動への不安も大きかったのですが、担当者さんにIT業界について丁寧に教えていただいたおかげで、どんなキャリアを積むべきかを明確に決めることができました。他のエージェントも並行して利用しましたが、ほとんどユニゾンキャリアさん経由で応募しました。その理由は以下の3点です。1. 親身で丁寧な対応担当者さんは非常に親切で、不安や疑問に一つ一つ丁寧に応えてくれました。希望や状況をしっかりヒアリングしたうえで、現実的かつポジティブなアドバイスをいただけた点がとても心強かったです。また、提案された求人についても、一社ずつ丁寧に会社の特徴を説明していただけたため、納得して応募を進めることができました。2. 専門性の高いアドバイス担当者が元エンジニアということもあり、現場で求められるスキルや求人を見る際のポイントについて具体的なアドバイスをいただけました。そのおかげで、求人に対する信頼感が増し、安心して転職活動に取り組めました。3. 質の高い求人IT業界の中でも、エンジニアとしての経験が積める企業のみを扱っている点が大きな魅力です。例えば、エンジニア職を謳いながらコールセンターや家電量販店への配属がある企業は取り扱わないとのことで、安心して求人を選ぶことができました。おすすめできる人:IT業界やエンジニア職種を目指す未経験の方、特に20代で在職中の方におすすめしたいエージェントです。親身なサポートと専門性の高いアドバイスを受けられるため、初めての転職活動でも安心して利用できると思います。
樫村隆聖
02:14 26 Jan 25
何も知らない自分に色々教えてくださり本当に助かりました。ありがとうございました。転職の際にも活用したいと思います。
ghgh
12:45 23 Jan 25
さわおかりく
03:46 23 Jan 25
高成田さんという方に対応していただきました。他の転職支援サービスと違い、本当におすすめの会社をいくつか絞っておすすめしていただけるところが、選択肢が多くなりすぎず目標意識を高く保てたので良かったです。
村谷優太
06:42 22 Jan 25
企業の選定やESの作成など就活に必要な事柄を細かくサポートして頂けたので、自分一人で進めるよりも結果的にスムーズに進んだと思う。
藤原有里
03:04 22 Jan 25
未経験でIT業界への転職活動は何から始めたらいいか分からず、なかなか進まなかったのですが。複数回の面談を組んでくださり業界理解を深め、職歴や面接対策なども一緒に考えてくださり、不安なく挑むことができました。引っ越しの相談なども受けてくださり短期間で就職することができました。ユニゾンキャリアさんに支えてもらったことばかりです、本当にありがとうございました。入社後もキャリアアップ実現できるよう尽力します!
See All Reviews

ユニゾンキャリアでは、IT業界に精通した専任のアドバイザーがあなたのご要望に合わせてぴったりの求人を紹介します。

ご相談から内定後のサポートまで「完全無料」でできますので、お気軽にお問い合わせください。

\自分のスキルを活かしたい!/