作業位址
https://edu.cnblogs.com/campus/fzu/AdvancedSoftwareEngineering/homework/1409
評分細則
- 篇部落格随筆;(5 points)
- 類圖(5 points)、關鍵類java源碼及注釋(6 points);(每題11 points)
評分結果
學号 | B1 | T1-1 | T1-2 | T2-1 | T2-2 | T3-1 | T3-2 | T4-1 | T4-2 | 總分 |
---|---|---|---|---|---|---|---|---|---|---|
*320034 | 5 | 6 | 3.5 | 4.5 | 45 | |||||
*320036 | 2 | 4 | 3 | 35 | ||||||
*320053 | 5.5 | 46.5 | ||||||||
*320074 | 48.5 | |||||||||
*320075 | 48 | |||||||||
*320076 | ||||||||||
*320077 | 5+3 | 51 | ||||||||
*320078 | 38.5 | |||||||||
*320079 | ||||||||||
*327033 | ||||||||||
*327037 | 42.5 | |||||||||
*327041 | 2.5 | 41 | ||||||||
*327078 | 40.5 | |||||||||
*327109 | ||||||||||
*327112 | ||||||||||
*327010 | 47 |
總結
相對于前兩次作業,本次作業整體完成情況有所提高,對類圖的細節把握準确,主要問題是代碼實作部分,下面列出存在的問題:
1、一些同學在某些模式最關鍵部分沒有給出代碼實作的細節,甚至沒有文字說明。例如
- 在第二題Command模式作業
某公司欲開發一個基于Windows平台的公告闆系統,系統提供主菜單(Menu)其中有菜單項(MenuItem)。通過Menu類的addMenuItem()方法增加菜單項。菜單項的打開方法是click(),每個 菜單項包含一個抽象指令類,具體指令類包括OpenCommand()、CreateCommand()、EditCommand()等,指令類具有一個execute()方法,用于調用公告闆系統界面類(BoardScreen())的open()、create()、edit())等方法。使用Command模式來設計。
BoardScreen為模式中的Receiver類;MenuItem為模式中的Invoker類。一些同學在Command中聲明了BoardScreen對象,但是沒有展現在對象在何時被初始化,也沒有任何參數傳遞過程。
public class OpenCommand extends AbstractCommand{
private BoardScreen boardScreen;
public void excute(){}
}
如上述代碼,這顯然無法展現該模式的特點。
- 再如,在第三題Mediator模式作業
某論壇系統欲增加一個虛拟聊天室,允許論壇會員通過該聊天室進行資訊交流,普通會員(CommonMember)可以給其他會員發送文本資訊,鑽石會員(DiamondMember)可以給其他會員發送文本和圖檔資訊。該聊天室可以對不雅字元進行過濾,如“TMD”等字元,還可以對發送圖檔大小進行控制。使用Mediator模式來設計。
中介者類:聊天室;同僚類:會員。
public class DiamondMember extends Member
{
public DiamondMember(String name)
{
super(name);
}
public void sendText()
{
}
...
}
上段代碼中,DiamondMember為磚石會員實作類,該類中sendText()沒有任何實作細節,同僚是如何通過中介者實作彼此之間的通信?
public class Chatroom extends AbstractChatroom
{
public void sendText()
{
//發送文本
}
...
本段代碼中Chatroom為中介類的具體實作類,sendText()同樣也沒有任何細節,是以這一段代碼表述,并不能展示任何該模式的特點。
2、個别未使用markdown格式編輯,特别是代碼段部未為用markdown的代碼注釋
3、個别同學的所有模式都沒有測試類
設計模式的作業已近到一個階段,作業中的這些模式都是比較常用的設計模式,希望同學們可以總結這幾次的作業,對這作業中存在的問題進行分析,若有任何困惑,大家可以在班級群裡交流。