UML は、非常に概念的な設計ツールとして、またはより具体的なプログラミング設計ツールとして、いくつかの方法で使用できます。
そのため、複合集計を表す場合、いくつかの方法で表すことができます。
- クラスのすべてのメンバーを表示したい場合があります。メンバーが多すぎると悪い。
+ --------------------------+
| | エレベーター クラス |
+ --------------------------+
| | [+] ブール値: isActive |
| | [+] ブール値: isInOrder |
| | [+] フロア: 場所 |
| | [+] MotorClass: モーター |
| | [+] DoorClass: ドア |
+ --------------------------+
| | [+] startOperation() |
| | [+] stopOperation() |
| | [+] gooUp() |
| | [+] gooDown() |
| | [+] openDoor() |
| | [+] closeDoor() |
+ --------------------------+
- クラスのすべてのメンバーを非表示にしたい場合があります。メンバーではなく、クラスに集中したい場合に適しています。注: これは、あなたが今探しているケースかもしれません。
+--------------------------+1 1+------------------- -------+
| | ElevatorClass |------<*>| RescueButton クラス |
+---------------------+ +--------------------- ------+
- クラスの一部のメンバーを表示し、別のメンバーを非表示にしたい場合があります。
+--------------------------+ 1 1 +------------------- -------+
| | ElevatorClass |------<*>| モーター ボタン クラス |
+---------------------+ +--------------------- ------+
| | [+] ブール値: isActive |
| | [+] ブール値: isInOrder |
| | [+] フロア: 場所 |
| | [+] MotorClass: モーター |
| | [+] DoorClass: ドア |
+ --------------------------+
物事を少し複雑にするために、モーターは他の要素と同様に、必ずしもエレベータ クラスの参照メンバーによって参照される必要はありません。
例 (c スタイル):
class ElevatorClass {
public:
List<ComponentClass*> Components;
...
void AddComponent(ComponentClass* ThisComponent);
} // class ElevatorClass
...
MyElevator.AddComponent(MyMotor);
前のコード例では、メンバーは直接参照されていません。
個人的には、これは非常に明確であることに同意します。
class ElevatorClass {
public:
MotorClass* Motor;
MotorClass* Motor;
} // class ElevatorClass
乾杯。