UMLのクラス図とは?
UMLのうち、最も重要なのがクラス図である。
なぜ、クラス図を書く必要があるか?
クラス図を書かなくても、Servletの技術を使えばWebアプリケーションを作成することはできる。
しかし、オブジェクト指向のメリットである再利用性を高めるためのコンポーネント構成(クラスの分割)を検討する際の共通言語としてクラス図が役に立つ。
クラス図を書くだけでなく、クラス図を書いた上で、再利用性を高めることができないか、つまり「凝集度を高めて結合度を下げるにはどういう構成にすれば良いか考えること」が重要である。
また、Webアプリケーションを構成するクラス群の全体構成を可視化して効果的に伝える上でも、クラス図は有用である。
UMLのクラス図の書き方の基本
クラス図において、各クラス(またはインターフェース)は次のように書く。
一番上にはクラス名を書く。インターフェースの場合は、「<<インターフェース名>>」と書く。
次に属性(フィールド名)を、その下にメソッド名を列挙する。
属性またはメソッド名は省略しても良い。(クラス名だけでも良い)
また、属性またはメソッドのアクセス修飾子を表現する場合は次の記号を使用する。
記号 | アクセス修飾子 | クラス図での表記 |
− | private | 自クラス内のメソッドからのみアクセス可能 |
# | protected | 自クラスまたは自クラスのサブクラスからのみアクセス可能 |
〜 | default | 自クラスと同一パッケージ階層のクラスからのみアクセス可能 |
+ | public | 全クラスからアクセス可能 |
UMLのクラス図の関連の表し方
クラス図で重要なのが関連の表し方である。関連の種類に応じて、表現方法が決められている。
表記 | 関係名 | 説明 |
関係 | 2つのクラス間またはインスタンス間に関係があることを表す。 | |
依存 | 関係があることを依存と呼ぶ。 | |
継承 | クラス間の依存関係を表す。 | |
汎化・特化 | Javaのextendsキーワードに相当。子 extends 親。 | |
実現 | Javaのimplementsキーワードに相当。実装クラス implements インターフェース。 | |
関連 | インスタンス間の関係を表す。 | |
集約 | 子クラスが存在しなくとも、親クラスは単独で存在する関係。 | |
コンポジション | 子クラスが存在しないと、親クラスも存在できない関係。 |