前三次oo作业总结
一,前言
第一次作业
由于是第一次作业,难度较低,主要是让我们熟悉java的输入输出,循环结构的基础,感受其与c语言的不同之处和相似之处,像计算年利率,身体质量指数计算,快递运费这些题,需要用到简单的if语句,If语句的嵌套,分支,让我们熟悉java的if语句,九九乘法表让我们认识java中的双循环,去掉重复字符,有重复数据等题则是让我们熟悉string类的各种方法,总的来说,第一次作业虽然有12题,题量不少,但主要是为了让我们从c语言中过度到java,因此不算难,也让我们对java有了一个初步的了解。
第二次作业第二次作业共九题,前七题难度与第一次作业相差不大,第8,9题难度有所上升,前八题依然是对If语句及循环结构的考察,进一步熟悉这两种基础,第九题则开始接触到了“java中的函数”——方法,有参构造,无参构造等构造方法的类型,同时第九题复杂程度也有所提高,需要思考,规划如何设计方法,实现题目要求,判断下一天,要考虑闰年,闰月,一年的最后一天,一月的最后一天这些因素,总之,不仅是认识到方法,也让我们知道,编程还需要仔细思考。
第三次作业
第三次作业难度飙升啊(o 。o)。在第三次作业中,开始接触并熟悉java中重要的东西,类与对象。
类:把具有相同属性和行为的一类对象抽象为类。类是抽象概念,如人类、犬类等,无法具体到每个实体。
对象:某个类的一个实体,当有了对象后,这些属性便有了属性值,行为也就有了相应的意义。
类是描述某一对象的统称,对象是这个类的一个实例而已。有类之后就能根据这个类来产生具体的对象。一类对象所具备的共同属性和行为(方法)都在类中定义。
同时知道了面向对象的三大特性之一,封装。
封装:保护性和易用性
封装有很多表现形式,private实现属性和方法的封装只是其中一种。
权限修饰符:在Java中,权限修饰符指的是所修饰的属性、方法或者类可见的范围有多大。
一共有四大访问修饰修饰符,可见的范围由小到大依次为 :
private(私有的):被private 修饰的属性和方法,只在当前类可见,出了类的{ },对外就完全隐藏了,外部不知道有其存在。
default(不需要写这个关键字,什么权限也没有(包访问权限))
protected(继承访问权限)
public(公共的、公开的):被public 修饰的,在当前程序(项目)中都是可见并且可以使用的。
第三次作业是包含知识相对来说最复杂的一次作业,但题量较少,为我们留下了足够时间去学习相关知识。
二,设计与分析
题目集3:
7-3
这次题目中已经给出了相关类图,只需构造题目给出的类和方法去构造就ok了。

题目要我们判断输入的日期是否合法,及输出·下一天,因此需要构造方法checkInputValidity来判断是否合法,同时又要考虑闰年这些因素,故构造方法isLeapYear()来判断是否为闰年,最后用方法getNextDate来获得下一天。
7-4
本题相当于第三题的升级版,从下一天升级到下n天,前n天等,因此,大体上可沿用第三题所构造的类及方法。
public boolean checkInputValidity();//检测输入的年、月、日是否合法
public boolean isLeapYear(int year);//判断year是否为闰年
public DateUtil getNextNDays(int n);//取得year-month-day的下n天日期
public DateUtil getPreviousNDays(int n);//取得year-month-day的前n天日期
public boolean compareDates(DateUtil date);//比较当前日期与date的大小(先后)
public boolean equalTwoDates(DateUtil date);//判断两个日期是否相等
public int getDaysofDates(DateUtil date);//求当前日期与date之间相差的天数
public String showDate();//以“year-month-day”格式返回日期值

三,踩坑心得
1.在使用eclipse时因为不熟练常常出现一些操作性问题,伤害不大,但是烦人又费时
2.不会设置测试用例,面对多且杂的测试点一筹莫展,只会把源码看一遍又一遍。好在老师前几天讲课讲了如何设置测试点,很有帮助
3.一定要看清题目要求,及格式要求啊!!!

像这题,因为本人没有看清题目输入语句要求,导致答案错误,当时疯狂提交,心态炸裂啊,明明对了,为什么错了嘞,直到询问大佬,才分现是因为自己没看清题目(@@),心累。。。,改完输出格式后,立马得了全分,所以说,眼神不好折磨自己啊。
4.面向对象编程不能注重于按步骤一步一步解决问题,而应该注重于将问题中的部分分成各个对象,各司其职,谁做了什么事,谁又做了什么事,他们共同作用的结果解决了一件事。
可以说,面向对象编程更接近现实世界。程序的对象就像现实世界中的个体,他们通过发送消息告知彼此所要做的(方法的调用)。OO设计的主要任务是将设计尽量和现实世界的事物一致化。尽量使程序设计的思路符合现实世界事物的规律。类和对象是OO编程中最重要最基本的两个元素,在设计时,先将找到要处理的各个对象,再找到各个对象的共同的祖先,逐层抽象。最后确立各个类之间的继承关系。
5.编写类时需要充分利用类的单一职责的原则,通过类图编写类的属性和方法的作用域,类与类之间的关系,也要注意类的继承关系,关注子类对父类方法的重写,子类对父类属性的使用。
四,改进建议
降低耦合度,模块的功能设计得尽可能单一,属性和方法少用public,多用private,还有就是避免把一个类作为另一个类的属性。
五,总结
1.面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用
2.类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。
3.改进建议:希望可以在题目集结束后再开放题目,但不记入分数,可以让没写完,或者不够完美的同学继续改进。

浙公网安备 33010602011771号