クラスとオブジェクトの主な違いは、クラスがオブジェクトを作成するための青写真またはテンプレートであるのに対し、オブジェクトはクラスのインスタンスであることです。
プログラミングパラダイムとは、コンピュータプログラムの構造や要素を組織化するスタイルのことである。
主要なパラダイムの1つは、オブジェクト指向プログラミング(OOP)です。
このパラダイムにより、開発者は実世界のシナリオを容易にモデル化することができる。
さらに、このパラダイムでは、オブジェクトを使用してソフトウェアを作成することができます。
クラスとオブジェクトは、OOPに関連する2つの概念です。
クラスとは
クラスとは、オブジェクトを作成するための設計図です。
オブジェクトを作成するための構造を提供する論理的な実体です。
つまり、プログラマは1つのクラスを使って複数のオブジェクトを作成することができます。
クラスは、属性とメソッドから構成されています。
属性とは、フィールドやメソッドのことです。
メソッドは動作を記述します。
さらに、クラスはコンストラクタを含むことができます。
これは、オブジェクトを初期化するための特別なメソッドです。
クラスのこれらの属性とメソッドは、クラスのメンバと呼ばれます。
これらのメンバは、public、private、protectedのいずれかの可視性を持つことができます。
publicなメンバーはクラスの外からアクセスでき、privateなメンバーはクラスの中でのみアクセス可能です。
また、protectedメンバはクラス内およびサブクラス内で見ることができます。
プログラマーは、クラスの属性をプライベートと宣言し、パブリックメソッドを使用してアクセスできるようにすることで、属性を保護することができます。
Object とは
オブジェクトとは、あるクラスのインスタンスです。
言い換えれば、オブジェクトはクラスを使って作られる。
オブジェクトは、状態と振る舞いを持つ実体です。
クラスの属性は、オブジェクトの状態を記述します。
同様に、クラスのメソッドは、オブジェクトの振る舞いを記述する。
例えば、医療管理システムを想定してみましょう。
医療機関の名前、場所、医師の数、患者の数などの状態を持ちます。
また、患者の受け入れ、医療報告書の発行、医師の詳細入力などの動作や機能も持っています。
さらに、銀行システムは、銀行の名前、場所、国などの状態を持ち、入金、引き出し、送金などの振る舞いや機能を持つ。
このように、クラスとオブジェクトのシナリオを用いることで、あらゆる実世界の状況を容易にモデル化することが可能である。
上のプログラムでは、Studentというクラスが存在します。
このクラスは、id, name, gpa というプライベートプロパティを持っています。
Studentコンストラクタは、これらのプロパティに初期値を与えるのに役立ちます。
プロパティを表示するために、displayDetails というメソッドがあります。
メインプログラムでは、Student オブジェクト (s1, s2) が作成されます。
new キーワードは実行時にオブジェクトにメモリを割り当てるのに役立ちます。
そして、これらのオブジェクトを使用して dispalyDetails メソッドが呼び出されます。
そのため、生徒の詳細がコンソールに表示されます。
クラスとオブジェクトの違い
定義
クラスは、プログラム内でオブジェクトを作成したりインスタンス化するためのテンプレートであり、オブジェクトはクラスのインスタンスです。
したがって、これがクラスとオブジェクトの主な違いです。
タイプ
また、クラスとオブジェクトの重要な違いは、クラスが論理的な実体であるのに対して、オブジェクトは物理的な実体であることです。
クリエーション
また、クラスは「class」キーワードで宣言しますが、オブジェクトは「new」キーワードで作成します。
メモリ割り当て
クラスは作成時にメモリを取得しませんが、オブジェクトは作成時にメモリを取得します。
したがって、この点もクラスとオブジェクトの違いと言えます。
数量
さらに、クラスは一度だけ宣言されますが、クラスを使って複数のオブジェクトが作成されます。
結論
OOP全体は、クラスとオブジェクトの概念に基づいています。
クラスとオブジェクトの主な違いは、クラスがオブジェクトを作成するための設計図またはテンプレートであるのに対し、オブジェクトはクラスのインスタンスであることです。
簡単に言うと、オブジェクトを作るにはクラスが必要です。