作业地址
https://edu.cnblogs.com/campus/fzu/AdvancedSoftwareEngineering/homework/1302
评分细则
- 篇博客随笔;(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 | 5 | 6 | 5 | 3.5 | 5 | 4.5 | 5 | 45 |
*320036 | 2 | 4 | 5 | 3 | 4 | 2 | 5 | 3 | 4 | 32 |
*320053 | 5 | 5.5 | 5 | 5.5 | 5 | 5.5 | 5 | 5 | 5 | 46.5 |
*320074 | 5 | 6 | 5 | 6 | 5 | 6 | 5 | 5.5 | 5 | 48.5 |
*320075 | 5 | 6 | 5 | 6 | 5 | 6 | 5 | 5.5 | 4.5 | 48 |
*320076 | 5 | 6 | 5 | 6 | 5 | 6 | 5 | 5.5 | 5 | 48.5 |
*320077 | 5+3 | 6 | 5 | 5.5 | 5 | 5.5 | 5 | 6 | 5 | 51 |
*320078 | 5 | 4.5 | 4.5 | 4 | 4.5 | 4 | 4 | 3 | 5 | 38.5 |
*320079 | 5 | 6 | 5 | 6 | 5 | 6 | 5 | 5.5 | 5 | 48.5 |
*327033 | 5 | 6 | 5 | 6 | 5 | 6 | 5 | 5.5 | 5 | 48.5 |
*327037 | 5 | 5 | 5 | 4 | 4.5 | 4 | 5 | 5 | 5 | 42.5 |
*327041 | 5 | 5 | 5 | 4.5 | 5 | 2.5 | 5 | 4 | 5 | 41 |
*327078 | 5 | 5 | 5 | 5 | 5 | 2.5 | 4 | 4 | 5 | 40.5 |
*327109 | 5 | 5.5 | 5 | 6 | 5 | 6 | 5 | 5.5 | 5 | 48 |
*327112 | 5 | 5.5 | 5 | 6 | 5 | 6 | 5 | 5.5 | 5 | 48 |
*327010 | 5 | 6 | 5 | 5 | 5 | 6 | 5 | 5.5 | 4.5 | 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、个别同学的所有模式都没有测试类
设计模式的作业已近到一个阶段,作业中的这些模式都是比较常用的设计模式,希望同学们可以总结这几次的作业,对这作业中存在的问题进行分析,若有任何困惑,大家可以在班级群里交流。