Given the following code I have to draw the corresponding class diagram:

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;

On draw.io I produced the following design:

enter image description here

Focus of my question is on - Relation between Invoice and row: Is it correct to draw the qualified association like so? On draw.io I found no option to depict this particular case. I built it by dragging Product class to be adjacent to Invoice.

  • Relation between Storage and Product. Is it correct? Or should I represent it also like a qualified association using class Integer as qualifier?

  • Do you see any error on relation arrows or cardinality?

1 Answer 1


I think you need to model Product as a distinct class to make it clear that a Storage may have Products that are not yet included in any Invoice.

You could model Row as an association class for the Invoice-Product association:

UML Example

Otherwise your diagram seems ok. The structure of Storage seems a bit funny though. If it should keep record of the amount of items, then it probably should have a Map<Product, Integer> instead of Map<Integer, Product>.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.