UMBC  |  CSEE  |  Tarr  |  CS446

CMSC446 Introduction To Design Patterns

Spring 2006

Project 1

Auction System Project

Due Date: March 13, 2006


Project Description

In this project, you will be implementing a simple auction system. For now the "auction server" and the "auction client" will be in the same virtual machine (process). In a later project, these will be separated into a true server and client in separate virtual machines.

The server will be used to maintain a list of items available for auction purchase. Clients will be allowed to make bids on available items or put new items up for auction. Clients can also be notified when the current bid on a particular item changes.

The server is an object which implements the following interface:

      public interface IAuctionServer {
         public void placeItemForBid(String ownerName, String itemName, 
           String itemDesc, double startBid, int auctionTime);
         public void bidOnItem(String bidderName, String itemName, 
           double bid);
         public Item[] getItems();
         public Item getItem(String itemName);
         public void registerListener(IAuctionListener al, String itemName);
      }

These methods do the following:

Any client object which desires to be notified of changes in the bid status of a specific item must implement the following interface:

      public interface IAuctionListener {
         public void update(Item item);
      }
The update() method of this interface does the following:


Project Requirements

Use the above interfaces to write a working version of the auction application.

Your project must implement the following design patterns:

Feel free to use any other patterns you feel appropriate.

You will need some user interface code to allow putting items up for bid, bidding on items, and registration of listeners. Implement this user interface any way you like, either textual or graphical.

To make testing simpler, you may have your server object automatically start with some items up for auction. Test your application with at least three auction items and two listener objects.

Your project code must also be well documented and use a reasonable indentation style. In particular, places where design patterns are implemented should be noted in the code.

Finally, a short report, no more than four pages in length, should be submitted describing the design patterns that appear in your project.


Project Grading

Your project will be graded according to the following criteria:

As in all your work, NO COPYING OR PLAGIARISM. If such is detected, no credit for the project will be given and appropriate actions for academic dishonesty will be taken.


Project Submission

You must submit the following: Submit all of the above using the submit program. To submit, you type
        submit cs446 project1 <filenamelist>
where filenamelist is a list of one or more files. You can submit a file as often as you like; the latest file submitted overwrites any previous submissions. To list the names of the files you have submitted, type
        submitls cs446 project1
To remove a previously submitted file, type
        submitrm cs446 project1 <filename>


Project Due Date

This project is due March 13, 2006. You have a one week, automatic grace period.

No project will be accepted after March 27, 2006. NO EXCEPTIONS! NO EXCUSES!


Bob Tarr
University of Maryland, Baltimore County
tarr@umbc.edu
UMBC  |  CSEE  |  Tarr  |  CS446