web-dev-qa-db-ja.com

構成-法定クラス図

これが有効なクラス図であるかどうかを尋ねたかったのですが: enter image description here

特定のホイールが同時に2台の車両に属するように強制されるため(1つの多重度のため)、私はそうは思わない傾向があります。車両側の多重度が0..1であれば、問題ありません。この論理は正しいですか?
さらに、このロジックが正しければ、2種類の車があり、それぞれに一定量の車輪がある状況をどのようにモデル化できますか? (継承に頼ることなく)。
ありがとう

編集:私は以下が正しいと思います:
enter image description here
ホイールを2台の車両に同時に所属させないこと。 {nand}は役立つかもしれませんが、合成関係によって暗黙的に暗示されるため、おそらく必要ありません。

1
erap129

はい、あなたが正しい。この図は論理的に正しくありません。

ただし、多重度を確認するだけでは不十分な場合があります。 wheelがいずれかの車の一部である必要がある場合は、{xor}として記述され、可能性がある場合は{nand}として記述される、2つの関係の終わりを結ぶ破線の形式で制約を追加する必要があります。また、完全に切り離されます。

0
Ister

これは静的な構造図(クラス図)です。つまり、実行時の状態ではなく、ソースコードの平和間の静的な関係を示しています。 SportsCarTruckの両方がWheelクラスを参照(依存)しているという事実意味しません両方が対応するランタイムオブジェクト図に同じインスタンスを含んでいること。実際、関係は構成(塗りつぶされたひし形)であるため、そのセマンティクスにより、それらはできません同じインスタンスを含みます(少なくとも観察可能ではありません-ホイールが不変である場合は、それらを内部で共有します。これはクライアントコードには表示されません。重要な部分は、クライアントコードの観点からは論理的に共有されていないように見えることです)。構成の関係は、各車両が含まれているホイールインスタンスを「所有」し、その寿命を管理していることも示しています(それらは存在し、一緒に破壊されるか、クライアントコードに対してそのように見えます)。

特定のホイールが同時に2台の車両に属するように強制されるため、私はそうは思わない傾向があります(1つの多重度のため)

したがって、上記に照らして、それはそうではありません-逆に。また、私は間違っているかもしれませんが、あなたが多重度を誤解しているように感じます-ここで、1SportsCarTruckの多様性です。つまり、任意のWheelsingleSportsCarまたはTruckに属することができ、その逆ではありません。したがって、右側の1の多重度防止共有されるホイール(同じ車両クラスの異なるインスタンス間、およびその構成がインスタンス間の共有を防止するという事実異なる車両クラス)。

2種類の車があり、それぞれに一定量の車輪がある状況をどのようにモデル化できますか?

ホイールの多重度左側Wheelの隣)を固定数に設定するだけです。現在、「ASportsCarは0個以上のホイールを持つことができます。」および「ATruckは0個以上のホイールを持つことができます」と表示されます。変化する 0..*から4(または2自転車用)。

2