UML
まず結論
UML(Unified Modeling Language)はソフトウェアの設計を図で表現するための統一記法です。試験ではクラス図・シーケンス図・ユースケース図・アクティビティ図の4種類の読み方が問われます。
UML図の種類と用途
| 図の種類 | 表現するもの | いつ使う |
|---|---|---|
| クラス図 | クラスの構造と関係(継承・集約等) | 設計フェーズ(静的構造) |
| シーケンス図 | オブジェクト間のメッセージのやりとり(時系列) | 動的な処理フローの把握 |
| ユースケース図 | システムとアクターの相互作用 | 要件定義フェーズ |
| アクティビティ図 | 処理の流れ(フローチャートに近い) | 業務フロー・アルゴリズム |
| 状態遷移図 | オブジェクトの状態変化 | 状態機械の設計 |
クラス図の読み方
Animal
- name: String
- age: int
- age: int
+ speak(): void
+ eat(): void
+ eat(): void
▲(継承)
スーパークラス↑
サブクラス↓
サブクラス↓
Dog
+ speak(): void
Cat
+ speak(): void
DogとCatはAnimalを継承(is-a関係)。- は非公開、+ は公開
クラス間の関係
継承(Inheritance)
is-a関係。「Dog is a Animal」。矢印の先がスーパークラス(親)。
集約(Aggregation)
has-a関係(部品と全体)。ひし形。部品は独立して存在できる。
例:車は4つのタイヤを持つ。
コンポジション
強い集約。全体が削除されると部品も削除される。
例:家が削除されると部屋も削除される。
依存(Dependency)
一時的な使用関係。点線矢印。あるクラスのメソッドが別クラスを引数等で使う。
🎯 試験での出方
- 「この図は何を表すUML図か」→ 図の特徴から種類を特定する問題
- 「クラス図の▲(三角矢印)が表す関係」→ 継承(is-a関係)
- 「ユースケース図のアクター」→ システムを利用する外部の人・システム
- シーケンス図のオブジェクト間のメッセージの順序を読む問題
⚠️ よくある間違い
- 「集約とコンポジションは同じ」→ ✗ コンポジションは所有者が削除されると部品も削除される(より強い関係)
- 「クラス図は動的な振る舞いを表す」→ ✗ クラス図は静的構造。動的振る舞いはシーケンス図やアクティビティ図
✍️ 確認クイズ
Q1. オブジェクト間のメッセージのやりとりを時系列で表すUML図はどれか。
✅ 正解は②。シーケンス図はオブジェクト(またはクラス)間のメッセージ(メソッド呼び出し等)を時系列(上→下)で表現します。動的な処理フローの把握に使います。
Q2. クラス図において「Dog is a Animal」(犬は動物の一種)という関係を表す記法はどれか。
✅ 正解は②。クラス図の三角矢印(▲)は継承(Inheritance/汎化)を表します。矢印の先がスーパークラス(親)。is-a関係(〜は〜の一種)を表現します。
Q3. 要件定義フェーズでシステムとユーザーの相互作用を表すUML図はどれか。
✅ 正解は③。ユースケース図はシステムが提供する機能(ユースケース)と、それを利用するアクター(ユーザーや外部システム)の関係を表します。要件定義で「何ができるシステムか」を明確にするために使います。
Q4. アクティビティ図とフローチャートの関係として正しいものはどれか。
✅ 正解は②。アクティビティ図はUMLのフローチャートに相当し、業務フローやアルゴリズムの流れ(処理・条件分岐・並行処理)を表現します。「動的な処理の流れ」を表す点でシーケンス図と似ていますが、アクティビティ図は処理の流れ重視、シーケンス図はオブジェクト間のメッセージ重視です。
Q5. クラス図で「集約(Aggregation)」と「コンポジション」の違いとして正しいものはどれか。
✅ 正解は③。集約(白いひし形)は部品が全体から独立して存在できます(例:タイヤは車がなくても存在)。コンポジション(黒いひし形)は全体が削除されると部品も消える強い関係です(例:家が削除されると部屋も削除)。どちらもhas-a関係ですが所有の強さが違います。
Sponsor Link