Determine the different ways the system will be used. This includes main functions the system needs to perform and who will use it.
user roles
warehouse manager
inventory manager.
shipping staff.
warehouse manger wants to new warehouse location.
Add warehouse.
Inventory Manager
want to add and remove product based on sku,name,price etc.
Shipping staff
want to update products quantity on coming shipment or order dispatch
remove products from warehouse.
Inventory reports and alter to replenish stock again for that product.
Based on the requirements and use cases, identify the main objects of the system and analyze how they interact and relate to each other...
For each class, define the attributes (data) it will hold and the methods (functions) that operate on the attributes. Ensure they align with the object's responsibilities and adhere to the principle of encapsulation. Write your code in the code editor below.
Explain design tradeoffs you considered. Check and explain whether your design adheres to SOLID principles. Explain how your design can handle changes in scale and whether it would be easy to extend with new functionalities. Identify areas for future improvement...
We will use observer pattern in inventory manager for stock out notification to staff . based this we can trigger replenish of the product based statergy pattern.