1. 程式人生 > >使用面向物件的程式設計思想實現加減乘除運算

使用面向物件的程式設計思想實現加減乘除運算

指令碼1Main 函式的程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Computer
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine ("請輸入數字A"
); string strNum1 = Console.ReadLine ( ); Console.WriteLine ("請輸入運算子'+''-''*''/'"); string strOperator = Console.ReadLine ( ); Console.WriteLine ("請輸入數字B"); string strNum2 = Console.ReadLine ( ); //定義變數運算結果,賦值為空
string strResult= string.Empty; //使用工廠生產所需物件 OperatorManager Oper = SimpleFactory.SimFactory (strOperator); //通過基類實現子類的方法,輸出運算結果 strResult = Oper.StrOpreator (strNum1,strNum2); Console.WriteLine ("輸出的結果為:"+strResult); Console.ReadLine ( ); } catch
(Exception ex) { Console.WriteLine ("輸入有誤"+ex.ToString()); Console.ReadLine ( ); } } } }

指令碼2:運算子基類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Computer
{
    /// <summary>
    /// 運算子基類
    /// </summary>
    abstract class OperatorManager
    {
        public abstract string StrOpreator(string strNum1,string strNum2);
    }
}

指令碼3:獨立的運算子類
加法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Computer
{
    /// <summary>
    /// 加法運算
    /// </summary>
    class AddOpeation : OperatorManager
    {
        public override string StrOpreator(string strNum1, string strNum2)
        {
            return (Convert.ToDouble (strNum1) + Convert.ToDouble (strNum2)).ToString ( );
        }
    }
}

減法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Computer
{
    /// <summary>
    /// 減法運算
    /// </summary>
    class SubOpeation : OperatorManager
    {
        public override string StrOpreator(string strNum1, string strNum2)
        {
            return (Convert.ToDouble (strNum1) - Convert.ToDouble (strNum2)).ToString ( );
        }
    }
}

乘法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Computer
{
    /// <summary>
    /// 乘法運算
    /// </summary>
    class MulOpeation : OperatorManager
    {
        public override string StrOpreator(string strNum1, string strNum2)
        {
            return (Convert.ToDouble (strNum1) *Convert.ToDouble (strNum2)).ToString ( );
        }
    }
}

除法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Computer
{
    /// <summary>
    /// 除法運算
    /// </summary>
    class DivOpeation : OperatorManager
    {
        public override string StrOpreator(string strNum1, string strNum2)
        {
            return (Convert.ToDouble (strNum1) / Convert.ToDouble (strNum2)).ToString ( );
        }
    }
}

簡單工廠類:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Computer
{
    /// <summary>
    /// 工廠類
    /// </summary>
    class SimpleFactory
    {
        /// <summary>
        /// 根據需要生產物件
        /// </summary>
        /// <param name="strOperator"></param>
        /// <returns></returns>
        public static OperatorManager SimFactory(string strOperator)
        {
            switch (strOperator)
            {
                case "+":
                    return new AddOpeation ( );
                case "-":
                    return new SubOpeation ( );
                case "*":
                    return new MulOpeation ( );
                case "/":
                    return new DivOpeation ( );
            }
            return null;
        }
    }
}