「C言語で見るデータの構造」で書いた様に、データは、 まず、あらかじめ定義されたデータ型の特徴を持つ変数が有り、 変数が1つ1つバラバラだと面倒臭いから、同じデータ型のまとまりである「配列」の考え方が生まれ、 さらに、異なるデータ型をもまとめて扱えるようにした「構造体」の考え方へ発展し、 それらのデータのまとまりと、それらのデータへの処理とをひとまとめにした「クラス」の発想へとつながっていく。
私は、乱暴に言えば、
データ型はレディメイドでハードウェア寄りな型、
クラスはオーダーメイドで多機能、人間寄りな型であると思っている。
そもそも、文字型とか、整数型とか、実数型とか、実数型でも単精度とか倍精度とか、
色々有るデータ型は、あくまでも型であって、それ自体が存在する訳では無い。
例えば、
Double a;
と書くことにより、「符号付き倍精度実数型」の変数「a」の場所が必要な語数分だけメモリ上に確保される。
Double型で宣言された変数aの値は、加減乗除などの処理の過程において、
符号付きの倍精度の実数(浮動小数点型)として処理(読み込み、書き込み、計算、正規化など)されるが、
それは、あらかじめDouble型のデータに対して定義された手続きであり、普段、プログラマが意識する必要は無い。
これは、クラスは設計図であり、クラスを実体化させることでデータに応じた処理が出来ることと考え方が似ていると思っている。
※勿論、内部構造は違っていますが。