オブジェクト指向設計の標準記法 UML。代表的なクラス図・シーケンス図・ユースケース図を理解しましょう。
UMLって、よく見るあの四角と矢印の図のこと?
そうよ。
UML (Unified Modeling Language) はソフトウェア設計の標準記法で、全部で13種類の図があるけれど、特に重要な4つを覚えておきましょうね。
クラス図 (クラスとその関係)、シーケンス図 (オブジェクト間のメッセージ流れ)、ユースケース図 (システムと利用者の関わり)、アクティビティ図 (処理フロー) の4つは必修ですね。
クラス図の関係って、いろんな種類があるのぉ?
主に4種類あります。
継承 (is-a)・集約 (has-a 弱)・コンポジション (has-a 強・全体が消えると部分も消える)・関連 (use-a)。
それぞれ矢印の形が違うんですよ。
他に状態遷移図 (オブジェクトの状態と遷移) やオブジェクト図 (特定時点のインスタンス) もよく使われるのよ。
オンライン注文をどの図で表すか
| 知りたいこと | 選ぶ図 | 注文システムでの表現例 |
|---|---|---|
| 誰が何の機能を使うか | ユースケース図 | 顧客が「商品を注文する」、管理者が「出荷を登録する」 |
| データやクラスの静的な関係 | クラス図 | 顧客、注文、商品と属性・操作・多重度 |
| 処理中のメッセージ順序 | シーケンス図 | 画面→注文サービス→在庫サービス→決済サービスの呼出し |
| 分岐・並行を含む業務手順 | アクティビティ図 | 在庫確認後、在庫あり/なしで処理を分ける |
| 一つの対象の状態変化 | 状態遷移図 | 注文済→入金済→出荷済→完了、または取消 |
設問の名詞だけでなく、問われている観点を探します。「利用者と機能」はユースケース、「時系列に送るメッセージ」はシーケンス、「処理の流れと分岐」はアクティビティです。シーケンス図にもオブジェクトが登場しますが、静的な属性や継承関係を表す図ではありません。
クラス関係と図の読み違いを防ぐ
クラス図では、継承・汎化は「会員は利用者の一種」のようなis-a関係で、親クラス側へ白抜き三角を向けます。集約は全体と部分の弱いhas-a関係、コンポジションは全体の消滅と部分の寿命が強く結び付く関係です。単に他のクラスを参照するだけなら関連として表します。
多重度も頻出です。顧客1人が0件以上の注文を持ち、各注文が必ず1人の顧客に属するなら、注文側は0..*、顧客側は1です。「1対多」という言葉だけで両端の値を逆にしないよう、片方のインスタンスから見て相手が何個あり得るかを文章に戻して確認します。
シーケンス図では時間は通常上から下へ進み、横方向には参加するオブジェクトを並べます。ユースケース図は処理順序や内部設計を描く図ではなく、システム境界、アクター、提供機能の関係を整理する図です。「時間」「アクター」「静的構造」「状態」という手掛かりを先に分類すると、似た選択肢を切り分けられます。
確認クイズ
UML で利用者 (アクター) とシステムの相互作用を表現する図はどれか。
- クラス図
- ユースケース図
- シーケンス図
- アクティビティ図
こたえを見る
正解: 2. ユースケース図
ユースケース図は、システムと利用者 (アクター) の相互作用 (どんな機能を誰が使うか) を表現します。要件定義段階でよく使われます。