インスタンス化とは
クラス(設計図)からオブジェクト(インスタンス)を生成するプロセスです。VBAでは、これは通常 New キーワードを使って行われます。以下で分かりやすく解説していきます。
【インスタンス化を理解する上で主なキーワード】
- クラス
- オブジェクト
- インスタンス
クラスとは
実態ではなく形や性能の定義を指すため、クラスは設計図と例えられます。
(例)
時計のクラス
・長い針と短い針が付いている
・長い針は短い針より早く動く
・それぞれの針は一点を中心にクルクル周る
・1から12までの数字が書かれている
【VBA】クラスモジュールの使用方法をわかりやすく変数の呼び出す
【VBA】3パターンの"コンパイルエラー:ユーザー定義型は定義されていません。"エラーの原因
オブジェクトとは
オブジェクトとは実態を指します。データおよびそのデータを操作するメソッドを含む構造体のことです。
クラスは、ある対象の抽象表現であり、実態ではありません。オブジェクトはそのクラスの条件を満たした実態です。
(例)
時計や実態そのもの
インスタンスとは
クラスで定義された内容で作成したモノがインスタンスです。
インスタンスとオブジェクトは何が違うのか、、、と疑問が持たれると思います。正確には概念が異なりますが、同じと考えても支障はありません。
インスタンスとオブジェクトの違いとは
オブジェクトは一般的な用語であり、インスタンスはその特定(クラスや設計書)の実現を指します。すべてのインスタンスはオブジェクトですが、すべてのオブジェクトが特定のクラスのインスタンスとは限りません。
【オブジェクト】
- 定義:オブジェクト指向プログラミングにおいて、データ(プロパティ)とそれを操作するための手続き(メソッド)を一つの単位に組み込みます。
- 一般性: オブジェクトは、その概念が非常に広範にわたります。オブジェクトは具体的なインスタンスを指すこともあれば、抽象的な概念やクラスを指すこともあります。
- 【インスタンス】
定義: 特定のクラス(設計図)に基づいて作成されたオブジェクトの具体的な実現です。つまり、クラスの定義に従ってメモリ上に生成された実体を指します。 - 特定性:インスタンスは常に具体的です。たとえば、Employee クラスの定義に基づいて作成された特定の従業員のオブジェクトは、そのクラスのインスタンスと呼ばれます。
【例】
【オブジェクトの例】: Excelのワークシート、セル範囲、グラフなどはすべてオブジェクトです。
【インスタンスの例】: あるクラス(例えば Employee)に基づいて生成された具体的な従業員オブジェクトは、そのクラスのインスタンスです。
インスタンス化の使用例
インスタンス化は以下の書き方があります。
Dim 変数 As クラス名
Set 変数 = New クラス名
または、
Dim 変数 As New クラス名
Employee クラスの新しいインスタンスを作成し、emp という変数にそのインスタンスを割り当てます。
このインスタンスに対して、データの設定やメソッドの呼び出しが行えます。
' Employee クラスのインスタンスを作成
Dim emp As New Employee
' 名前プロパティに値を設定
emp.Name = "太郎"
作成した Employee オブジェクト(emp)の Name プロパティに "太郎" という値を設定しています。
インスタンス化の主な使いどころとは
【複雑なデータ構造を扱う時】
■複数のプロパティ(名前、価格、在庫数など)を持つ商品情報を管理する場合
各商品をクラスのインスタンスとして表現することで、個々の商品に対する操作(価格更新、在庫チェックなど)を効率的に行うことができます。
インスタンス化することでそれぞれのオブジェクトして操作することができるためです。