0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プロトタイプベースのオブジェクト指向について比較して解説してみた

Posted at

もちろん、JavaScriptのプロトタイプベースのオブジェクト指向について、シンプルに説明いたします。

🎨 伝統的なクラスベースのオブジェクト指向

多くの言語(JavaやC++など)では「クラス」という設計図を使って、オブジェクトを作ります。この設計図を基に、同じ型のいくつものオブジェクト(例: 車やロボット)を作成することができます。

伝統的なクラスベースのオブジェクト指向プログラミングについて、シンプルな例を使って説明します。

イメージ:
家の設計図(クラス): 家の設計図には、部屋の数や大きさ、窓の位置などの詳細が含まれています。この設計図を基に、同じ構造の家をいくつでも建てることができます。

実際の家(インスタンス): 設計図に基づいて実際に建てられた家です。各家はその設計図に従っていますが、中の家具や壁の色などの詳細は異なる場合があります。

// クラスの定義
class Dog {
    String breed;
    String color;

    // コンストラクタ
    Dog(String breed, String color) {
        this.breed = breed;
        this.color = color;
    }

    // メソッドの定義
    void bark() {
        System.out.println("Woof!");
    }
}

// インスタンスの作成
public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog("Golden Retriever", "Yellow");
        myDog.bark(); // Woof!
    }
}

上の例では、Dogというクラス(設計図)を定義しています。そして、new Dog("Golden Retriever", "Yellow")でこの設計図を基に「Golden Retriever」という犬のオブジェクト(実体の家)を作成しています。

このクラスベースのアプローチは、型の安全性や継承の明確さ、オブジェクトの振る舞いの再利用性など、多くの利点を持っています。

🍪 プロトタイプベースのオブジェクト指向(JavaScriptの場合)

こちらのアプローチでは、実際のオブジェクトを使って、新しいオブジェクトを「コピー」したり「継承」したりします。この「元となる」オブジェクトを「プロトタイプ」と呼びます。

イメージ:
クッキーカッター(伝統的なクラスベース): クッキーカッターを使って、同じ形のクッキーをたくさん作ることができます。

クッキーの断片を使って新しいクッキーを作る(プロトタイプベース): 既存のクッキーの一部を取って、新しいクッキーを作成します。この既存のクッキーが「プロトタイプ」となります。

なぜこの方法が役立つのか?
柔軟性: 既存のオブジェクトを編集して、新しいオブジェクトを簡単に作成することができます。
効率性: メモリを効果的に使用することができます。多くのオブジェクトが同じプロトタイプを共有している場合、それらの共通の機能は一度だけメモリに保存されます。

let dog = {
    breed: "unknown",
    bark: function() {
        console.log("Woof!");
    }
};

let myDog = Object.create(dog);
myDog.breed = "Golden Retriever";

console.log(myDog.breed); // Golden Retriever
myDog.bark(); // Woof!

ここで、dogはプロトタイプとして機能し、myDogはdogから継承して新しく作られたオブジェクトです。

このプロトタイプベースのアプローチは、特にJavaScriptのような動的な言語において、オブジェクト指向の設計を非常に柔軟にする要因となっています。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?