作业分析
第四次大作业有三道题目,分别是蛟龙号提取数字字符并计算它们的和,四边形判断凹凸性、被直线分为两个三角形的面积、点是否在四边形的内部,银行业务类。第一题只需要使用matcher.find()去寻找格式为\\d+的子串即可,或者使用split(”\\D+“)来分隔数字字符,总体难度偏易。第三题银行业务类要实现存款和取钱以及显示余额,功能虽多但都是纸老虎,只需在银行类中写几个方法就可以了,稍微了解面向对象编程的人都能够轻松解决。最难的是四边形,这道题考察的应该是编程思维和对类的设计。如果没有提前对类进行设计的话,代码会特别长并且有许多方法,看起来繁杂,让人失去阅读的欲望。我们要先搞清楚四边形有哪些属性和状态,诸如点、线、平行、点距等,接着我们可以以此来设计我们的类,通过这些属性和方法再来构建更复杂的类。
第五次大作业
第五次大作业的题目与五边形有关,和四边形相比,难度骤然提升,而且还集合了四边形和三角线,如果之前的题目都一头雾水的话,那这道题简直就是降维打击,对思维以及对知识的运用都是极大的考验。不仅考察个人的编程能力、思维,还要从长题干中提取关键信息。不过五边形和四边形有相似之处,有许多方法可以复用。在学习了继承后,我们可以创建多边形父类,这可以大大简化代码。如果从涉及的知识点来说并不多,无非就是继承、容器之类的知识点,我觉得这道题的难点在于需要大量分类讨论,需要考虑点的顺序、重合、线的重合、相交判断、面的位置关系等,很难完全分类,因此提前规划至关重要,不然在编写代码时发现问题可能需要修改大量代码。
期中考试
期中考试第一题是根据类图来对类进行设计,由于只需将题目的要求逐一转换成代码,因此难度偏易。第二题使用抽象、继承和多态来对第一题进行重构,和第一题类似,在原有的代码的基础上添加一个抽象类,并添加几个子类,题目已经把要求和怎么操作都清晰地告诉我们了,只需要按照它所说的进行编写就足够了。第三题创建ArrayList容器,ArrayList是含有add()和remove()方法的,这道题是让我们自己实现这两个方法,在学习c语言的时候就已经实现过这些功能。综合来看,这次期中考试难度中规中矩。
踩坑心得
提交代码的时候要注意把所有import语句都复制进去。在做题之前一定要先设计好大致的结构,不要着急上手,要明确类的属性、方法,类与类之间的关系等,如果一开始的方向就错了,要进行修改会很困难。
改进建议
四边形那道题可以运用继承来简化代码,同时还能够提高代码的复用性,便于添加新的代码。
总结
通过这几次作业,我知道了自己和别人之间的差距有多大,也知道了我还有很多知识还没有完全掌握。我学会了使用叉积来判断两条线段是否相交,学会了使用ArrayList以及它的add()、remove()等方法,知道如何使用继承和多态以及instanceof运算符。我对接口和抽象类的认识还不够,在今后应该加强相关的练习。我认为作业难度应该循序渐进,还有就是应该增加难度较低的题目达到巩固的目的。