package Ġspace . pr uss ak . calc . controller Ċ Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . Math Context Ċ import Ġjava . math . Round ingMode Ċ Ċ enum Ġclass ĠOperation ( val Ġsign Ġ: ĠString ) Ġ{ ĊĠĠĠ ĠADD ITION ("+ ") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcalculate ( a : ĠString , Ġb : ĠString ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnum ( a ). add ( num ( b )). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĠSUB TR ACTION ("- ") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcalculate ( a : ĠString , Ġb : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnum ( a ). subtract ( num ( b )). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĠDIV ISION (" Ã · ") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcalculate ( a : ĠString , Ġb : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnum ( a ). divide ( num ( b ), Ġ 1 0 0 , ĠRound ingMode . HALF _ UP ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĠMULTI PLICATION (" ÃĹ ") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcalculate ( a : ĠString , Ġb : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnum ( a ). multiply ( num ( b )). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĠNONE (" Ġ") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcalculate ( a : ĠString , Ġb : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}; ĊĊĠĠĠ Ġabstract Ġfun Ġcalculate ( a : ĠString , Ġb : ĠString ) Ġ: ĠString ĊĊĠĠĠ Ġprotected Ġfun Ġnum ( num : ĠString ) Ġ: ĠBigDecimal Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBigDecimal ( num , ĠMath Context . UN LIMIT ED ) ĊĠĠĠ Ġ} Ċ }