目录
关于java&面向对象 |
前言
-
知识点覆盖:抽象类和接口,Stream流配合lambda表达式的灵活运用,TreeMap对Key的排序,多态的3大前提条件:继承,子类的重写和向上转型,使用自定义的比较器对列表进行排序。
-
题量变化:答题判题程序-4,家居强电电路模拟程序-1,家居强电电路模拟程序-2中题量最大的应该是答题判题程序-4,其次是家居强电电路模拟程序-2,最后是家居强电电路模拟程序-1,但因为答题判题程序-4已经经过4次迭代了,读起题目来却是最快的,反而是家居强电电路模拟程序-2读题目的速度最慢。
-
难度变化:按照官方的意思来说,答题判题程序-4是最难的,其次是家居强电电路模拟程序-2,最简单的是家居强电电路模拟程序-1。家居强电电路模拟程序-1最简单个人完全没有异议,毕竟只有一条串联电路,对我个人来说,最难的却是家居强电电路模拟程序-2,因为有7种设备,且加了一条并联电路,又因为我是通过计算电流来给各个设备附上电压的,因此逻辑非常的复杂,反而是答题判题程序-4只加了2种题型,再排序一下就行了。
-
反馈和调整:题目的数量和难度都可以接受,个人更想把答题判题程序迭代下去,对于因其太难而改成家居强电电路模拟程序不是太满意,做事就要有始有终,难才能有进步,才能知道有哪不懂。
设计与分析
答题判题程序目前设计了10个类,而家居强电电路模拟程序目前设计了14个类,但目前能力有限,大部分都是实体类,控制类和接口类不太会用,因此单一职责原则没有遵守,复用性很差,以后会接着改进。
1.答题判题程序-4
本次迭代新增了选择题,填空题,处理这两种题的输入和前几次迭代大致相同,但本次迭代新颖的地方,就是他们的输出:都增加一项”partially correct”表示部分正确。我认为如果用for循环来判断学生答案是否与标准答案内容完全匹配给满分,或者包含一个错误字符或完全没有答案给0分,又或者包含部分正确答案且不含错误字符给一半分十分麻烦,因此经过上网努力地搜索,最终找到了Stream流,其配合Lambda表达式 ,给我们操作集合(Collection)提供了极大的便利。这也是我第一次接触Stream流。有了Stream流这样方便的工具后,就缩减了大量代码,如判断是否有多余的答案boolean hasExtra = userAnswersSet.stream().anyMatch(ans -> !correctAnswers.contains(ans));
下面给出我写的代码的SourceMontor的生成报表内容以及PowerDesigner的相应类图。
从以上两张图中可以发现类都是实体类,且类与类
之间的关系简单,且类的深度参差不齐,故代码写得不尽人意。
2.家居强电电路模拟程序-1
因为是第一次迭代,所以内容比较简单,只有一条线路,所有元件串联,但又因为是第一次迭代,所有的东西都要从头开始,包括处理输入输出,类设计等。虽然麻烦,但好在简单,还好比较轻松地搞定了,但有个比较坑人的点,最后要遍历一下整条电路上的开关,因为要保证整条电路上的开关都要是关闭的电路才有效。没什么好说的,下面给出我写的代码的SourceMontor的生成报表内容以及PowerDesigner的相应类图。
2.家居强电电路模拟程序-2
不知道为什么加了一条并联电路,感觉难度陡然增加,可能是因为我的思路是计算电流,再一个个给电路上的设备附上电压的,个人目前只能想到这个思路。不要看只增加了并联电路,实际上是加了多条逻辑上的串联电路,不仅要判断并联电路上每条串联电路开关是否全部关闭,没有的话要删除,还要附上设备电压,着实是很麻烦。但stream().filter()可以方便地筛选出串联电路和并联电路,以防混为一谈。但因为题目给出了诸多限制,思路虽然复杂,但还是可以写下去的。下面给出我写的代码的SourceMontor的生成报表内容以及PowerDesigner的相应类图。
采坑心得
在处理题目集4-6时,我学会了避免一些常见错误,并且掌握了一些关键的策略。彻底理解题目的要求非常重要,因为题目可能会包含复杂的描述或隐含条件。我会仔细阅读题目,确保没有误解其意图。还有我特别关注边界情况,比如空输入或极端值,这有助于提高程序的鲁棒性。此外,拥有扎实的基础知诀,如熟练掌握编程语言、算法和数据结构等,对解题也极为重要。在时间管理上,我会合理分配,优先解决简单题目,确保不会在困难题目上耗费太多时间。审题的准确性也非常关键,我会仔继注意题目中的提示和说明,防止因忽视关键信息而出错。在处理编程题时,注意语法、变量命名和逻辑错误等细节问题也很重要,因为这些小错误都可能导致程序失败。最后,我也会利用各种资源,如参考书籍、在线教程和论坛等,帮助自己解决问题,同时努力保持独立思考的能力。总之,为了应对题目集4-6,全面准备、细心审题、注意细节和有效利用时间是关键。
改进建议
-
代码重构和优化:可以重新设计类之间的关系,并且要多一些控制类和接口类,尽量做到单一职责。
-
细化需求与预期:在进行编码前,应明确每个题目的具体需求和预期输出。这有助于精确定位所需功能和性能标准,从而编写出更符合目标的代码。
-
共同学习:定期与同学一起讨论题目集。通过对等学习和讨论,不仅可以提升代码质量,还能促进团队成员的技能提升和知识共享。
-
持续学习和更新:跟踪最新的编程技术和最佳实践,持续学习和更新题目集中的代码,保持其与时俱进。
总结
学到的内容:
-
编程技能的提升:通过解答各种编程题目,我不仅提升了自己的编程技能,还深化了对算法和数据结构的了解。我学会了如何设计和实现高效的代码来解决问题。
-
问题解决能力的增强:面对不同类型的题目,我培养了分析问题、清晰思考和找到解决方案的能力。这个过程加强了我解决复杂问题的信心和耐心。
-
学习方法和技巧的探索:在解题过程中,我尝试并采纳了多种学习方法和技巧,如查阅资料、参考案例分析、与同学讨论等,这帮助我形成了一套适合自己的学习策略。
-
团队合作与交流的经验:在解题的过程中,我积极与同学们交流和合作,通过共同讨论问题的解决方案,我学到了团队协作和经验分享的重要性。
进一步学习和研究的方向:
-
深化算法和数据结构的学习:虽然已掌握了一些基础知识,但我计划继续深入研究更高级的算法和数据结构,以提高解决问题的能力和效率。
-
提升编程技术:我期望通过学习更多编程语言和开发工具,不断提高自己的编程水平,并掌握更多实用的编程技巧,以提升代码质量和开发效率。
-
增强实践经验:我希望通过参与更多编程项目和实际操作,积累实践经验,更好地将理论知识应用于解决实际问题。
-
拓宽知识领域:我打算探索计算机科学的其他分支,如计算机网络、数据库、人工智能等,这将帮助我更全面地理解和运用计算机科学知识。
对教学及课程的改进建议:
-
增设实践环节:建议在课程中添加更多实践环节,让学生通过实际操作来加深对知识的理解和掌握。
-
提供丰富的学习资源:建议为学生提供更多的学习材料和支持,如教科书、在线课程、实验设备等,以促进他们的学习和发展。
-
增强课程吸引力:建议通过设计有趣且具有吸引力的课程内容和教学方法,激发学生的学习兴趣和主动性,提高学习成效。
-
注重个性化教学:建议根据学生的个别学习需求和能力差异,采取灵活的教学方式和评估方法,以满足不同学生的需求。
作业、实验与课程组织方式的改进建议:
-
强化课堂互动:建议在课堂上增加互动和学生参与,运用启发式教学和案例讨论来引导学生思考和参与,从而提高教学效率。
-
扩展课下学习资源:建议为学生提供更多样化的课下学习资源,如在线平台和学习指导,帮助他们巩固和拓宽知识。
-
实施定期评估:建议定期对学生的学习情况进行反馈和评估,及时调整教学内容和方法,确保教学的连贯性和有效性。