内容アウトライン
本記事ではオブジェクト図について記述します。
・オブジェクト図って?
・オブジェクト図を構成する要素
・実際の描くときの流れは?
・まとめ
オブジェクト図って?
オブジェクト図は、システム化しようとしているモノ、コトにどのような情報が付随しているかを考え、さらにオブジェクト間にあるつながりを表現することで、特定時点におけるシステムの状態を表現するための図です。
システムの構造を具体的に捉える際に有用なので、クラス図を描く前段階として用いることが多いです。
オブジェクト図を構成する要素
オブジェクト図を構成する要素には以下のようなものがあります。
・オブジェクト
・リンク
・属性
イメージの図としては以下のようになります。
長方形で表現されているもの全てがオブジェクトで、オブジェクト間の関係を表す線をリンクと呼びます(属性がないオブジェクト同士もリンクで繋げます)。
属性は横線で二分割されたオブジェクトの下側に書かれているものです。
リンクは関連があるオブジェクト同士を線で結んでやれば良いだけです。なので、これ以降では説明を省きます。
オブジェクトの書き方詳細
オブジェクトを描く上で、オプションがかかるのは名前の描き方だけです。
反対に、長方形を描くということと、名前の下にはアンダーラインを引く、という点はどんな時でも共通しています。
何も省略せずにオブジェクトを表現すると以下のようになります。
「:」の左側をオブジェクト名、「:」の右側をクラス名と呼びます。それぞれソースコード上で言うところのインスタンスとクラスです。
オブジェクト名は、どちらか一方を省略して表現することができます。
オブジェクト名だけで名前を表現するときは右側に「:」はつきませんが、クラス名だけでオブジェクトを表現する場合は左側に「:」をつけることに注意しましょう。
どちらか一方の名前だけでオブジェクトを表現するのに足りている場合に、無駄な部分の省略を行います。
プログラミングをしていれば、たくさんインスタンスを作る予定がないクラス(例えば属性を持たず、一連の処理だけを請け負うクラス)ができることがあると思います。そういった場合にはクラス名があれば用が足ります。オブジェクト名を書くことに意味はないので、オブジェクト名は省略の対象になります。
属性書き方詳細
属性はオブジェクトの持っている情報のことです。オブジェクトを横線で二分割したその下に「'属性名'='属性値'」という形式で属性は記述されます。
以下がその例です。適当にクレジットカードを例にしています。
実際に書く時の流れは?
1.構築するシステムに関連するモノ、コト、を抽出。
2.それぞれに応じたオブジェクトを作成。
3.関連のあるオブジェクト同士をリンクでつないで完成。
まとめ
・オブジェクト図にはリンク、オブジェクトがあり、オブジェクトは属性を持つことがある。
・システムのモノ、コトの構造、意味的なつながりを考えるのに有効。
・クラス図を描く前段階としてオブジェクト図は描かれる。