home *** CD-ROM | disk | FTP | other *** search
/ Really Useful CD 1 / ReallyUsefulCD1.iso / extras / languages / smalltalk / _smalltalk / tests / sim1 < prev    next >
Encoding:
Text File  |  1987-12-30  |  1.4 KB  |  64 lines

  1. "
  2.      Simple Minded simulation from Chapter 6 of book
  3. "
  4. Class Main
  5. [
  6.      main      | i |
  7.           i <- IceCreamStore new.
  8.           [i time < 25] whileTrue: [ i proceed ].
  9.           i reportProfits
  10. ]
  11.  
  12. Class Simulation
  13. | currentTime nextEvent nextEventTime |
  14. [
  15.      new
  16.           currentTime <- 0
  17. |
  18.  
  19.      time
  20.           ^ currentTime
  21. |
  22.      addEvent: event at: eventTime
  23.           nextEvent <- event.
  24.           nextEventTime <- eventTime
  25. |
  26.      proceed
  27.           currentTime <- nextEventTime.
  28.           self processEvent: nextEvent
  29. ]
  30.  
  31. Class IceCreamStore :Simulation
  32. | profit rand |
  33. [
  34.      new
  35.           profit <- 0.
  36.           rand <- Random new.
  37.           "rand randomize.  taken out so results remain the same"
  38.           self scheduleArrival
  39. |
  40.      scheduleArrival
  41.           self addEvent: Customer new
  42.                at: (self time + (rand randInteger: 5))
  43. |
  44.      processEvent: event
  45.           ('customer received at ', self time printString) print.
  46.           profit <- profit + ( event numberOfScoops * 0.17 ).
  47.           self scheduleArrival
  48. |
  49.      reportProfits
  50.           ('profits are ', profit printString) print
  51. ]
  52.  
  53. Class Customer
  54. | rand |
  55. [
  56.      new
  57.           (rand <- Random new) "--randomize (taken out)"
  58. |
  59.      numberOfScoops      | number |
  60.           number <- rand randInteger: 3.
  61.           ('customer has ', number printString , ' scoops ') print.
  62.           ^ number
  63. ]
  64.