UMLにおけるAggregationとGeneralizationの大きな違いは、Aggregationが「has a」の関係で結ばれた2つのオブジェクトの関連付けであるのに対し、Generalizationは複数のクラスから一般クラスを形成する処理であることです。
複雑なソフトウェアを一度に開発することは不可能である。
そのため、ソフトウェアが何を実行すべきかを理解した上で実装することが必要である。
UML(Unified Modelling Language)は、ソフトウェアのモデル化を支援する視覚的な図解言語です。
JavaやC++などのプログラミング言語とは異なり、より簡単です。
絵で表現するため、技術者でない人でもUMLを学び、理解することができます。
クラス図とオブジェクト図は、UMLの2つのタイプの図です。
さらに、これらはシステムの静的なビューを記述します。
これらの図には、集計と汎化が関連しています。
UMLにおける集約とは?
関連は、2つのオブジェクト間の関係を表します。
集約はアソシエーションの一種です。
言い換えれば、アソシエーションの特殊なケースです。
あるオブジェクトが他のオブジェクトを「has-a」するとき、それを集約と見なすことができます。
したがって、集合はオブジェクト間の “has a “の関係を記述する。
従業員とAddressは、”has a “の関係で結ばれている。
Addressクラスのインスタンスは、Employeeのインスタンスがなくても存在できる。
これは集合体です。
UMLでは、菱形の記号が集約を表している。
方向は、どのオブジェクトが他のオブジェクトを含むかを示す。
UMLにおける汎化とは
汎化とは、既存のクラスのプロパティやメソッドをクラスが使用できるようにすることで、継承と関連しています。
既存のクラスはスーパークラスであり、新しいクラスはサブクラスです。
汎化は、複数のクラスを組み合わせて一般的なクラスとする。
さらに、スーパークラスは最も一般的なプロパティとメソッドを持っています。
サブクラスは、それらのプロパティとメソッドを共有することができます。
サブクラスは、特殊なプロパティとメソッドを持つことができます。
サブクラスはスーパークラスの一種であるため、一般化は「is a」の関係を表します。
図2:汎化
Employeeはスーパークラスです。
正社員と臨時社員はサブクラスですが、Employeeは正社員と臨時社員の汎化された形です。
一方、Permanent Employee と Temporary Employee は Employee の特殊化された形式です。
Employee は、プロパティ id、name、salary、およびメソッド display を備えています。
Permanent Employee および Temporary Employee のサブクラスは、これらのプロパティおよびメソッドを使用することもできます。
さらに、サブクラスは独自のプロパティとメソッドを持っています。
UML では、矢印は汎化を表します。
UMLにおける集計と汎化の違い
定義
集約は、2つのオブジェクト間の「has a」関係を記述する関連付けであり、汎化は、類似のクラスのオブジェクトを1つの一般的なクラスに結合するメカニズムです。
このように、UMLにおける集約と汎化の主な違いを説明する。
関係
集計は「ある」関係、一般化は「ある」関係を表す。
UML表現
菱形の記号は集約を表し、矢印の記号は汎化を表します。
したがって、UMLにおける集約と汎化の違いをさらに説明する。
結論
簡単に説明すると、「Aggregation」と「Generalization」は、UMLの図で表現できる2つの概念です。
UMLにおける集約と汎化の主な違いは、集約が「has a」の関係で結ばれた2つのオブジェクトの関連付けであるのに対し、汎化は複数のクラスから一般的なクラスを形成するプロセスである点です。