import java.util.ArrayList; import java.util.List; class Order { private final List items = new ArrayList<>(); private final String orderId; public Order(String orderId) { this.orderId = orderId; } // Order creates the LineItem public LineItem addLineItem(String productName, int quantity, double unitPrice) { LineItem item = new LineItem(productName, quantity, unitPrice, this); items.add(item); return item; } public List getItems() { return items; } public String getOrderId() { return orderId; } } class LineItem { private final String productName; private final int quantity; private final double unitPrice; // Back reference (not required by UML, but common in practice) private final Order owningOrder; LineItem(String productName, int quantity, double unitPrice, Order owningOrder) { this.productName = productName; this.quantity = quantity; this.unitPrice = unitPrice; this.owningOrder = owningOrder; } public double getTotal() { return quantity * unitPrice; } public Order getOwningOrder() { return owningOrder; } } public class Example02 { public static void main(String[] args) { Order order = new Order("CMD-001"); order.addLineItem("Product A", 3, 10.0); order.addLineItem("Product B", 1, 25.0); for (LineItem item : order.getItems()) { System.out.println( item.getOwningOrder().getOrderId() + ": " + item.getTotal() + "DZD" ); } } }