第三次blog作业

第三次blog作业

一、前言

经过几次作业终于来到第三次博客作业,这几次作业较前两次的难度有所增加,也正因为难度的提升才能发现我们其实还有很多不足,只有发现问题,解决问题才是我们作业真正的目的,有好多次根本无从下手常常因为PTA作业搞得焦头烂额,知识点也更加难以理解,从刚知道类、聚合、继承、聚合、的小白,直接上升一个难度什么时候用那个,面对对象的思想更加重视最后几次作业更是将对象可能想到想法,尽可能的实现可以说非常具有挑战性,代码量也是上升一个台阶。特别是到题目集八和题目集九,刚开始非常折磨思路非常的不清晰,总是想不明白账户和卡的关系总是混淆,刚开始也花了不少的时间解决这个问题,老师也延长了ATM的提交时间,在课堂上大概给我们讲了用户,账户,银联,银行,ATM之间的关系。听完分析之后大概有了一点清晰的方向。虽然现在都是微信支付,刷脸支付成为我们日常的支付方式。再加上大数据等各种新鲜事物的革新,我们现在也对存取钱的方式和过程越来越模糊。通过后两次的题目集我发现,我在生活方面的基本常识并不是很丰富,甚至感觉通过题目集我感觉连最基本的关系才搞明白。也越来越发现,我们的专业对生活有巨大的指导意义。

二、题目集七

一、(7-1)卡片排序问题

实验目的:掌握类的继承、多态性使用方法以及接口的应用。

涉及简单的排序和图形类型的基本判断,通过调用动态数组进行排序,此题目集第一道题还好实现,借鉴了CSDN的一些资料,刚开始敲的时候对多态的运用和理解还是有点欠缺,代码总体好实现。

踩坑心得:

刚开始理解多态,在代码的实现方面开始对shape的创建有点问题,想把各个图形的都存进去显然的理解是错误的。

类图关系

 

 Rectangle Trapezoid Circle Triangle 继承来自父类Shape的属性

Source Monitor效果图展示

 

 第一题总体来说实现比较容易

题目集(7-2)题目集

题目集2在题目集一的基础上进行进一步的延申,题目集二在题目集一填入Comparable、Comparator 接口的应用,再其次此题目将各个图形分组,然后能够对每组内的卡片根据面积值从大到小进行排序,同时求出该组内所有卡片 的面积之和,最后求出每组卡片面积之和中的最大值。刚开始做这道题提交就通过了,上一道题目集过的几个点,在三张卡片测试的后两个点没有得分。也就是刚开始的分组我分乱了。

踩坑心得:在卡片分组问题上我分的吧各个图片分在同一个数组里面,呈现出来的也是散乱的,可以说是没有分组。这也是我应该提升的地方,没有看实验报告的要求随便分组,导致我后面几个点也因为我随便分组,导致面积求和也是错误的,也就是说我刚开始就没对相应图形进行分组。剩下的功能和上一道题基本实现的是一个功能,进行的还算顺利。

类图关系,因为是上一道题的延申,类图大概相似:

 

 Rectangle Trapezoid Circle Triangle 继承来自父类Shape的属性

Source Monitor效果图展示

 

 鉴于前两道题目集对继承和多态的侧重练习,特别是多态让我有了更进一步的理解,多态体现为父类引用变量可以指向子类对象,必须有子父类关系。课后我也去CSDN进行多态系统性的了解,这里面有一个值得注意的是:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。目前我对多态的理解1、多态是同一个行为具有多个不同表现形式或形态的能力。2、 多态就是同一个接口,进行不同的操作。在查阅资料的同时,我了解到多态的两种转型,我们应该用的是第一种类型,向上转型:多态本身就是向上转型过的过程。适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。

三、题目集八:

前言:当我总结到这个题目集的时候,它给我带来的阴影我还是挥散不去,对它第一印象简直就是折磨。刚开始无从下手,在哪纠结怎么去写,最后磨蹭到最后还是没写出来,老师在课上提点几句,自己给点心理暗示,我感觉我行了,大概的样子做出来,也就是初始化说白了,大概关系还是听老师讲解能理解个一二。但对跨行取款,我的余额是在账户上还是在卡上,我还是在哪没想明白,在同学的提醒下逐渐明白,我应该把余额放到账户里面,感觉我生活上最基本的常识的不知道,刚开始我问道这个问题同学还给我嘲讽了。虽然初始化,和各个类之间的关系逐渐理顺,但是在ATM机类我只知道在哪里查找账号户,根本没往ATM那去想,还是没注意实验报告的要求,就是没看仔细。

类图:构造函数类图展示:

字段:

 

 方法:

 

 属性:

 

 内部类;

 

Source Monitor效果图展示

 

 

 总的来说第八次题目集更贴近我们日常生活,更具有现实意义。在代码实现方面起步有些困难,但是分清楚之间的关系还是能写出来的,代码量也是比以往的量有不小的提升,完全运用到之前题目集六七的所有知识点,是一道综合能力极强的题。从构造到具体到每个类的功能,真是煞费苦心,题目集虽难对我们也是一个挑战,对我们的编程能力也是一个阶段的提升。这也是我们临近学期末的一个考验,我们是否真的理解JAVA的面向对象的思维大的一个考验。在完成此题也向同学请教了不少,我们一起讨论怎么入手,分享自己一些独特的见解,我感觉编程不在是向往常一样自己面对几道极难的题目集在哪苦恼。在同学之间的讨论中我也学到了不少的方法,和比较特别的想法。代码虽完成但是可复用性,和拓展性才是我们值得考虑的方面,当你在遇到相同的问题,但是之前的代码不能扩展哪又有什么意义,也不能复用。我们在设计之初就应该想到此类问题,这也是老师一直引导我们的编程思想。我在完成这个作业之后大概浏览了我整个程序,嵌套的if语句,我感觉这是C语言给我根深蒂固的思想想不到用其他的方法去解决类似的问题,我要学习的地方还有很多,希望在遇到相同问题或者相同的错误能及时改正。

四、题目集九

前言:在第八次题目集的基础上功能更加复杂多变,上次卡均为借记卡(不能透支),且不允 许跨行办理相关业务。那这次题目集也就是针对以上问题的拓展,根据实际生活的需要之前的代码上增加新的功能,也就是代码的可拓展性,在这次题目集上充分展现出来。但是这次题目集用的不是我们上一道的代码,老师把他上次的代码拿出来,再增加功能的同时,尽可能对他的代码进行完善。难度又上升了一个高度,在老师上课的指点下大概有了一点的大体思路,写起来还算顺利可能有上一次代码的基础的原因吧。在之前的题目集上增加了中国农业银行,在之前的基础上各个银行增加贷记卡,进行跨行取款的操作。

 

 在跨行取款透支,和借记卡跨行取全部余额实现,在 Withdraw类加属性amount在校验取款金额超过余额的进行多个if-else语句判断

 

 增加取款更新操作

 

 代码的复杂度高的离谱if-else语句和while语句的嵌套使用,这也是我目前需要提升的地方

 

 类图:

 

 DeibtAccount和CreditAccount分别继承Account的属性。下面是属性类图:

 

 各个类方法类图展示:

 

 

 

 构造函数类图展示:

 

 Source Monitor效果图展示:

 

 五、Blog总结

这是本学期的最后一次Blog总结,从刚开始接触写博客感觉很拘谨,到目前写过三次,每次Blog总结都有不同的心情,从第一次的自我反思,刚接触JAVA的初学者,到第二次感慨JAVA难学的悲愤大学生,到目前第三次对JAVA算是刚入门的学生,每次写博客的心情都都不同。回顾之前两次的Blog作业每次都有不小的收获。代码量难度也是从每次作业中不断提升,这也正是考验我们编程能力的鉴证。博客也是我们每次阶段性总结的笔记,在这里能看到我们的不足和收获。第三次博客作业总结也是前面作业的基础,到最后总结的大作业,虽然有些艰难但是怎么说也算活这出来了。经过一个学期的JAVA学习,真正算理解我们学习的专业与生活是哪么密不可分,面向对象的思维是JAVA学习中所学到的。总之JAVA学习还是挺折磨的,等完成一道题或多或少也有一些成就感,但是折磨占一大部分。希望自己日后还能在提高自己的编程水平,在生活上也要学习敲PTA的精神,真是逼到不行才能知道自己原来不吃饭也能挺能坚持的。

 

posted @ 2021-06-26 19:49  无情码农敲就完了  阅读(63)  评论(0)    收藏  举报