Wednesday, January 15, 2020

Activity diagrams may be used for different purposes during system development process. List such purposes.



A soft drink vending machine accepts coins for a variety of products. When the amount of money deposited into the machine is equal to or greater than the price of any of its available products, the respective product selection buttons will be enabled for the user to make the selection .After the user has made a valid selection, the machine wil dispense the soft drink, together with the change (if applicable). Draw the Activity Diagram for this vending machine. State clearly about assumptions and limitations you have considered during your design. 







Algorithm Name: Vending Machine

Assumptions:
  • only dispense change in coins (5, 10, 25 cents)
  • different items could have different costs
  • users can press a button for requested item type, or to return all input money
  • there is a message window, can call "print(string)" and it will display.in LED
  • there is a "dispense(item type)" function
  • assume that machine will reject all coins except US nickel, dime, or quarter
  • it is our responsibility to update Bal and coins[C], but the machine will keep track of available[X] for us

Representation:
  • there is a counter called "Bal" that keeps track of total of coins input so far
  • cans could have different costs: cost[X]
  • available[X] is a boolean variable that indicates whether there is ³1 of X left
  • the internal reservoir of  coins is represented by coins[C] where C is 5, 10, or 25 and returns an ordinal number for how many coins of that type there are inside

Strengths
  • if machine is completely out of requested choice (or all cans), user can ask for their money back
  • algorithm is guaranteed never to give back more than the balance
  • if the user just asks for their money, back we can guarantee to always make change (at  least by using the coins they input, but not necessarily)

Limitations:
  • it is possible that this algorithm might by unable to make change, for example, in the case where a user puts in $1.00 (4 quarters), buys an item that costs $0.90, and we have no dimes or nickels to start with



Pseudocode:

if user inputs a legal coin C (e.g. 5, 10, or 25):
  coins[C] = coins[C]+1
  Bal = Bal+C
if user presses the 'return change' button:
  make_change(Bal)
  Bal = 0
if user presses button for can of type X:
  if available[X]=False:
    print("unavailable, make another choice")
  else if Bal<cost(X):
    print("insufficient funds, put in more money")
  else:
    dispense(X) // machine will update available[X]
    make_change( Bal-cost(X))
    Bal = 0

subroutine make_change(Bal):
 while Bal>0:
  if Bal>25 and coins[25]>0:
    dispense quarter
    coins[25] = coins[25]-1
    Bal = Bal-25
  else if Bal>10 and coins[10]>0:
    dispense dime
    coins[10] = coins[10]-1
    Bal = Bal-10
  else if Bal>5 and coins[5]>0:
    dispense nickel
    coins[5] = coins[5]-1
    Bal = Bal-5


No comments:

Post a Comment