麵向對象編程實例
上一篇博客主要是在理論上介紹麵向對象編程,下麵通過一個計算器的實例來學習麵向對象的好處。
按照麵向對象的三大特征:
1、封裝
對事物的狀態和行為的細節封裝,這樣就形成了一個可以重複使用的“零件”,這樣就使得我們寫的代碼可複用,下麵是計算器的代碼展示,把計算器的業務邏輯與界麵邏輯分開:
///業務邏輯——OPeration運算類 public class Operation { public static double GetResult(double numberA, double numberB, string operate) { double result = 0d; switch (operate) ///給運算類(+、-、*、/)定義 { case "+": result = numberA + numberB; break; case "-": result = numberA - numberB; break; case "*": result = numberA * numberB; break; case "/": result = numberA / numberB; break; } return result; } }
///界麵邏輯——客戶端代碼 static void Main (string[] args) { Operation oper; oper = OperationFactory.createOperate("+"); oper.NumberA = 1; oper.NumberB = 2; double result = oper.GetResult(); ///對界麵進行設計定義 try { Console.Write("請輸入數字A:"); string strNumberA = Console.ReadLine(); Console.Write("請選擇運算符號(+、-、*、/):"); string strOperate = Console.ReadLine(); Console.Write("請輸入數字B:"); string strNumberB=Console.ReadLine(); string strResult=""; strResult = Convert.ToString(Operation.GetResult(Convert.ToDouble(strNumberA), Convert.ToDouble(strNumberB), strOperate)); Console.WriteLine("結果是:" + strResult); Console.ReadLine(); } catch (Exception ex) ///錯誤信息提示 { Console.WriteLine("您的輸入有錯:" + ex.Message); } }這樣,我們就可以自由的修改類的內部,用戶如果想寫一個其他版的程序,既可以直接複用這個Operation運算類。
2、繼承
class OperationAdd : Operation ///加法類,繼承運算類 { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } class OperationSub : Operation ///減法類,繼承運算類 { public override double GetResult() { double result = 0; result = NumberA -NumberB; return result; } } class OperationMul : Operation ///乘法類,繼承運算類 { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } } class OperationDiv : Operation ///除法類,繼承運算類 { public override double GetResult() { double result = 0; if (NumberB == 0) throw new Exception("除數不能為0."); result = NumberA / NumberB; return result; } }加減乘除是運算方法類,運行時的代碼大部分都相同,把相同的代碼都放到父類運算類(OPeration)中,這樣寫代碼的時候重複的部分就可以不用寫,直接從父類中繼承就行,而且如果不用繼承,當你修改功能,就必須在所有重複的方法中修改,代碼越多,出錯的可能就越大。
3、多態
我們建一個簡單運算工廠,這個工廠的功能生產各種運算,加減乘除,平方根,立方根,自然對數,正弦餘弦...
public class OperationFactory { public static Operation createOperate(string operate) { Operation oper = null; switch (operate ) ///定義新的運算 { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; } }各種運算都是子類,他們都有一個共同的父類運算類(Operation),雖然每一種運算也是一種類,但是他們的最終結果是把幾個數的運算結果算出來。
這樣我們就實現了我們所寫的程序可維護、可擴展、可複用、靈活性好的功能。
最後更新:2017-04-03 12:56:25
上一篇:
排錯公式-jobdu-1451
下一篇:
線程、進程 的創建
5月3日雲棲精選夜讀:乾隆會判阿爾法狗死刑嗎 ——淺談當前人工智能的技術進化
C# VS2012操作word文檔 (一).創建文檔
互聯網企業安全高級指南3.11 業務持續性管理
Data Migration Pre-Check Failures and Solutions
製造業企業轉型 機器人視覺應用升級
【轉載】阿裏雲 CodePipeline 持續集成之發布靜態網站到OSS
1.使用XMLHttPRequest控件異步獲取數據
中信集團張波:信息化已經過去,數字化剛剛到來
Java中的HashCode(2)之Hashset造成的內存泄露
木馬開啟智能識別?深度解析新型變形惡意軟件LokiBot!