Assignment title: Information


1 Assignment 6: Design Patterns 1 Overview In this assignment you will apply design patterns to the design and implementation of an simplified on-line shopping system. Figure 1: UML Diagram: Simple Store 2 Background Figure 1 describes the framework of the back-end for on-line shopping site. The classes in this framework are as follows:2 2.1 Class Descriptions 2.1.1 Store: The backend representation of the site The Store class is the model for the store. The web server passes requests through this object. 2.1.2 Department Abstract superclass for a department. Attributes name The department's name items Items available for sale in the department customers The clients currently using the department observers The clients to be notified of sales or new items departmentID A unique ID for the department Operations enter(Customer c) Customer enters the store exit(Customer c) Customer exits the store customers() Return a list of customers in the department items() Return a list of items for sale in the department addObserver() Add a new observer to the department The classes BookDepartment and so on are possible sub-classes of the Department abstract class. 2.1.3 Item An item for sale in a department. Attribute name The site's name departments The various departments in the store customers The customers currently using the store Operations enter(Customer c) exit(Customerc)] getShoppingCart() getWishList() cusomters() departments() addDepartment() Customer enters the store Customer exits the store Returns an empty shopping cart Returns an empty wish list Returns a list of customers in the store Returns a list of the store's department Adds a new department to the store3 Attributes name ID departmentID price The item's name A unique ID for the item The ID of the department selling the item The price of the item 2.1.4 Customer A client of the on-line shopping site. Attributes name shoppingCart wishList department Thecustomer'sname The cart being used by the customer The wish list generated by the customer The department in which the customer is currently shopping 2.1.5 ItemList An abstract superclass for a list of items. This class has (at least) two specializations: ShoppingCart and WishList. Attributes items Items currently in the item list Operations addItem(Item i) removeItem(Item i) items() Add an item to the list Remove an item from the list Returns a list of all current items 2.2 Initial Requirements 1. Customer transactions start when the enter the store. 2. Customer's checkout when they exit the store. 3. Acustomershouldbeabletorequestnotificationwheneveranewitem is added for sale in a department or a specifi item'spriceisreduced. 4. Customers can be afforded the opportunity to buy combinations of all items within a department 5. Theuserinterfaceshouldbesimple(noimagesoranimations)andmay be either textual or graphical.4 6. A testing framework is required for the back-end that will be independentoftheuserinterface(opportunityforuseofaunittestframework). 3 Problem Your task is to build a prototype of this shopping site back-end system. This can be done using any of the three languages we have discussed in class. You are expected to refactor the design as you go through the implementation process. However,designchangesmustbedocumentedbyupdatingtheclass diagram provided with the assignment. Notethattherequirementsrequireyoutoimplementatleastsevendesign patterns: Iterator, Abstract Factory, Factory Method, Singleton, Observer, and Composite. There will be others that may be needed as well depending upon revisions required to the design and implementation decisions you make.