包含は非常に自然な考え方です。
また、実例が身近に溢れていますので、すんなり理解していただけると思います。
非常に簡単なので、記事も短いです。
しかし、簡単なことなのですが、これが実はすごく奥が深いものなのです。
コンテンツ
包含って
包含は、実は前回お話しした依存の一種です。ただ、包含は頻繁に現れる依存関係であり、また特に重要ですので、別に挙げました。
ちょっとお話しするだけで、これはご納得いただけることと思います。
さて。えー、包含とは包み含むことです。
読んで字のごとしなんですが、これだけでは全然ピンときませんね。
またまた例を使って考えてみましょう。
最後の(かもしれない)カレー
はい、今回もカレーです。ここで、カレー大好きさん(私もそうなんですが)には、ちょっと残念なお知らせがあります。
今回と次回、あとは「まとめ」くらいで、基礎編は終了の予定です。
ですので、コンスタントにカレーを例にとるのは、これで最後かもしれません。
さてさて、カレーにはいろいろな具が入ってますね。
じゃがいも、にんじん、たまねぎ、肉など。
この状態、まさに包含です。
カレーオブジェクトは、これらの具オブジェクトを包含しているのです。
これを集約ということもあります。
カレーオブジェクトの中に、いろいろな具オブジェクトが集約されているわけです。
簡単ですね。
見たまんまです。
コンポジション
集約の一種に、コンポジションというものがあります。コンポジット集約とかいうこともあります。
これは、集約されている状態でしか存在しないものをいいます。
例えば本のページ。
本に含まれているからこそ、「ページ」ですよね。
ばらばらだったら、ただの紙切れです。
ページじゃありません。
では、クレジットカードの請求書を見てみてください。(ほんとに見なくてもいいですけど)
明細表がありますよね。
これは明細の集まりなわけですが、これは請求書に含まれていてはじめて意味をなします。
これをハサミでばらしたりしたら、もう意味のないゴミですね。
このように、本来一つのものなんだけど、ばらして考えてみたという意味での包含が、コンポジションです。
わかりやすいですね
包含とは、包み含むこと。ご納得いただけましたか?
包含は、このように身近によくある、わかりやすいものです。
当たり前すぎてあまり意味のないことのように思えるかもしれません。
しかし、これをちゃんと自分の考え方として駆使すると、実はかなり強力なアイテムになります。
次回は、それについて考えてみたいと思います。
オススメ
開発者の方向けのオブジェクト指向入門には、オブジェクト脳のつくり方がオススメです。オブジェクト指向でソフトウェアを考えるためのコツがわかります。
基本的なことをひととおり、比較的楽に理解することができるでしょう。
0 件のコメント:
コメントを投稿