OO第四单元总结&课程总结

OO第四单元作业总结

由于第13次作业没有顺利完成,导致后续作业完成得很艰难,此部分按下不表。

OO整体总结

第一单元

第一单元的多项式求导,主要是对于OO概念理解的入门以及对JAVA语言的使用,包括构建各种诸如单项式(其中又包括三角函数、幂函数等)和多项式的类,通过调用各种库函数进行字符串的读取、分解和计算等。在求导的过程中,对于类的封装和分层设计要求较高,处理不当就会将过程变得十分繁琐,首先是简单的幂函数,再加入三角函数,并对其共性进行抽取并封装成新的单项式类。在优化过程中,则主要是对于数学公式的利用,如合并同类项、利用(sinx)^2 + (cosx)^2 = 1对结果进行化简等等。

第二单元

第二单元主要是多线程电梯的设计。多线程也是面向对象的一个重要组成部分,本单元作业的关键是电梯和调度器关于请求队列的交互。通过学习生产者消费者模式,将输入读取处理器类比成需求的生产者,电梯或者其所属调度器类比成需求的消费者,不断对需求队列进行放入需求和取走需求的操作。主要注意的问题是多线程模式下的安全问题(同步互斥问题),当一个消费者在进行取操作时,要对队列进行锁操作,以免其他消费者在此时对同一个对象进行取操作造成安全性的问题。以及对于wait-notify的使用,当队列暂时为空时,消费者进行wait操作,等到输入读取处理器放入新的请求时,使用notifyall对所有消费者唤醒,以此节约资源的无意义耗费。

第三单元

第三单元主要是社交网络的构建。通过读取给定的JML,获取整个项目的需求和架构设计,以此完成其实现。需要注意的是,由于给定了JML,可能会下意识地减少对于设计的思考,如所需采用的数据结构和读取数据时遍历的方式等等,而是一味地对JML进行“直接翻译”,最后导致性能表现十分不尽人意。

感想和建议

1. 线上学习体验感很好。通过线上的授课、实验、作业的方式,学习效率直线上升。

2. 希望增加多线程相关的作业,个人感觉多线程这部分的作业是整个系列中对于OO理解帮助最大的一部分,其优化过程也很值得思考,做完电梯部分之后有些意犹未尽的感觉,希望能通过这一部分的内容学习除了生产者消费者之外其他的设计模式。相应地,可以减少JML单元的作业。

3. UML相关作业可以适当提前,有助于理解OO的思想和概念。

4. 感谢课程老师和助教一学期的辛勤付出。

你可能感兴趣的:(OO第四单元总结&课程总结)