OO作业总结

. 前言

   本次博客主要记录所有作业后的思考,出现的问题和我的解决办法。OO设计已经接近尾声,Java学习也接近尾声,是时候对这一学期OO设计及作业进行一次总结和思考。

.作业过程总结

   从homework1到homework11,课程设计的难度在不断提升。学习的内容也是不断深入,从一开始学习java的输入和正确的main函数定义,到homework2在上一次作业的基础上学习方法的定义创建和调用。前两次作业也算是延续了C语言的基础,掌握Java语言的语法,从面向过程到面向对象,一步一步地改进,让我们更好的认识到面向过程和面向对象的区别和各自的优缺点。而homewor3开始学习类的定义和类属性的类型定义,homework4则提高难度,让我们充分了解和认识类的用法。Homweork5则是关于类的继承,homework6在继承上再引入java的多态性。Homework7则是考验我们对comperable排序法的使用。再到homework9的雨刮小程序让我们对代码进行重构,对学生将代码运用来解决现实问题起到了提升实践的能力。并且为了减少代码的耦合性引入了代理类。homework10遍历源码并且统计关键字的出现次数,再用comperable进行排序输出,用正则表达式,将注释和其他不用的代码删去,再遍历代码一个一个重复的进行字节比对,再依次输出结果。最后homework11是运用栈的知识,先进后出,先将数据压入两个栈里,一个存数据,一个存运算符。

.OO设计心得

1.三大技术特性:

封装可以减少代码冗余,同时兼顾密封性和便利性,为之后的继承多态提供基础;

继承同样可以减少代码冗余,也可以方便对通用属性的统一修改,使代码更有条理,为多态打下基础;

多态可以使子类更加丰富,功能多样,同时利用继承和封装使其更加简洁易修改。

2.几种原则的理解:

(1)单一职责原则:每个类做好自己的事情,尽量不与其他类功能重复,

(2)开闭原则:要对扩展开放,对修改关闭。就像上次那个雨刷的随堂作业,利用控制类来集成很多类,利用抽象类来使扩展性增强。但这个其实是一个矛盾的点,当追求过多的可扩展性就会导致代码臃肿,而追求代码代码简洁又会对扩展性造成影响,所以这里需要根据实际情况来平衡选择。那次的代码我就觉得有些不合实际,有些臃肿了,我认为既然雨刷的工作模式几乎使固定的,就没有必要在一开始设计的时候就绞尽脑汁去想一些极特殊情况,但是其他的扩展还是有必要的。

(3)里氏代换原则:在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,遵循这个原则可以让我们能更加抽象的编写代码,不用过于纠结对象会如何实例化,修改的时候也可以只修改子类而不用担心用到这个子类的代码出现问题。

(4)依赖倒置原则:可以作为手段实现开闭原则,要与里氏代换原则和开闭原则一起学习使用。

(5)迪米特法则:这是一个为了减少耦合度而存在的法则,非常重要。

3.利用一个一个的对象去完成任务,主要的精力放在需要什么对象,怎么创建对象,怎么运用对象上。

.测试的理解与实践

1.写代码的时候就算提前考虑了很多种情况,也不可能每次都面面俱到,这个时候就需要测试来发现问题,并进行修改

2.当代码复杂起来了,就需要及时的针对没给类进行测试,这样测试过的类之后就不需要重复测试,易于排查和锁定问题,同时减少找错误的时间

.整个课程的收获

   1.课前的预习和课后的复习很重要

   2.遇到不会的知识点要及时百度或者向同学请教

   3.编程这种技术类的东西就是要与时俱进,不断学习自己不知道的东西

.对课程的建议

1. 第三阶段作业难度、题量的建议:

希望老师能体谅我们这些小菜鸟的解题速度,类图能简单实用一些

2. 课程内容讲解方面的建议

希望老师能够针对我们这几次的作业讲解一下,毕竟不是所有同学都能过测试点…

posted @ 2020-06-10 16:42  ShaulChen  阅读(83)  评论(0)    收藏  举报