OO第一阶段作业总结

1.前言

  针对我们第一阶段的作业(共三次:pta中的作业)发表总结性博客。

2.作业过程总结  

  我通过这三次面向对象程序设计的作业,对面向对象程序设计有了进一步的了解,以前的我学习c语言时都是用面对过程的的方式来完成算法问题,刚开始用OO的思想来解决问题时,仍会不自主的往PO的思维上去靠拢,而这三次作业的迭代慢慢的将我向OO的方向进行引导。

(1).第一次作业

  第一次作业主要最基本的题目(1.计算税率;2.坐标点所在范围;3.电话键盘字母数字转换;4.判断三角形类型;5.统计最大数出现次数。),通过第一次的作业我了解到java程序的编写语法与C有基本相同也有区别,也同时通过练习了解其不同之处,便于之后更加顺利的进行更加深入的学习。从最简单的整数型数字的运算输出,再到浮点数的运算,最后到对字符串进行操作。运用到循环,判断等方法。考虑到是第一次作业没有任何要求,所用时间也较短大概在4小时左右。

(2).第二次作业

  第二次作业在要求上有所提升每道题都要创建方法来完成求解,运用方法的好处在于减少了大量的重复代码,方便维护。在不同的三道判断闰年星期几、求下一天、求前N天中都要对年份是否为闰年进行判断,直接写出一个闰年判断的方法,有效减少了重复代码。在这次作业中主要遇到的问题是计算两个日期之间的天数问题,一开始12个月份用12个判断来计算,代码较长比较复杂,纠错也较为困难,后创建一个二维数组来存储非闰年与闰年每个月的天数,方便使用简化程序。本次作业相较于第一次作业更为复杂用时大概在6小时左右。

(3).第三次作业

  第三次作业的题目都要求创建类来解答,而且除了第一题以外的三题都是日期类设计,但却是不同的要求,不同的类以及类的关系组成。其中第一题最为简单只要一个主函数和一个方法类,方法类中用8个方法实现所有的功能,而第二题给出了类图,分别创建Year、Month、Day、DateUtil这四个类逐一聚合,由DateUtil包含Day,Day包含Month,Month包含Year。

 

 

 第三题也是给出类图,按照类图来解答同样的类之间也是由聚合关系组成,但区别在于第三题的聚合,是由DateUtil包含Day、Month、Year,也就是说相对于第二题中只有Year可以单独存在,第三题中Day、Month、Year三者都可以单独存在。次作业功能一样主要难点在于对于不同要求的类的使用,通过这样的方式让我们去了解OO的思想,只要所创建的对象不同,同样的问题可以给出完全不一样的解题思路。这一次的作业所花的时间也是最多的大概10时,主要的问题在于每个类之间的依赖关系,按照以前的思路便是先写核心的DateUtil再写其他的,但是这样发现很多环节无法继续下去,之后逆向思维先写可以单独存在的再往前推,就容易很多了。

 

 4.OO程序设计的理解

   通过这三次作业以及平时课上所讲的内容,对OO也从原来的一无所知,开始有所了解,从一开始的一个门外汉,渐渐开始明白了一些原则。OO的原则之一就是尽量将职责单一化,一个类中的职责尽可能的少,然后用多个类来完成,而不是只有一个类,该类中包含了所有的职责。此外就是是以对象的思想去解决问题,而不是以解题过程的思想,总体来说你首先思考由谁去干,关键字是名词。比如我的生活。然后我具有一些属性,比如能够睡觉,能够清洁,需要饮食,需要工作。之后去调用。我.床,我.刷牙。作为一个刚刚接触思想,仍然处于磨合期,仍有诸多不足,对OO思想还有很多不理解的地方。这也只有在之后的课程和作业中继续努力。

5.总结以及对测试的看法

  作为一名软件学院的学生,在程序设计方面的的学习也有了一年半,对于代码测试个人感觉是十分重要且必要的,刚写完的代码必然有这诸多问题,而且这些问题也不宜发现,唯有通过测试才能了解到自己的代码在哪些的地方存在不足,测试会让你灵机一现。通常情况下,因为它迫使你去思考边缘情况——零值,10 ^12,null或undefined,我一般刚写完的代码总会出现部分未运行,数值溢出等很多问题,也是在一次次的测试中不断地进行完善,才有了最后能满足需求的代码。而几个关键的测试点便是最小值和最大值的测试,这是最容易出现问题的地方。而且在编写时往往会忽视,比如说你对int a赋值为int的最大值,而int b=a+10这个时候b就已经爆了。所以测试对于程序来说是十分重要且必要的。、

6.课堂建议

  课堂感觉不错,没什么要求。

posted on 2020-04-04 11:40  凣凡凣  阅读(211)  评论(0)    收藏  举报