佐々木屋

技術的なことから趣味まで色々書きます

クラスを考える③(勘違い)

ここまでのお話で、知らず知らずに「現実世界とプログラミング世界の乖離」が出てきています。じゃあクラスの中身(フィールドやメソッド)はあんこの量とか焼き加減だけど、現実のたい焼きの型にはあんこを入れる場所はないし、焼き加減もはたい焼きの型とは関係ないぞ?

確かにそうなんです。たい焼きの中身があんこなのか、チョコレートなのか、クリームなのかは焼く人間が勝手に変えられるもので、たい焼きの型は全く関与していません。焼き加減もそうです。しかし、実際のクラスは中身を入れる変数を持っていたり、焼き加減の振る舞いをメソッドとして持っていたりします。


もう一つよくある勘違いがあります。「関数化する」=「クラスにする」と考えることです。VB6の延長で考えると、どうしてもモジュール概念が邪魔をして、「クラスって関数の集まりでしょ?」となり「関数化する」=「クラスにする」ってなってしまいます。違います。クラスは関数ではありません。関数は機能を提供するメソッドの一つであり、それを使ってインスタンスを作ることはできません。