ソフトウェア工学Ⅱ

列挙パターン

Q1. 列挙パターンの例をつぶさに見て、データ抽象とポリモーフィズムの観点で考察してレポートにしてください。

データ抽象

 indexで要素を取り出す列挙パターンのデータ抽出は、要素(データ)の数だけ抽出するというスタイルであるが、これだと例えば、HashSetのように順不同の構造に変えたとき、forのコードを書き換えないといけなくなる。そのため、Iteratorやfor-eachを使わないと、いけない。そして、Iteratorやfor-eachで要素を取り出す列挙パターンのデータ抽出では、次の要素が存在すれば、次々に要素を抽出できるようになっているので、順不同であっても問題なく要素を抽出できる。また、for-eachの場合は要素の取り出しが隠蔽されており、Iteratorとは違ってキャストして新たな変数に代入しなくても要素を抽出できる。

ポリモーフィズム

 ポリモーフィズムとは、「同じ動作をするけれど、異なる反応が帰ってくる」というものであるが、Iteratorやfor-eachで要素を取り出す列挙パターンでは、aCollectionのオブジェクトの種類(今回はPointクラス)によって、異なる戻り値が帰ってくるため、多態性がある。しかし、indexで要素を取り出す列挙パターンでは、多態性はないように思う。

Q2. その他、感想など

 最初に会社の見分け方を聞いて、すごく参考になりました。会社選びに関して、「会社説明会に行くか、本を参考にする」のがベストなのかなあと勝手に考えていましたが、それ以前に判断する方法を知れて良かったです。

 プログラミング言語の話を聞いて思ったのが、プログラミング言語の歴史や背景をもっと知るべきだということです。もちろん、自分の勉強しているプログラミング言語の歴史や背景などは少々は知っていますが、他の言語はネットで上がっているのを少々読む程度で、表面だけの判断しかしていません。そのため、Lisp, LOGO, そしてSimulaといった言語のどういう部分がSmalltalkに影響していったかという背景を知っておらず、損しています。なので、時間が空いたときにプログラミング言語の本を立ち読みしたいと思います。

 それから、「はてな」の問題に関して感じたのが、1つのオブジェクトが在ったとき、そのオブジェクトには、構造,機能,発生という魂みたいなものが必ずあり、この魂がオブジェクトを形成しているということ、そして構造,機能,発生がないとオブジェクトは成り立たないということを感じました。 

トップページへ戻る