オブジェクト指向でシステムの分析・設計を行う際にUMLを使う機会が増えてきました。こういった機会に出会うたびに、UMLとオブジェクト指向をどのように結びつけたらよいかと迷うときがあります。本書では、まずオブジェクト指向の考え方を学び、オブジェクト指向で設計・分析を行っていきます。
オブジェクト指向でシステム開発を行うと何が良いのでしょう?手続き型プログラミングと比べて、カプセル化、継承関係、ポリモーフィズムの3つが、一般的に言われるオブジェクト指向の重要な概念となります。
しかし、私はこれらよりももっと重要な概念、原理があると思います。それが、オブジェクトの責務とインターフェイスです。今日のオブジェクト指向ではこの責務とインターフェイスが重要になってきます。
本書ではクラスの責務とインターフェイスに重点を置いてオブジェクト指向設計を説明しています。
クラス設計についてのガイドライン
本書ではクラスを設計するときにはパブリックインターフェイスを最小に保つことが重要だと述べています。パブリックインターフェイスとはクラスを使う側のオブジェクトが操作できるメソッドと考えると良いでしょう。これを最小に保つことで、クラスの責務が明確になり、カプセル化を促進させることができます。
当初は適切だと思われていたインターフェースが、不完全である場合もあります。対象法を本書では以下のように解説しています。
クラスは最小のインターフェイスのみを提供すべきです。もし、インターフェースが不十分でも、継承を使ってインターフェースを用意に拡張できます。継承を使用すると、新しいクラスで既存のクラスを継承し、拡張されたインターフェースを備えたクラスを生成できます。
もうひとつの重要な概念は、クラスは単一の責務(役割)のみをもつというものです。すべてのオブジェクトは常に自分の責任で行動すべきだ
と「Javaパワープログラミング」で提言されています。
本書の特徴
本書はオブジェクト指向の考え方を非常に丁寧に解説してくれます。「オブジェクト指向とは何なのか?」から「クラスの設計方法」、「再利用と保守性」、「フレームワーク」まで解説してくれています。
JavaとUMLは、オブジェクト指向を説明するための道具として使われている感じです。そもそも、オブジェクト指向の考え方自体は、実装方法や表現方法にとらわれないものであるため、本書のような解説方法がもっとも適切なように思います。
オブジェクト指向とは何なのかモヤモヤしている人にはおすすめです。
関連おすすめ書籍
- オブジェクト指向をもっと実装レベルで学びたい人には非常におすすめ(実装言語はC++)
- UMLを重点的に、オブジェクト指向設計の原則、パターンを学びたい人におすすめ