Guest User

Untitled

a guest
Mar 24th, 2012
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.29 KB | None | 0 0
  1. package fr.univLille1.calp.distributeur
  2.  
  3. import fr.univLille1.calp.basicFSM.Mealy
  4. import fr.univLille1.calp.basicFSM.FiniteStateMachine
  5.  
  6. abstract class InputDistrib
  7. case class Coin(valeur: Double) extends InputDistrib
  8. case class Select(valeur: String) extends InputDistrib
  9. case object Cancel extends InputDistrib
  10.  
  11. class VendingMachine(map: Map[String, Double]) extends FiniteStateMachine with Mealy {
  12.  
  13.     var contenue: Map[String, Double] = map
  14.  
  15.     case class State(sum: Double)
  16.    
  17.     type Input = InputDistrib
  18.     type Output = String
  19.  
  20.     val init = State(0.0)
  21.  
  22.     override def outputT(s: State, l: Input): Output = (s, l) match {
  23.         case(State(somme), Coin(v))         =>  "NoOutput"
  24.         case(State(somme), Select(v))       =>  {
  25.             if (somme >= contenue(v)) {
  26.                 var tmp = somme-contenue(v)
  27.                 "Deliver("+v+", "+tmp+")"
  28.             } else {
  29.                 "NoOutput"
  30.             }
  31.         }
  32.         case(State(somme), Cancel)          =>  if (somme >= 0) "Change("+somme+")" else "NoOutput"
  33.     }
  34.  
  35.     def transitionFunction(s: State, l: Input): State = (s, l) match {
  36.         case(State(somme), Coin(v))         => State(somme+v)
  37.         case(State(somme), Select(v))       => {
  38.             if (somme >= (contenue(v))) {
  39.                 State(somme - (contenue(v)))
  40.             } else {
  41.                 State(somme)
  42.             }
  43.         }
  44.         case(State(somme), Cancel)          => State(somme)
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment