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.