1、封裝
首先是新建一個運算類(Calcultor.cs),它包含兩個屬性strNumA和strNumB,用以儲存計算時的兩個數,此外,還有一個虛方法Getresult(),用以得到運算的結果。
public class calculator { /// <summary> /// 定義運算類的屬性 /// </summary> private double dblNumA = 0,dblNumB=0; /// <summary> /// 定義屬性dblNumA的操作方法 /// </summary> public double dblnuma { get { return dblNumA; } set { dblNumA = value; } } /// <summary> /// 定義屬性dblNumB的操作方法 /// </summary> public double dblnumb { get { return dblNumB; } set { dblNumB = value; } } /// <summary> /// 得到運算結果 /// </summary> /// <returns>dblresult</returns> public virtual string GetResult() { string dblResult ="0"; return dblResult; } }
2、繼承
然後將操作加、減、乘、除寫成運算類的子類,繼承運算類後重寫Getresult()。
/// <summary> /// 加法類 /// </summary> class OperationAdd : calculator { public override string GetResult() { string dblresult = "0"; dblresult = (dblnuma + dblnumb).ToString(); return dblresult; } } /// <summary> /// 減法類 /// </summary> class OperationSub : calculator { public override string GetResult() { string dblresult = "0"; dblresult = (dblnuma - dblnumb).ToString(); return dblresult; } } /// <summary> /// 乘法類 /// </summary> class OperationMul : calculator { public override string GetResult() { string dblresult = "0"; dblresult = (dblnuma * dblnumb).ToString(); return dblresult; } } /// <summary> /// 除法類 /// </summary> class OperationDiv : calculator { public override string GetResult() { string dblresult = "0"; if (dblnumb != 0) { dblresult = (dblnuma / dblnumb).ToString(); } else { dblresult = "除數不能爲0!"; } return dblresult; } }
3、多態
再用一個單獨的類創造實例的過程。
public class factory { public static calculator createOperation(string strOperation) { calculator cal = null; switch (strOperation) { case "+": { cal = new OperationAdd(); break; } case "-": { cal = new OperationSub(); break; } case "*": { cal = new OperationMul(); break; } case "/": { cal = new OperationDiv(); break; } } return cal; } }