oo第一单元(前四周)作业总结

0.前言

这篇博客是在完成第一阶段三次作业后,为了总结前三次作业而写的,第一阶段完成的并不是十分理想,特别是第三次作业,在第三次作业中第一次用面向对象的方法写代码,写的挺混乱,导致代码太长,运行超时,因为经验不足和不习惯有些面向对象的规则也遵循的不太好

 

 

1.作业过程总结

(1).总结三次作业之间的知识迭代关系;

第一次作业是对Java的基本的语法的练习,语法是最基本的,不会语法的话就写不出代码。有上学期c语言的经验,写的还算流畅。遇到的问题是判断三角形是否是直角三角形的时候实型数平方之后相加并不能直接判断是否与实型数平方相等。

第二次作业难度有所增加,但还不是面向对象,是用面向过程的思路解决了几个和日期相关的问题,只有一个类,不同与第一次作业的是类里开始有多个方法,开始考虑方法与方法之间的关系。考虑该给这个方法什么值,这个方法又该返回什么值。

第三次作业开始初步接触面相对象的编程,开始有多个类,开始考虑类之间的关系。第三次的要求实现的功能是第二次作业的总和和复杂话,第二次n天n属于0到10,而第三次作业n没限制,所以第三次作业情况更多更复杂。第二题和第三第四题要实现的功能是一样的(都是第二次作业要求实现的),但是,第二题只有两个类,第三第四题年月日都分别有个自的类。所以,第二题感觉还是像面向过程,只不过是把实现功能部分写到另一个类。但,在返回值这里,要求返回的返回值不是基本数据类型,是类的引用。这个给我一种目的更加明确的感觉。就想功能是要一个削好的苹果,而这个方法就是拿一个苹果削好后给出去。而第三,四题有五个类,题目给出了图,所以类之间的关系很清楚。类多了给我的感觉是在削苹果的时候可以多个人削,并且每个人固定的一种削法,不用就一个人完成。但是第三题年是月的一部分,月是日的一部分,日再是实现功能的类的一部分。这样用到年的时候就会很麻烦。而第四题年月日之间没关系,只与实现功能的类有关,我感觉这种方式比二题的方法更简单清晰。就想削苹果时要一个一个人之间传递比直接把苹果从来源给削苹果的人更麻烦。

 

(2).如何通过作业逐步从面向过程过渡到面向对象;

目前的作业给我的感觉是用不同的方法实现同一个要求,但是方法一次比一次好,思路一次比一次清晰,从第一次作业只有一个方法到第二次作业多个方法,从第二次作业只有一个类到第三次作业有多个类,从第三次作业的只有两个类到第三第四题有五个类,从第三题的年是月的一部分,月是日的一部分,日再是实现功能的类的一部分到第四题年月日之间没关系,只与实现功能的类有关。从第一次第二次作业的没有对象到第三次的出现对象。

 

(3).作业过程中遇到的问题及解决方法

第一次作业。判断三角形是否是直角三角形的时候实型数平方之后相加并不能直接判断是否与实型数平方相等,因为是无理数。解决方法是转换成整型数。

第三次作业。把返回值全写在if else语句中导致报错。原因是有可能全为假导致没返回值,调整if else语句

通过对n减去相差的年份月份数求下n天时没考虑到日直接加减月份不考虑日会导致2月30号的出现,后面加了一系列if else语句吧格式规范化

没理清逻辑代码位置错了导致越界和数据不对

 

(4).每次作业花费的时间比例

第三次作业画的时间比前俩次之和还多,但实际上,因为第二三四题的功能一样,并且三四题给了图,花的时间大半都在第二题

 

(5).对编程过程的逻辑严谨性的认识及教训

第一次作业第一题让我认识到看清每个数字很重要,当时写错了,后面去一个一个找花的时间就多了

第一次作业第四题让我认识到,每个数据的数据类型很重要,没考虑数据类型直接去比较就会出很多问题

第三次作业第一题让我认识到if else不能乱写,一定要考虑到每种情况

第三次作业第二题让我认识到写之前一定要把思路理清楚再写,不然后面出问题再加if else就会长的过头

第三次作业第三题让我认识到类之间关系很复杂的时候也不能激动,理清类之间关系在写

 

 

2.OO设计心得

  ①面向过程与面向对象的比较

面向过程重点在解决这一次问题,不管里面怎么写,只要给输入,给出正确输出即可。

面向对象就有明确的对象,每个行动有对应的对象,每个对象能做到的事情更简单,更基本,比如使这个对象里的年份加一,这样使得实现问题思路更清晰整理逻辑是更方便

 

②面向对象设计的基本原则理解

每个行动都要有对应对象,比如求下n天的对象就是下n天的日期这个行动就是为了得到这个对象

单一职责原则,每个类不能做他做不到的事请

可以重复利用,这个类做得到的他什么时候都做得到

 

 ③OO编程思维的理解

所有的功能实现都围绕具体对象

复杂的功能是由一个一个简单的功能组成的

 

 

3.测试的理解与实践

如果测试不严谨,在实际应用时遇到了没测试的情况就会产生不可预料的结果,代码会出问题,结果不可控的代码质量是很低的

考虑所有情况中的特殊情况,比如二月最后一天

 

 

4.课程收获

第一阶段我了解了Java的一些基本语法,基本规则,开始尝试用面向对象的思维方式去写,实现从0到有一点点

了解了面向对象的基本规则

 

 

5.对课程的建议

作业截止后把作业的正确代码给大家看,对比参考源码可以更好找出书写习惯的错误和思维的不足

posted @ 2020-04-04 16:46  evilive  阅读(57)  评论(0)    收藏  举报