表面の動きばかりに一喜一憂するのは雲を掴むようなもので、何の解決にもならないことが多いものです。
一見自体が好転したように見えて安心していると、いきなりあさっての方向から足下をすくわれるってこともあります。
私たちは、氷山の本体―本質を、クラスとして捉えることができるようになりました。
クラスとは物事(オブジェクト)の本質であり、また分類であるとも言えます。
オブジェクト指向をより深く知り、活用することで、問題の本質をよりよく理解することができるようになります。
実際に問題を解決する際、最後にどう解決するかを決めるのは、あなたです。
しかし、そのときにもオブジェクト指向での思考が大きな助けとなるでしょう。
今回は、クラスについてさらに詳しく見ていきましょう。
コンテンツ
クラスと実体
今回も、前回例に挙げたカレーを使って、クラスというものを説明してみたいと思います。第2回で解説しましたように、オブジェクトは属性と振る舞いを持っています。
これは実は、クラスがそれらを持っているからなのです。
前回見たイデア論の中で、プラトンは「現実の物事はイデアの影である」と言っていました。
同じように、オブジェクト指向では「物事(オブジェクト)はクラスが実体化したものである」と考えます。
あなたが作ったカレーは、「カレー」というクラスが実体化したものなわけです。
あなたが作ったカレーは、「カレー」の実体なので、カレークラスが持つ属性と振る舞いを持つのです。
インスタンス ― カレーの実体
このことをもう少し詳しく見てみましょう。カレークラスの特性を、下のようなかんじだとします。
クラス名: カレー他にもいろいろな特性があるでしょうが、とりあえず今回はこれでお願いします。
- 属性
- 作った人
- レシピ
- 色
- 辛さ
- ルーがあるか
- 振る舞い
- 空腹を満たす
あなたが「S&B ゴールデンカレー(中辛)」を使って、ごく一般的なビーフカレーを作ったとすると、「あなたが作ったカレー」の属性は以下のようになるのではないでしょうか。
- 作った人
- あなた
- レシピ
- S&B ゴールデンカレー(中辛)
- 牛肉
- じゃがいも
- にんじん
- たまねぎ
- 色
- 茶色
- 辛さ
- 中辛
- ルーがあるか
- ある
そして、そこに実際の性質が入ることで実体になるのです。
こうして実体化したもののことをインスタンスと言います。
あなたが作ったカレーは、「カレー」のインスタンスなのです。
また、こうして実体化することをインスタンス化と言います。
クラスとインスタンスの属性の関係はおわかりいただけましたでしょうか?
では振る舞いはどうかというと、こちらはクラスとインスタンスで変わることがありません。
カレークラスには「空腹を満たす」という振る舞いがありますが、あなたが作ったカレーだって、同じように空腹を満たすはずです。
まとめ
- クラスとは、物事(オブジェクト)の本質を表すものであり、分類でもある。
- インスタンスとは、クラスに具体的な属性を与えて実体化したものである。
- インスタンスはクラスが持つ振る舞いをそのまま持つ。
オススメ
開発者の方向けのオブジェクト指向入門には、オブジェクト脳のつくり方がオススメです。オブジェクト指向でソフトウェアを考えるためのコツがわかります。
基本的なことをひととおり、比較的楽に理解することができるでしょう。
0 件のコメント:
コメントを投稿