鬆耦合實現方案

本次程序實現了一個小學生算術題出題系統。主要實現瞭如下三個功能:前端

出題、判斷答案對錯、計算。算法

出題階段,用戶能夠指定出題的要求,如運算中是否出現負數、括號、乘除等。函數

本程序由Core、UI、Console三部分組成。Core承擔了核心功能,即接收用戶輸入,返回用戶指望的結果;UI提供了一個簡單的圖形界面交互;Console部分實現了命令行方式的調用。命令行

Core部分對外提供兩組API:orm

1.統一的一個接口接口

  public string Process(string[] args)。直接將用戶參數傳入到命令行,調用Process方法便可執行。返回值所有爲string類型,若是是須要返回值的功能(如判斷對錯),則正常狀況下返回結果,錯誤返回特定標識符標記失敗;對於無需返回結果的功能(如生成),則返回成功或失敗標記。特別的,對於失敗狀況,會拋出通過封裝的相應異常,上層能夠根據異常信息判斷錯誤,並反饋給用戶。ci

2.劃分功能的多個接口string

  public void Generate(int cnt, int maxvalue, int maxsize, bool fraction, bool muldiv, bool bracket, bool positive)it

  public string Check(string pathQ, string pathA)io

  public string Calc(string str, int precision)

  使用這三個接口,上層調用者傳入合適的參數,便可執行。三個函數根據須要有或無返回值,遇到異常狀況均會拋出相應的異常供調用者分析。

對於異常:

  程序中自定義了

  public class FormulaNotLegalException : Exception

  public class ParameterErrorException : Exception

兩個異常,使用了運行時的堆棧異常和除零異常,實現了全部狀況的異常處理。前端只須要判斷異常類型,便可知道用戶是否輸入合法或程序是否正確執行。

 

實現中特別注意的地方:因爲對於算式輸入的定義不一樣,有些算式存在空格,有些不存在空格。本程序在實現時作成兩種狀況均可以處理。算法上,程序實際處理的是不包含空格的狀況,對於含有空格的,所有替換成空串後進行處理。

 

容易出現的問題:

  雖然接口的定義能夠處理大多數狀況的出現,可是仍是存在一些問題。

  本程序計算模塊對於輸入算式的要求中有:全部負數必須用小括號括起來,可是銜接的用戶界面並無對這個要求做出檢查,致使本應合法的算式被斷定成非法。

  改進方法:使用中間層,若是用戶輸入不知足核心模塊要求,根據實際狀況給前端反饋錯誤或處理成能夠知足要求的輸入格式。

相關文章
相關標籤/搜索