ソフトウェア設計およびモデリングの分野において、統一モデリング言語(UML)は、システムの構造と動作を可視化し文書化するための強力なツールです。UMLにおける重要な概念の一つが多重性であり、関連の一方の端に参加できるオブジェクトの数に関する制約を定義します。この記事では、多重性の概念、その重要性、およびUML図におけるその適用方法について詳しく説明します。
多重性とは何か?
UMLにおける多重性は、関連の一方の端に参加できるオブジェクトの数を指定する制約です。たとえば「1人の人物が所有できる車の数はいくつですか?」や「1台の車を運転できる人は何人いますか?」といった質問に答えます。多重性を定義することで、各クラスのオブジェクトがどのように関連するかのルールを設定でき、これらの関係を明確かつ簡潔に表現できます。
多重性の表現方法
多重性は、関連に許容されるオブジェクトの最小数と最大数を定義する範囲として通常表現されます。多重性を表す形式は次の通りです:
- 正確な数:オブジェクトの正確な数を示す単一の数値。
- 範囲:二つの点(..)で区切られた数値のペアで、最小数と最大数を示す。
- アスタリスク(*):オブジェクトの数が無制限であることを示す。
たとえば:
1:正確に1つのオブジェクト。0..1:0個または1個のオブジェクト。1..*:少なくとも1つのオブジェクトで、上限なし。*:0を含む任意の数のオブジェクト。

関連における多重性の適用
クラス間の関連をモデル化する際、多重性は関連の各端に割り当てられます。たとえば、PersonクラスとCarクラスとの関連を考えてみましょう:
- 質問1: 1人の人物が所有できる車の数はいくつですか?
- 質問2: ある車を運転できる人の数はいくつですか?
これらの質問への回答は、関連におけるそれぞれのクラスの隣に配置されます。人物が0台以上、複数の車を所有できる場合、車のクラスの近くに多重度が記載されます。車クラスには0..*逆に、車を1人以上、複数の人が運転できる場合、人物のクラスの近くに多重度が記載されます。人物クラスには1..*.
例:出荷と製品
例を示すために、次の状況を考えてみましょう。出荷には最低1つ以上の製品が含まれている必要がありますが、必要な数だけ製品を含めることができます。関連の製品側の多重度は1..*であり、出荷には最低1つの製品が必要ですが、複数の製品を含むこともできます。
表記法と記号
UML図では、多重度は特定の表記法を使って示されます。
- アスタリスク (*): 無制限のオブジェクト数を表します。
- 範囲 (
min..max):オブジェクトの最小数と最大数を指定します。 - 正確な数:オブジェクトの正確な数を示します。
これらの表記は、クラス間の関係を明確に定義する制約やルールを示すのに役立ちます。
例1:PersonとCar
この例では、Personは0台以上多くのCarsを所有でき、Carは1人以上多くのPeople.

例2:ShipmentとProduct
この例では、Shipmentは少なくとも1つのProductを含まなければならないが、必要に応じて多くのProductを含むことができる。

例3:LibraryとBook
この例では、Libraryは多くのBooksを所有でき、Bookは1つのLibrary.

例4:教師と生徒
この例では、教師は多くの生徒を教えられ、また生徒は1人の教師.

例5:注文と商品
この例では、注文は1つ以上の商品を有し、また商品は0つ以上の注文.

例6:会社と社員
この例では、会社は多くの社員を有し、また社員は1つの会社.

これらの例は、多重性が関連に参加するオブジェクトの数を定義するためにどのように使用されるかを示しており、関係を明確かつ簡潔に表現する方法を提供しています。UMLのクラス 図。
結論
多重性は、関連に参加するオブジェクトの数を構造的に定義するためのUMLにおける基本的な概念です。多重性を明示することで、設計者はクラス間の関係が明確で理解されやすくなることを保証でき、より堅牢で保守しやすいシステム設計につながります。単純な関連をモデル化する場合でも、複雑な関係を扱う場合でも、多重性を理解し適用することは、効果的なUMLモデリングにとって不可欠です。
リソース
- Visual Paradigmでエンティティ関係図を描く
- Visual Paradigm. (n.d.).Visual Paradigmでエンティティ関係図を描く 4.
- エンティティ関係図 – 多重性
- Stack Overflow. (n.d.).エンティティ関係図 – 多重性 5.
- エンティティ関係図
- UMLの形状に多重性を指定する
- Microsoft Support. (n.d.).UMLの形状に多重性を指定する 7.
- エンティティ関係図(ERD)とは何ですか?
- Visual Paradigm. (n.d.).エンティティ関係図(ERD)とは何ですか? 8.
- Visual ParadigmのER図でのテーブルの追加
- Stack Overflow. (n.d.). Visual ParadigmのER図でのテーブルの追加 9.
- Visual Paradigmでクラス図に多重性を追加するにはどうすればよいですか?
- TheNewsIndependent. (2020年12月29日). Visual Paradigmでクラス図に多重性を追加するにはどうすればよいですか? 10.
- エンティティ関係(ER)図入門ガイド
- Visual Paradigm Blog. (2023年9月21日). エンティティ関係(ER)図入門ガイド 11.
- 多重性と基数