Software Design Patterns
ShoppersLand Inc. is the leading retail chain in Canada. We offer a large range of products including food, clothing, electronics, and pharmaceutical drugs. As a company we strive to provide the best shopping experience for our customers. We are continually trying to find innovative ways to help shoppers have a better experience in our stores.
We would like to develop an online system, i.e., SmartShoppers, to allow customers to find products in our stores with greater precision than the current system. When open the system, the user will need to specify their postal code and/or their city and province. They will then be presented with a list of stores within their area to choose from as the location they will be shopping at. There should also be a feature which lets the user save this store as their location for future use. The user should also be able to change the store location any time they wish. The user should then be able to create a shopping list by searching for products and by viewing a list of sale items at the store they specified. An algorithm should then provide the user with the list in the best order in which to find the items, starting at the front of the store. Users should also be able to click on items to see a product description, price and where in the store it can be found. The user should also be able to view a list of suggested items. This list would consist of products that others have searched for when they have also searched for items on the users shopping list.
a): please apply at least one design pattern we have introduced, and explain which requirements you think the patterns can help.
b): design a system that can meet the requirements described above via class diagrams, and describe how you design can meet the requirements. Please show the details of classes (including attributes, methods, and relations among classes) in your class diagrams. YOU MUST USE https://app.diagrams.net/ to draw your diagram and submit the “.png” of your class diagram, penalty will be imposed for violation.