【オブジェクト指向のこころ】第4章 標準的なオブジェクト指向による解決策 解答

オブジェクト指向のこころ 第4章の練習問題の解答をまとめてみる。

基礎

図4.3のクラス図から、以下のものを答えてください。
  • 抽象クラス
  • カーディナリティ
  • 派生クラス
  • コンポジション
  • 公開(public)メソッド

  • 抽象クラス

    • Feature
  • カーディナリティ
    • ModelはFeatureを0...*に持てる。
  • 派生クラス
    • SlotFeature, HoleFeature, CutoutFeature, IrregularFeature, SpecialFeature
      これらはすべてFeatureの一種
  • コンポジション
  • 公開(public)メソッド
    • getOperation()はCutoutFeatureの公開メソッド

(p.55)

CAD/CAMアプリケーションが必要とする本質的な機能とは何でしょうか

エキスパートシステムに変更を加えることなく、さまざまなCAD/CAMシステムをプラグインできる機能を必要としている。
(p.59)

最初の解決策には4つの問題がありました。それらは何だったでしょうか?
  1. メソッドの冗長さ
  2. 汚い
  3. 高い結合度:Feature同士が関連している
  4. 低い凝集度:多くのクラス間にメソッドが散らばっている

(p.60)

応用

本章で解説したCAD/CAMの問題を解決するためのアプローチを解説してください。このアプローチは妥当なものでしょうか?

それぞれのケースに対してフィーチャーを特殊化するというアプローチ。 V1に対するスロットクラスと、V2に対するスロットクラスを作り、 それぞれのV1型のケースは、V1ライブラリとやり取りし、V2型のケースはV2ライブラリとやり取りする。 最初のステップは妥当に思えて、問題に対するある種の洞察を与えるが、改善されなければならない。

yusuke-ujitoko.hatenablog.com