static void Main(string[] args)
        {
            ICalculatable[] calculatables = new ICalculatable[]
            {
                new Customer(),
                new Student(),
                new Service(),
                new Service(),
                new Customer(),
                new Employee(),
                new Product()
            };

            var sum = 0.0;

            for (int i = 0; i < calculatables.Length; i++)
            {
                Console.WriteLine(calculatables[i].GetAmount());
                sum += calculatables[i].GetAmount();
            }

            Console.WriteLine("------------------");
            Console.WriteLine(sum);

            Console.ReadKey();
        }
示例#2
0
        /// <summary>
        /// Creates a new instance of <see cref="CalculatableActivity"/>.
        /// </summary>
        /// <param name="calculatable">The calculation to perform.</param>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="calculatable"/> is <c>null</c>.</exception>
        protected CalculatableActivity(ICalculatable calculatable)
        {
            if (calculatable == null)
            {
                throw new ArgumentNullException(nameof(calculatable));
            }

            this.calculatable = calculatable;
        }
示例#3
0
    static void Main()
    {
        PrimitiveCalculator calculator = new PrimitiveCalculator();

        string input = Console.ReadLine();

        while (input != "End")
        {
            string[] commandTokens = input.Split(' ', StringSplitOptions.RemoveEmptyEntries);

            if (commandTokens[0] == "mode")
            {
                ICalculatable strategy = null;
                switch (commandTokens[1])
                {
                case "+":
                    strategy = new AdditionStrategy();
                    break;

                case "-":
                    strategy = new SubtractionStrategy();
                    break;

                case "*":
                    strategy = new MultiplyStrategy();
                    break;

                case "/":
                    strategy = new DivisionStrategy();
                    break;
                }

                calculator.ChangeStrategy(strategy);
            }
            else
            {
                int leftOperand  = int.Parse(commandTokens[0]);
                int rightOperand = int.Parse(commandTokens[1]);

                int result = calculator.PerformCalculation(leftOperand, rightOperand);

                Console.WriteLine(result);
            }

            input = Console.ReadLine();
        }
    }
示例#4
0
文件: Parser.cs 项目: mrRedSun/intON
        private void ReducePrint()
        {
            Token currentToken;

            do
            {
                currentToken = tokenStream.GetToken();
                parsingStack.Push(currentToken);
            } while (currentToken.Type != Token_type.SEMICOLON);
            parsingStack.Pop(); // Getting rid of semicolon;

            ICalculatable expr = ReduceExpression();

            var print = new PrintExpression(expr);

            parsingStack.Push(print);
        }
示例#5
0
文件: Parser.cs 项目: mrRedSun/intON
        private void ReduceVariable()
        {
            Token currentToken;

            do
            {
                currentToken = tokenStream.GetToken();
                parsingStack.Push(currentToken);
            } while (currentToken.Type != Token_type.SEMICOLON);
            parsingStack.Pop();     // Getting rid of semicolon;

            ICalculatable expr = ReduceExpression();
            string        id   = ((Token)parsingStack.Pop()).Id;

            var declaration = new VariableDeclaration(id, expr);

            parsingStack.Push(declaration);
        }
 public void ChangeStrategy(ICalculatable strategy)
 {
     this.strategy = strategy;
 }
示例#7
0
 public CalculationEngine(ICalculatable script)
 {
     _script           = script;
     _scriptParameters = _script.Parameters;
 }
 public PrimitiveCalculator()
 {
     this.strategy = new AdditionStrategy();
 }
示例#9
0
 public Vector(ICalculatable <T> iCalc, int n)
 {
     this._calculator = iCalc;
     _vector          = new List <T>(n);
 }
示例#10
0
 public VariableReassignment(string identifier, ICalculatable expression)
 {
     id   = identifier;
     expr = expression;
     Console.WriteLine("VarReassign usnoethu sanotehu snaotheus nathoesun htaoesnuth asonehtu snaoehusnaoheus nth\nsuanoehusnaoheusnaoe\thansoetuh\nanoeuhanoseu\n");
 }
示例#11
0
 public Vector(ICalculatable <T> iCalc) : this(iCalc, new List <T>())
 {
 }
示例#12
0
 public Vector(ICalculatable <T> iCalc, IEnumerable <T> collection)
 {
     this._calculator = iCalc;
     _vector          = new List <T>(collection);
 }
示例#13
0
 public void Add(ICalculatable item) => items.Add(item);
示例#14
0
 public SumOperation(ICalculatable inner, double value) : base(inner)
 {
     Value = value;
 }
示例#15
0
 public MultiplyOperation(ICalculatable inner, double value) : base(inner)
 {
     Value = value;
 }
示例#16
0
 public OperationItem(ICalculatable inner)
 {
     this.inner = inner;
 }
示例#17
0
 public PrintExpression(ICalculatable expression)
 {
     expr = expression;
 }
示例#18
0
 public TestCalculatableActivity(ICalculatable calculatable) : base(calculatable)
 {
 }
示例#19
0
 public VariableDeclaration(string identifier, ICalculatable expression)
 {
     id   = identifier;
     expr = expression;
 }