然后,這個類型能夠做些什么呢?我們把個人智能助理的功能進行分類,應該包括三個功能:
1、定制;
2、搜索;
3、存儲。
仔細想想,實際上只有搜索和存儲才是智能助理的職責所在,而定制不過是智能助理要運轉的一個條件罷了。既然如此,從客戶應用的順序來考慮,我們應該先實現定制的功能。要定制類別,就應該具備類別類型,而定制類別這項功能,則應該由一個專門的控制器來承擔責任。
[SetupUp]
public void InitObject()
{
Category cg1;
Category cg2;
CategoryContainer cgContainer;
SmartController control;
}
[Test]
public void TestCategory()
{
cg1 = new Category(”SoftWare Engineering”,”TDD”);
cg2 = new Category(”SoftWare Engineering”,”Design Pattern”);
cgContainer = new CategoryContainer();
cgContainer.Add(cg1);
cgContainer.Add(cg2);
Assert.IsNotNull(cgContainer);
Assert.AreEqual(cg1,cgContainer[0]);
Assert.AreEqual(cg2,cgContainer[1]);
}
[Test]
public void TestController()
{
control = new SmartController();
Assert.IsNotNull(control);
Assert.IsTrue(control.CustomizeCategories(cgContainer));
}
上面的測試代碼完全從用戶的應用角度來考慮的。要定制類別,必須具備類別類型Category,它應該實現一個帶參的構造函數,傳遞主類別和子類別。由于定制的類別可能會很多,所以需要一個類別容器CategoryContainer。
而定制類別,則由控制器SmartController完成。定制的方法CustomizeCategories()定制多個類別,并返回布爾型,以確定定制是否成功。通過上述的測試代碼,寫出相應的程序應該不難吧。
接下來應該考慮搜索和存儲功能了。在前面我提到,這兩個功能應該是SmartAssistor類型的職責。先修改最初的測試代碼:
[Test]
public void TestSmartAssistor()
{
SmartAssistor assistor = new SmartAssistor();
Assert.IsNotNull(assistor);
assistor.Search(control.Categaries);
assistor.Store();
}
此時,我發現在寫Search()和Store()方法的斷言時,有些問題存在。這兩個方法返回的結果應該是什么?是布爾值嗎?那么搜索得到的結果呢?存儲后形成的文件呢?對于用戶而言,是否只需要這兩個行為呢?
仔細分析,我認為,Search()和Store()方法返回布爾值是可行的,但Search()還應該返回搜索結果。Store()方法也應該指定存儲的路徑和文件的格式。而用戶不僅僅需要搜索和存儲,同時還應該提供顯示的功能。所以,上面的測試代碼需要完善:
[Test]
public void TestSmartAssistor()
{
SmartAssistor assistor = new SmartAssistor();
Assert.IsNotNull(assistor);
SearchResult result = new SearchResult();
Assert.IsTrue(assistor.Search(control.Categaries,out result));
Assert.IsTrue(assistor.Store(result,@”D:\Smart Assistor\”,” result.xml”));
assistor.List(result);
}
此時根據測試代碼寫出的程序,應該說就具備個人智能助理的雛形了(所謂智能,還應具備自動搜索,自動匹配,自動分類等諸多功能,本文只是根據該項目提出TDD的一些觀點,因此這些功能省略)。
更多軟考資料請訪問:考試吧軟件水平考試欄目
希望與更多網友交流,請進入考試吧軟件水平考試論壇
轉帖于:軟件水平考試_考試吧
- 推薦給朋友
- 收藏此頁
·2006年下半年軟考《信息系統監理師》試題分析 (2006-11-8 9:02:02)
·2006年下半年軟件水平考試《信息系統監理師》試題 (2006-11-6 10:38:41)
·2006年軟件水平《信息系統監理師》試題 (2006-5-31 16:49:14)