OO暑期学期总结

一、对于当时没通过的每次作业,描述当时遇到的困难和无法完成的原因

1.第一单元第2、3次作业:当时几乎没有面向对象的概念,因此在用一个Main解决完第一次作业之后,重构遇到了较大的困难,对于整个的分层设计感到非常棘手。

2.第二单元第7次作业:由于第5、6次作业中对于电梯对请求队列的访问都是用while-sleep解决的,因此第7次作业沿袭这一处理方式后不可避免得出现性能问题,但是当时面临毕设中期答辩时间紧迫,没有时间修改。

3.第三单元第13-15次作业:当时面临毕设论文的撰写和答辩,时间紧迫没写。

二、现在补的每次作业,有哪些针对性的改进,包括设计、算法和难点的处理等

 1.第一单元第3次作业:根据数据和行为,设计因子(Factor)类、项(Term)类、表达式(Expression)类、幂函数(Power)类、正弦函数(Sin)类、余弦函数(Cos)类,其中达式(Expression)类、幂函数(Power)类、正弦函数(Sin)类、余弦函数(Cos)类继承自因子(Factor)类,每个类都有自己的toString()和derive()(求导)方法。在对输入字符串进行读取的过程中,采用递归下降分析,每读取一个元素,即分析其是否符合语法规则,若不符合即报错、停止继续读取并输出错误提示,否则生成对应的对象、进行存储并继续往下读。求导过程采用层层传递,如表达式的求导结果由其组成的项的求导结果用加减号连接而成,而每一项的求导结果为其每一项因子或其求导结果用乘号连接而成,由此最终得到整个表达式的求导结果。

2.第二单元第7次作业:1>用wait-notify取代sleep,减少轮询的CPU时间;2>取消Dispatcher(将所有待执行请求根据其电梯种类分配到到对应的电梯待执行请求队列),改为所有电梯自己从所有待执行请求队列中取请求,大大降低CPU时间。

3.第四单元第15次作业:设计MyClass、MyInterface、MyOperation、MyStateMachine类以表示UML中的各种图,存储其id、name等属性。在MyUmlGeneralInteraction类中,添加myClasses、myInterfaces、myOperations等属性以对输入的元素进行存储。建立一个数组,元素种类为ArrayList,长度为Uml元素种类数量为长度的数组,对于输入的UmlElements,根据其类型存储到对应的数组元素中。对于MyUmlGeneralInteraction中的查询操作和检查正确性操作,基本都在对应的MyClass或MyInterface等类中进行具体实现。

三、通过补给站的讲解,有哪些新的收获和进步

最大的收获是对于课程内容有了进一步理解,并完成了之前没有完成的作业。在讲解作业的过程中,老师的提问引导我在完成作业的基础上进行进一步的思考和完善。

四、对补给站组织形式有哪些建议

如果可以的话,希望每次作业可以增加一次讲解,在着手写程序之前,介绍自己的整体架构,如果对于架构或者某个具体实现的块有疑问的话可以及时提出并得到老师的帮助,或许在之后写程序的过程中会更加顺利一些。

五、心得体会

这门课程的学习对于写代码的能力确实有显著的提升,对于课程的内容也有了更深层次的理解,感谢老师和助教的辛苦付出。

posted @ 2020-08-21 17:47  zemuxrny  阅读(142)  评论(0编辑  收藏  举报