web-dev-qa-db-ja.com

完全修飾された関連付けでUMLクラス図を正しく描画する方法は?

次のコードを考えると、対応するクラス図を描画する必要があります。

public class Shop
{
    List<Client> clients;
    Storage store;
    User chief;
    Set<Invoice> invoices;
}

public class Invoice
{
    Map<Product, Row> rows;
    Client client;
}

public class Client{}
public class Product{}

public class Storage
{
    Map<Integer, Product> products;
}

public class Row 
{
    Product p;
    double qty;
}

Draw.ioで次のデザインを作成しました。

enter image description here

私の質問の焦点は次のとおりです-請求書と行の関係:資格のある協会をそのように描くことは正しいですか? draw.ioで、この特定のケースを表すオプションは見つかりませんでした。 ProductクラスをドラッグしてInvoiceの隣に作成しました。

  • ストレージと製品の関係。それが正しいか?それとも、クラスIntegerを修飾子として使用して、修飾された関連付けのように表す必要がありますか?

  • 関係矢印またはカーディナリティにエラーはありますか?

4
koalaok

ストレージがインボイスにまだ含まれていない製品を持つ可能性があることを明確にするために、製品を別個のクラスとしてモデル化する必要があると思います。

RowをInvoice-Product関連付けの関連付けクラスとしてモデル化できます。

UML Example

それ以外の場合、図は問題ないようです。ただし、ストレージの構造は少しおかしいようです。アイテムの量の記録を保持する必要がある場合は、おそらくMap<Product, Integer> の代わりに Map<Integer, Product>

1
COME FROM