2021面向对象第四单元作业

buaaboy buaaboy     2022-12-01     121

关键词:

面向对象第四单元小结

一.架构设计

第一次作业

在本次作业中,采用MyUmlInteraction类来实现代码的主体功能。

第二次作业

在本次作业中,采用MyUmlGeneralInteraction类来实现代码的主体功能。

本次作业出于懒惰,直接将类图、状态图、时序图放在了MyUmlGeneralInteraction这个类中实现,导致了这个类出奇的臃肿。这样的行为应当避免。

第三次作业

在本次作业中,采用MyUmlGeneralInteraction类来实现代码的主体功能。

本次作业由于第二次作业的稀烂的架构,被迫沿用三图合一的类,另外采取了一个我觉得比较好的和一个我觉得比较不好的架构设计:

好的在于新建了一个MyReader类专门负责读取数据,在MyUmlGeneralInteraction的构造方法中只需要将MyReader中的容器进行传递即可。

不好的在于将规格检查放在了MyUmlGeneralInteraction类中,导致了MyUmlGeneralInteraction类的过度臃肿。实际上新建一个MyChecker类或许会更好些?

二.架构设计及OO方法理解的演进

第一单元

现在回头看我第一次作业写的Java代码,毫无架构的优雅性可言,是一个一个类到底的代码。而在第二次作业面临被迫重构后,才真正地认识到了架构地重要性,才开始感悟属于面向对象的设计方法。捕捉不同元素之间的相同与不同,配合以继承/接口/多态,这正是第一单元中我在架构上最大的感悟所在。

第二单元

第二单元主要的架构设计在于电梯队列、乘客的分配,主要是要保证线程的效率和安全性。

线程的架构一定要把安全放在第一位,要尽量避免死锁的发生。

第三单元

本单元应该没有架构可言...?

第四单元

第四单元的架构我觉得比较合理的架构是做到将不同功能单独抽成类,比如读数据的类,检查格式的类,类图的类,状态图的类等等,对于MyClass和MyInterface这种比较相似的类可以用一个接口封装共性的方法。

三.测试理解与实践的演进

在测试上,最开始我并没有花很多心思,所以强测和互测时而有bug产生。

从第三单元开始,开始觉得还是写个评测机出来避免强测爆炸比较好,于是用Python写了一个可以自动生成数据并且自动对拍的脚本。

同时,在第三单元学习了JUnit的使用,并且在一次研讨课上分享了关于JUnit的知识,让我对这门测试工具也有了深刻的认识。

总的来说,以后的测试方法不会再像之前一样用手输入了,取而代之的是轻量级的JUnit或者是覆盖面较广的自动评测机。不过,测试终归是测试,不能覆盖所有的数据,真正应该做好的还是避免代码有bug。

四.课程收获

平心而论,OO是门好课。

无论是老师的授课、助教学长学姐的工作态度还是课程的“作业-中测-强测-互测-BUG修复“的体系都没有让人失望。

想寒假的时候,我还完全不会Java这门编程语言,而现在,我已经用Java写完了十六次作业,和Java一起面对了表达式求导、多线程电梯、JML、UML等复杂的问题。同时,我还学会了Git这门超级强大的版本控制工具,还有用Python写出来的自动评测机。当然,最重要的不是对Java这门语言的掌握,而是如同老师所说的,对面向对象思想的理解与认知。对这种优秀的程序设计思想的了解才是我这门课最大的收获。

收获之余,还要感谢这十六次作业一路一起同行的刘俊一、徐一笑、胡明博、罗杨一飞、曾畅、裴宝琦等同学,一路上大家一起对拍、debug、讨论分析,也让这坎坷的OO之路变得平坦起来;同时,还要感谢助教乔盛业学长、助教陈文东学长、谭幸学长、吕佳高学长,在我面对困难的时候给了我帮助和解答,帮助我解决了不小的问题。

学习OO的过程真的收获满满,衷心希望这门课能够越来越好!

五.课程建议

  • UML单元可以像JML单元一样给个指导书,便于同学们更好更快的理解。
  • 感觉训练部分存在感极低,可以突出训练部分的重要性。
  • 每周提前一点发布作业或许是个不错的选择?比如周三中午12:00,这样周三下午的空闲时间就可以写OO了.

面向对象第四单元总结(代码片段)

本文为面向对象课程第三单元“UML”作业以及整个课程的总结。架构设计本单元作业的架构设计主要分为两部分:将输入的UML模型数据用Java类和对象组织起来便于查询,以及设计实现查询接口的类。UML模型UML模型的组织在三次... 查看详情

面向对象设计与构造课程总结作业(代码片段)

BUAAOO2021THEFINAL面向对象设计与构造课程总结作业四个单元中的架构设计第一单元架构设计与实现相关总结,传送门在此第二单元架构设计与实现相关总结,传送门在此第三单元架构设计与实现相关总结,传送门在此第四单元架构... 查看详情

oo2021

2021面向对象设计与结构-第四单元(UML) 本单元作业的架构设计&四个单元作业的架构设计第一单元(表达式求导)这单元的作业主要以输入数据分析为主,但我这单元的作业完成度并不高,主要是因为架构是基于该题目... 查看详情

面向对象第四单元总结——uml

...方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效... 查看详情

面向对象程序设计第四单元总结(代码片段)

目录面向对象程序设计第四单元总结UML类图类接口六大关系继承关系(Generalization)实现关系(Implementation)关联关系(Association)聚合关系(Aggregation)组合关系(Composition)依赖关系(Dependence)顺序图协同参与者(participant)... 查看详情

oo第四次作业

  对于之前没有任何Java编程的人来说,面向对象编程无疑是一门非常具有挑战性的课程,因为我们不仅要在短时间内学习Java基本语法、积累一定的Java编程经验,还需要对于面向对象和面向过程有一定程度的理解。而对于我来... 查看详情

面向对象第二单元训练总结

一、前言第二单元的三次作业是很有特点的三次作业。多线程电梯的设计思路和前两次电梯作业迥然不同,导致我花费了大量的时间去重构之前的代码,使其适应多线程电梯的作业要求;文件监视器是一个独立的作业,不像电梯... 查看详情

面向对象第一单元总结(代码片段)

...心得体会第一单元通过三次迭代的表达式求导任务建立对面向对象程序的初步认识,并熟悉面向对象的思维和编程方法。一、任务需求三次作业的需求如下:第一次作业:求解简单多项式导函数第二次作业:求解包含简单幂函数... 查看详情

面向对象第三单元总结

面向对象第三单元总结目录分析在本单元自测过程中如何利用JML规格来准备测试数据梳理本单元的架构设计,分析自己的图模型构建和维护策略按照作业分析代码实现出现的性能问题和修复情况对Network进行扩展,以及相应的JML... 查看详情

第四单元作业

<<<第四单元练习>>>1.在student用户下执行find/etc-namepasswd命令,并管理其输出要求如下:        *显示所有正确输出,屏蔽错误输出    *保存正确数出到/mnt/find.out,错误数出到/mn... 查看详情

第四单元作业

登陆student用户[[email protected]Desktop]$find/etc-namepasswd      ####在/etc目录下按照文件名passwd查找文件####find:‘/etc/pki/CA/private‘:Permissiondenied    &nbs 查看详情

第四单元作业

登陆student用户[[email protected]Desktop]$find/etc-namepasswd      ####在/etc目录下按照文件名passwd查找文件####find:‘/etc/pki/CA/private‘:Permissiondenied    &nbs 查看详情

第四单元作业

[[email protected]Desktop]$find/etc-namepasswd2>/dev/null/etc/passwd/etc/pam.d/passwd[[email protected]Desktop]$find/etc-namepasswd2>/mnt/find.err>/mnt/find.outbash:/mnt/find.err:Pe 查看详情

第四单元作业

1.在student用户下执行find/etc-namepasswd命令,并管理其输出要求如下:*显示所有正确输出,屏蔽错误输出650)this.width=650;"src="https://s3.51cto.com/wyfs02/M02/8F/6B/wKioL1jd8QGw9IbXAAKjBJC1kZg035.png"title="Screenshotfrom2017-03-3022-21-2 查看详情

oo第四单元总结

OO第四单元总结作业的架构设计第一次作业第一次作业其实反而是三次作业中最难的一次,因为刚发下来的官方包中文件实在是太多了,不知道从哪里下手,而且因为第一次接触UML图,很多概念还不理解,第一次作业的大量时间... 查看详情

面向对象第二单元总结

第二单元的主要内容为电梯的优化控制。在本单元中,我们学习了Java的多线程操作,了解了多线程同步控制的方法。同时,对电梯的控制算法有了初步的了解。多线程同步策略在本单元中,为了提高性能,以及减少多线程控制... 查看详情

软件工程第四次作业——单元测试

作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/994测试用例:https://git.coding.net/tianjiping/ruanjiangongcheng.git结对伙伴:田继平    http://www.cnblogs.com/tianjiing/p/7645045.html 查看详情

第四次作业之单元测试

结对成员:李圆圆要求1 对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。 功能一:判断符号的优先性。功能二:判断等式中括号出现位置是否正确。功能三:命令行的... 查看详情