1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プログラミングの学習を進めていると、必ずと言っていいほど出てくる言葉が「オブジェクト指向」。

でも、「オブジェクトって何?」「インスタンス?クラス?何が違うの?」と最初は戸惑う人も多いはず。私もその一人です。

この記事では、自分なりに、オブジェクト指向の基本と、よく混乱しやすい用語の違いをまとめてみました。

前提知識:オブジェクト、クラス、インスタンスの違い

まずは、オブジェクト指向を理解する上で不可欠な3つの用語を整理しておきましょう。

用語 意味 例えるなら
クラス 設計図。どういうデータ(プロパティ)と処理(メソッド)を持つかを定義する パンのレシピ
インスタンス クラスから作られた実体。実際に動くもの 実際に焼いたパン
オブジェクト JavaScriptなどの言語で使われる、データと処理をセットで管理するもの全般 モノそのもの(インスタンスもオブジェクトの一種)

JavaScriptでの例

// クラス定義
class Person {
  constructor(name) {
    this.name = name;
  }
  greet() {
    console.log(`こんにちは、私は${this.name}です`);
  }
}

// クラスからインスタンスを作る
const taro = new Person("たろう"); // ← これはインスタンス

// インスタンスはオブジェクトでもある
console.log(typeof taro); // "object"
taro.greet();

ここで Person はクラス、taro はそのインスタンス(オブジェクト)です。

オブジェクト指向とは?

一言でいうと:

「モノ(オブジェクト)を中心にプログラムを設計する考え方」

どういうこと?

従来の「手続き型プログラミング」では、データと処理をバラバラに書くスタイルでしたが、「オブジェクト指向」では、それらを一つの“モノ”としてまとめます。

手続き型の例

let name = "たろう";
function greet(n) {
  console.log(`こんにちは、私は${n}です`);
}
greet(name);

オブジェクト指向の例

class Person {
  constructor(name) {
    this.name = name;
  }
  greet() {
    console.log(`こんにちは、私は${this.name}です`);
  }
}
const taro = new Person("たろう");
taro.greet();

これにより、「データ」と「そのデータに関する処理」を一緒に管理できるようになります。

オブジェクト指向の三大要素

要素 説明
カプセル化 データと処理を一つにまとめて管理する クラス内にプロパティとメソッドを定義
継承 あるクラスの機能を引き継いで別のクラスを作る class Dog extends Animal
ポリモーフィズム 同じ名前のメソッドでも中身を変えて振る舞いを変える speak() メソッドがそれぞれのクラスで異なる動作をする

なぜオブジェクト指向を使うの?

メリット

  • 再利用しやすい:クラスを再利用すれば、同じ構造のオブジェクトが簡単に作れる
  • 保守しやすい:一箇所を修正すれば他も反映されやすい
  • 現実世界に近い設計:人、商品、記録などをそのまま“モノ”として捉えられる

実際の開発でのオブジェクト指向

LaravelやRails、SpringなどのWebフレームワークは、基本的にこの「オブジェクト指向」をベースにしています。
たとえば、LaravelのUserモデルはクラスであり、Auth::user()で取得するのはそのインスタンスです。

$user = Auth::user(); // ← Userクラスのインスタンス
$user->name;          // ← プロパティ
$user->save();        // ← メソッド

現実の「人」をそのままコードにしたような設計ですね。

まとめ

  • オブジェクト指向とは、「モノ」を中心にコードを書くスタイル
  • クラス=設計図、インスタンス=実物、オブジェクト=それらを含むモノ全般
  • メリットが多く、モダンな開発の基本になる考え方

私なりにまとめてみたのですが、いかがでしょうか?
間違っている箇所、もっと分かりやすい解説や例などありましたら、コメントお待ちしています。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?