Determine the different ways the system will be used. This includes main functions the system needs to perform and who will use it.
Warehouse:
-> We can consider warehouse to be having racks arranged in columns and each column is vertically placed with fixed number of spots
Inventory:
-> Incoming shipments need to be queued for placing them in racks
-> Determine the next available/nearby spot
-> Track the stock levels
Shipping out or order management:
-> Find the item requested in nearby rack by type or id
-> Fetch the item and send the shipment. Make the spot empty
Based on the requirements and use cases, identify the main objects of the system and analyze how they interact and relate to each other...
Entities:
-> Warehouse
-> Rack
-> Slot
-> Shipment
-> Stock
-> ShipmentReceiver
-> ReStockAgent
-> ShipmentDispatcher
-> StockTracker
Relations:
-> Warehouse consists of list of Racks. Each Rack consists of list of elements which has 2-D matrix for slots
-> IncomingShipment has list of Stock elements. Each stock will have id type that specifies the type of stock
-> OutgoingShipment also has list of Stock elements.
-> ShipmentDispatcher sends out the shipments
-> ShipmentReceiver receives the shipments and restocks the Rack
-> StockTracker helps in maintaining the real time status of the stock in Warehouse
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 are going to set up this particular warehouse management based on different classes so basically one of the Deep dive item that I would like to discuss is about setting up the stock tracker so here we have set up the stock tracker based on like the real-time question like if anyone wants to know about the stock about a particular item they basically go through all the racks and check and update the count but instead of that we can maintain a real time status of a particular stock it's basically a kind of a map where we just keep updating the count of a particular stock whenever it comes through the receiver that that kind of give us one in terms of finding the stock in the stock tracker instead of going through all the list of in stocks and the shipment used strategy approach like for mking it flexible for ifferent type