关于pta题目集7~9总结

一、前言

题目集7对类的继承、多态性使用方法以及接口的应用进行了考察。适逢劳动节,降低题目数量及难度,因此题目集7相对后两次比较容易完成。

然而题目集8难度并没有所提升,设计仿真ATM机系统,重点考核类的封装性及类间关系设计(关联、组合及依赖)而且只有一题。根据题目的要求这里并没有考察到文件操作。

相对题目集8,题目集9对其进行了迭代,这增加了ATM系统的功能。例如,这里增加了跨行存取款的功能,并且增加信了用卡,增加跨行取款的手续费用以及信用卡透支利息。

总的来说,题目难度和数量比较少,因此花在编程的时间比较少。

二、设计与分析

(1)题目集7(7-1)、(7-2)两道题目的递进式设计分析总结

7-1相较于7-2的功能简单,7-2在7-1的基础进行了迭代。

7-2增加了功能将相同的图形分开来,并且将相同的形状的面积进行排序,还有分别对同一形状的总面积进行了相加。

因为在写题目的时候对业务类的概念比较模糊,因此在写这道题的时候没有将一些功能利用业务类来实现,也没实现单一职责。这就导致在做完题目7-1的后,再写题目7-2仍然花费了我不少的时间。

下面列出两道题类,以便于分析这两道题。

这个是7-1的类图

关于pta题目集7~9总结

 

 

 这个是7-2的类图·

关于pta题目集7~9总结

 

 

 我们在这里可以看到两道题都构造了足够多的实体类

但是业务类是不够的。

(2)题目集8和题目集9两道ATM机仿真题目的设计思路分析总结

第八次题目集和第九次题目集都只有一道题,体量是比较少的,但是代码量并没有减少。

第八次题目集构造的ATM比较简单,这有些地方设计不合理、

下面直接看类图

关于pta题目集7~9总结

这里有我犯了一个错误,在写这道题之前,我错误的划分用户和银行的关系,在现实生活中银行和用户的关系应该是关联,而不应该是聚合,虽然在这道题上可以完美的解决问题,但是在现实生活中这样的系统是解决不了任何问题的,因为用户可以在多家银行办理银行卡,而不是像本题样,一个用户只在一个银行上办理银行卡。

下面就是题目集9的迭代

废话不多说,直接上类图

关于pta题目集7~9总结

 

 

 我们看与第八次题目集不同的是,这里的用户和银行之间的关系为关联,两个实体类的耦合度比较低。还有就是相较于题目集8,题目集9的增加了很多的业务类,这样就让实体类之间联系变少,两者间的联系都是通过业务类来联系的。有一点不足的是,这里业务类并没遵循单一原则。

三、采坑心得

看第八次题目集与第九次题目集时,这里的类比较多,很容易分不清两个实体类之间的关系,因此在写代码之前一定要先厘清这些类之间关系,以及增加一些业务类,以免在先代码的时候才发现没有厘清关系而改代码甚至重新写代码,这样很浪费时间。

四、改进建议

1、希望老师能够将一些很多同学都未得满分的题目进行讲解。

2、可以对一些分值较大的测试点进行分割,变成多个小的测试点,这样能够更加直观的得知测试点是什么,并直面得知代码所存在的问题。

3、对一些难度很大的题目,希望能够循序渐进的发布,在水文信息那次作业中,由于类图的设计就比较麻烦,再加上第一次使用正则表达式,就导致出现很多人不能通过的现象。

4、希望能够开展一些平时的练习题,供我们日常练习,保证每天的代码量。

 

五、总结

在这三个阶段的学习中、作业难度在一步步的提升,所设计的知识点也在逐步的增加。第一阶段的作业只是很基础的知识,和C语言很相似,不需要很多的关于Java的知识,很容易过。第二阶段的作业则就是在第一次作业的基础上添加了很多Java的知识点。加入了正则表达式和多态和继承的知识,这就使第二阶段的作业相较于第一阶段的作业难度提升了一个层次。第三阶段则又是在第二阶段的基础上,对难度进行了又一次的提升,在第三阶段的作业中,我们需要充分利用List、Map等知识点,同时对正则表达式、继承多态等知识进行混合运用,这对我们来说是个挑战也是一个很大的提升。

通过这几个阶段学习,磨砺了我们的意志,同时对我的编程能进行了锻炼,初步的了解了集合框架。

上一篇:DNS有异常需要刷新?使用如下bat即可解决


下一篇:【RL-CC】Reinforcement learning-based neural network congestion controller for ATM network