冒頭から不躾な質問で申し訳ありませんが、これをオブジェクトとして表してみましょう。
参考までに自身の今朝の朝食はこんなふうに表現してみます。
<朝食>
<食べたものリスト>
<食べたもの>トースト</食べたもの>
<食べたもの>ハムエッグ</食べたもの>
<食べたもの>ひよこ豆とレタスとトマトのサラダ</食べたもの>
</食べたものリスト>
<飲み物>コーヒー</飲み物>
</朝食>
簡単ですね。
当然ながら、個々のセンスや捉え方によって表現はいろいろあると思います。
もちろん、それでよいわけです。
ここで示した表現は、食べたもの という視点を集合で捉えて、すなわち、コレクションとして表してします。あえて何か特記するならそれだけです。
では、今度は、これをクラスに置き換えてみます。
class 朝食 { … }
これだけです。最小の構成です。
少し工夫を加えて汎用的にしてみます。
class 朝食 extends 食事 { … }
superクラスはこんな風に表してみます。
class 食事 implements I食事 { … }
こうすることによって昼食と夕食を表すことができますね。
もちろん、人によっては、上に提示した概念モデルに <時刻></時刻> のようなタイムスタンプを付与したり、<いつ></いつ> のような更なるオブジェクトの汎用表現を加えるかもしれません。もちろん、それもOKです。
今度は、もう少し視点を拡げてコンテキストを表現します。つまり、ふるまいの部分を与えます。たとえば、食べる、摂取する、という行為を概念モデルとして考えます。
こんな感じはどうでしょう?
class 食べるコンテキスト { … }
上記のクラスのコンストラクタで、さきほどの朝食クラスを生成してインジェクトします。
食べるコンテキスト c = new 食べるコンテキスト( new 朝食() );
c.Execute();
これにより、コンテキストに食事インタフェースの規約を実装したクラスを与えることにより、表現が汎用的になりました。
言ってみれば、これは頭の体操です。
いろいろなものをモデルに置き換えてみましょう。
毎朝の通勤ルート
今週末に観に行く予定の映画
今夏の長期的気象予想
などなど…
なんでもよいです。
ほんの少しの時間が出来たときにでも、頭の体操をしつつ柔軟な思考を持つべく練習をしましょう。
0 件のコメント :
コメントを投稿