重複の可能性:
Java でクラスを「クラス」と呼ぶのはなぜですか?
Haskell の型クラスについて考えていました。これにより、実行できる操作に基づいて、型をさまざまなグループに分けることができます。しかし、なぜクラスは C++ でクラスと呼ばれるのですか? 彼らはもともと何を分類するつもりだったのですか?
重複の可能性:
Java でクラスを「クラス」と呼ぶのはなぜですか?
Haskell の型クラスについて考えていました。これにより、実行できる操作に基づいて、型をさまざまなグループに分けることができます。しかし、なぜクラスは C++ でクラスと呼ばれるのですか? 彼らはもともと何を分類するつもりだったのですか?
Simula では「クラス」と呼ばれていたからです。ソースによると、Simula は、Algol の「レコード クラス」(つまり、型情報が関連付けられた構造化データ) に関するこの提案の影響を受けました。他のほとんどすべての言語は、オブジェクト指向の用語を (直接的または間接的に) Simula から派生させました。
実世界のエンティティ (オブジェクト) を分類します。
C++ のクラスは、オブジェクトを分類するためのものです。
それらはオブジェクトを分類するため、名前が付けられました:)
実際には、haskell での使用はあまり一般的ではありません。ほとんどの OO 言語では、クラスは、オブジェクトのクラスの動作を定義する型を参照するために使用されます。たとえばCar
、私の車、あなたの車、他の誰かの車など、多くのインスタンスがあるオブジェクトのクラスです。Haskell では、この用語はオブジェクトのクラスではなく、型のクラスを指すためにメタ言語レベルで使用されます。
オブジェクト指向プログラミングでは、状態があり、いくつかの操作をサポートするオブジェクトがあります。状態や内容は、オブジェクトによって大きく異なります(たとえば、金融プログラムの銀行口座を表すオブジェクトと、レーシングシミュレーターの車を表すオブジェクト)。したがって、すべてのオブジェクトを同じように扱うことはできません。
クラスは、同様に機能する一連のオブジェクトを表します。オブジェクトが特定のクラスに属していることがわかっている場合は、そのオブジェクトを使用して実行できるいくつかの種類のことを知っています。銀行口座を表すオブジェクトは、、、、などの操作をサポートする場合deposit
がwithdraw
ありgetBalance
ますgetAccountHolder
。
deposit
「 、、、、および操作をサポートするオブジェクトのクラス」 withdraw
、または「、、、、およびメソッドをサポートするオブジェクトのクラス」について話すことは、「クラス」という単語の通常の使用法です(「分類」に関連しています)。 、これは基本的に「クラスに入れる」という意味です。学生のグループのように「クラス」という言葉はまったく異なります)。getBalance
getAccountHolder
accelerate
getSpeed
steer
明らかに、特定のクラスにすぐに名前を付けたいので、「...をサポートするオブジェクトのクラス」ではなく、BankAccount
またはとだけ言うことができます。RacingCar
つまり、クラスはまさにそれです。クラスのインスタンスであるオブジェクトに共通するものを定義する「もの」。