天天看點

[進階軟體工程教學]個人第5次班級作業評分

作業位址

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、個别同學的所有模式都沒有測試類

設計模式的作業已近到一個階段,作業中的這些模式都是比較常用的設計模式,希望同學們可以總結這幾次的作業,對這作業中存在的問題進行分析,若有任何困惑,大家可以在班級群裡交流。