Skip to content

Instantly share code, notes, and snippets.

@Arakaki
Created September 18, 2013 05:50
Show Gist options
  • Save Arakaki/6605043 to your computer and use it in GitHub Desktop.
Save Arakaki/6605043 to your computer and use it in GitHub Desktop.
commnand.scala
package com.mycode
object App {
def main(args : Array[String]) {
val addSalt = new AddSaltCommand
val addWater = new AddWaterCommand
val makeSaltWater = new MakeSaltWaterCommand
addSalt.setBeaker(new Beaker(100,0))
addWater.setBeaker(new Beaker(0,10))
makeSaltWater.setBeaker(new Beaker(90,10))
addSalt.execute
addWater.execute
makeSaltWater.execute
}
}
class Beaker(var water:Double,var salt:Double){
private var melted :Boolean = true
this.mix
def addSalt(salt:Double) {
this.salt += salt
}
def addWater(water:Double) {
this.water += water
}
def mix {
this.melted = if((this.salt / (this.salt + this.water)) * 100 < 26.4){
true
}else{
false
}
}
def isMelted ={
this.melted
}
def note {
println(s"水:${water}g")
println(s"食塩: ${salt}g")
println(s"濃度: ${(salt / (water + salt)) * 100}%")
}
}
trait Command {
protected var beaker:Beaker
def setBeaker(beaker:Beaker) {
this.beaker = beaker
}
def execute{}
}
class AddSaltCommand extends Command {
protected var beaker: Beaker = _
override def execute{
while(!beaker.isMelted){
beaker.addSalt(1)
beaker.mix
}
println("食塩を1gずつ加える実験")
beaker.note
}
}
class AddWaterCommand extends Command {
protected var beaker: Beaker = _
override def execute{
while(!beaker.isMelted){
beaker.addWater(10)
beaker.mix
}
println("水を10gずつ加える実験")
beaker.note
}
}
class MakeSaltWaterCommand extends Command {
protected var beaker: Beaker = _
override def execute{
beaker.mix
println("食塩水を作る実験")
beaker.note
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment