天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

オブジェクト指向のこころを読む会 Vol.7に参加してきた

yr-camp.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

今日は応用問題を6つ解いていきました。

8章応用問題1

前者の定義は広い概念で言うと正しいものの、

  • 早い段階から実装に走りがち(オブジェクトの中身に関しても会話が必要)
  • データ隠蔽していないオブジェクトを肯定することになりかねない

という欠点があるため、2つ目の定義のほうが優れているという話になりました。

8章応用問題2

本書の主張だと本質的には違わないものの、局所的に使用したい場合や言語によってはメンバ変数として定義するのとオブジェクトとして保持するのでは話が変わってくるケースもあるという話をしていました。

8章応用問題3

DBの種類や注文のルールなど流動的要素をカプセル化することで、変更に強くなることが意味(良い点)であるという話をしていきました。

8章応用問題4

理想的な話をするなら、共通性分析で概念の領域をカバーして、可変性分析で仕様上の観点(インターフース)と実装レベルの観点を決定していく流れになるというのが回答になりそうだという話をしていきました。

ただ、実際の業務では、可変性分析をやって概念の領域を整備していくということも往々にしてあるので、そういう意味では共通性分析は概念領域/仕様領域の2つの領域にアプローチする話で、可変性分析は概念領域/仕様領域/実装領域の3つの領域にアプローチするとも言えそうだという話になりました。

8章応用問題5

抽象クラスは派生クラスの概念そのものであるため中央集権として扱うことができるという意味や、抽象クラスが影響を受けるとすべての派生クラスも影響を受けるという意味を指しているのではないか?という話になりました。

8章応用問題6

可変性が意味を持つのは共通性があるからこそであるということを示唆している意味だという結論になりました。

ただ、極端なことを言ってしまうとどんな概念も共通化してしまうことができ、どんな場合にも可変性に意味があるという話にもなってしまいかねないので、共通性としてくくることに意味がある(共通性と捉えて論理の飛躍がない)ものを共通性として再定義する必要はありそうです。

また、本書で言っている共通性の定義が、再利用性に関してはあまりフォーカスされていないのは興味深いという話も出ていました。

全体を通した感想

会を追うごとに問題の議論にかかる時間が長くなっているのは、理解が深まってきて本に書かれている内容以上の話しを議論できているからなのかな?と感じました。

8章はカプセル化や継承の部分でかなり興味深い内容が多かったので、みなさんが集まったときにまた議論していきたいと思いました。