本次程式實現了乙個小學生算術題出題系統。主要實現了以下三個功能:
出題、判斷答案對錯、計算。
出題階段,使用者可以指定出題的要求,如運算中是否出現負數、括號、乘除等。
本程式由core、ui、console三部分組成。core承擔了核心功能,即接收使用者輸入,返回使用者期望的結果;ui提供了乙個簡單的圖形介面互動;console部分實現了命令列方式的呼叫。
core部分對外提供兩組api:
1.統一的乙個介面
public string process(string args)。直接將使用者引數傳入到命令列,呼叫process方法即可執行。返回值全部為string型別,如果是需要返回值的功能(如判斷對錯),則正常情況下返回結果,錯誤返回特定識別符號標記失敗;對於無需返回結果的功能(如生成),則返回成功或失敗標記。特別的,對於失敗情況,會丟擲經過封裝的相應異常,上層可以根據異常資訊判斷錯誤,並反饋給使用者。
2.劃分功能的多個介面
public void generate(int cnt, int maxvalue, int maxsize, bool fraction, bool muldiv, bool bracket, bool positive)
public string check(string pathq, string patha)
public string calc(string str, int precision)
使用這三個介面,上層呼叫者傳入合適的引數,即可執行。三個函式根據需要有或無返回值,遇到異常情況均會丟擲相應的異常供呼叫者分析。
對於異常:
程式中自定義了
public class formulanotlegalexception : exception
public class parametererrorexception : exception
兩個異常,使用了執行時的堆疊異常和除零異常,實現了所有情況的異常處理。前端只需要判斷異常型別,即可知道使用者是否輸入合法或程式是否正確執行。
實現中特別注意的地方:由於對於算式輸入的定義不同,有些算式存在空格,有些不存在空格。本程式在實現時做成兩種情況都可以處理。演算法上,程式實際處理的是不包含空格的情況,對於含有空格的,全部替換成空串後進行處理。
容易出現的問題:
雖然介面的定義可以處理大多數情況的出現,但是還是存在一些問題。
本程式計算模組對於輸入算式的要求中有:所有負數必須用小括號括起來,但是銜接的使用者介面並沒有對這個要求作出檢查,導致本應合法的算式被判定成非法。
改進方法:使用中間層,如果使用者輸入不滿足核心模組要求,根據實際情況給前端反饋錯誤或處理成可以滿足要求的輸入格式。
耦合,緊耦合,松耦合,解耦
一 耦合 耦合是兩個或多個模組之間的相互關聯。在軟體工程中,兩個模組之間的耦合度越高,維護成本越高。因此,在系統架構的設計過程中,應減少各個模組之間的耦合度,以提高應用的可維護性。二 緊耦合 緊耦合架構本質是client server的模型,如下圖所示 優點是 架構簡單 設計簡單 開發周期短 能夠快...
如何實現UI層的松耦合
ui層的松耦合主要是指html css js的松耦合 1 將js 從css中分離,即不使用expression 2 將css從js中分離,盡量不要在js中直接操作css。如果需要操作,可以使用新增或刪除class的方法 class在css中定義好 避免在出現bug時,定位不到出錯位置 3 將js從h...
松耦合通俗解釋
松耦合 loose coupling.英英解釋 a device for connecting parts of machinery.coupling的同義詞 link,join,tie。注意tie有綁的意思。不管是松耦合還是緊耦合。兩者都是有聯絡的。緊耦合可以兩個人綁在了一起,行動起來相互限制。兩...