|
EStore |
|
1 // joi/1/estore/EStore.java
2 //
3 //
4 // Copyright 2003 Bill Campbell and Ethan Bolker
5
6 /**
7 * An EStore object simulates the behavior of a simple on line
8 * shopping web site.
9 *
10 * It contains a Terminal object to model the customer's browser
11 * and several Item objects a customer can add to her ShoppingCart.
12 *
13 * @version 1
14 */
15
16 public class EStore
17 {
18 private String storeName = "Virtual Minimal Minimall";
19
20 // Use a Terminal object to communicate with customers.
21 private Terminal browser = new Terminal();
22
23 // The store stocks two kinds of Items.
24 private Item widget = new Item(10); // widgets cost $10
25 private Item gadget = new Item(13); // gadgets cost $13
26
27 private String selectionList = "(gadget, widget, checkout)";
28
29 /**
30 * Visit this EStore.
31 *
32 * Loop allowing visitor to select items to add to her
33 * ShoppingCart.
34 */
35
36 public void visit()
37 {
38 // Create a new, empty ShoppingCart.
39 ShoppingCart basket = new ShoppingCart();
40
41 // Print a friendly welcome message.
42 browser.println( "Welcome to " + storeName );
43
44 // Change to false when customer is ready to leave:
45 boolean stillShopping = true;
46
47 while ( stillShopping ) {
48 Item nextPurchase = selectItem();
49 if ( nextPurchase == null ) {
50 stillShopping = false;
51 }
52 else {
53 basket.add( nextPurchase );
54 }
55 }
56 int numberPurchased = basket.getCount();
57 int totalCost = basket.getCost();
58 browser.println("We are shipping " + numberPurchased + " Items");
59 browser.println("and charging your account $" + totalCost);
60 browser.println("Thank you for shopping at " + storeName);
61 }
62
63 // Discover what the customer wants to do next:
64 // send browser a message to get customer input
65 // examine response to make a choice
66 // if response makes no sense give customer another chance
67
68 private Item selectItem()
69 {
70 String itemName =
71 browser.readWord("Item " + selectionList + ":");
72
73 if ( itemName.equals("widget")) {
74 return widget;
75 }
76 else if ( itemName.equals("gadget")) {
77 return gadget;
78 }
79 else if ( itemName.equals("checkout" )) {
80 return null;
81 }
82 else {
83 browser.println( "No item named " +
84 itemName + "; try again" );
85 return selectItem(); // try again
86 }
87 }
88
89 /**
90 * The EStore simulation program begins here when the user
91 * issues the command <code>java EStore</code>.
92 */
93
94 public static void main( String[] args )
95 {
96 // Print this to simulate delay while browser finds store
97 System.out.println("connecting ...");
98
99 // Create the EStore object.
100 EStore webSite = new EStore();
101
102 // Visit it.
103 webSite.visit();
104 }
105 } // end of class EStore
106
|
EStore |
|