クラスとインスタンス?

クラスとインスタンス

私はオブジェクト指向のプログラミング経験はないですが、クラスとインスタンスという言葉くらいは知っていて、内容もなんとなくわかっているつもりです。

クラスは設計図のようなものでインスタンスは具体的なモノというような説明をよく見ます。例えば対象が車であれば、クラスというのは型名ABCシリーズという車の基本設計が記述されているものであって、車に必要な要素(窓、タイヤ、ボディなど)や共通的な機能定義がされているものだと思っています。そして、インスタンスというのは各要素の具体的な仕様が確定して、実際に製造される製品のことで、仕様の違いによって型名の異なる製品として製造されます。

この関係性がクラスとインスタンスの関係だと考えています。

クラスという言葉の意味としては?(考察)

インスタンスという用語は事実•実態というような意味で「具体的なもの」という説明に結び付きやすいですが、クラスはあまりしっくりきません。クラスは「設計書」と言われても、言葉としては別物のように感じます。設計書ならDesign Documentと呼べばいいのに。

Classの英単語の意味としては「分類、区分」という意味になります。例えば、複数のものを分類する、つまりクラス分けを行えば、自ずと同じクラスのものは何らかの共通要素でくくられることになります。この共通要素というのはまさに設計書の役割である共通機能の定義に当たるわけです。

実際の開発の順序でいえば、基本機能の設計(クラスを作って)をして、具体的な仕様の違いによって異なるインスタンスが派生して生まれるという順序になります。しかし、言葉の意味としては、すでに存在しているものから共通的な概念を抽出して分類する(クラスを作る)という意味でクラスと名付けられたように思えます。確かに設計書と分類の本質は共通要素、共通機能といったように同じだと考えられますが、発生手順が逆なのでしっくりこないのかなと思います。

これはあくまで私の考察なので、暇があれば実際のところどうなのか調べてみたいと思います。

25/12/19 オブジェクトとインスタンスを逆に覚えていたようなので修正。この2つの用語の意味はどうも言語や業界(?)によっても違ったりするみたいですね。

投稿者 kumaharakumao

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です