OO第二单元(5-8周)作业总结要求
19201621—肖俊杰
一.前言
本次的作业刚开始接触的时候还是感觉挺难的,毕竟对于一些函数关系上的处理还是把握的不到位。而这次作业主要表现在类的继承方面,如果没有在开始之前确定好不同类之间的继承关系,在写代码时就容易出现逻辑混乱,导致牛头不对马嘴,写出的代码就如大杂烩一般,看似包容了很多,但实际上相应的功能并不能实现。
二.作业过程总结
- 这段时间的三次作业是一个由简到难得过程,向我们展现了面向对象的封装性、继承性与多态性这三大技术特性,让我对于面向对象有了更深得理解。作业从简单的用类解决问题到父类与子类的关系再到继承问题,给了我们这些初学者一个清晰的脉络与蓝图,层层递进,给足了我们消化与吸收的过程。作业的难度在不断增加,我们也在绞尽脑汁思考解决问题的方法,没有解决问题可能会让我觉都睡不好,但解决问题后的那种喜悦确实无可比拟的。
- 首先对于面向对象的封装性,我们通过将类中的属性用private修饰使这些属性对其他类不可见,以此来达到类的封装目的,但是这些属性在类内部被访问时,需要使用this关键字。对属性进行封装后,其他类就无法访问这些属性。所以需要实现该属性的get和set方法,使得它们能被外部访问。这些在本次三个作业的第一次练习中就体现出来了,算是一种最基本的操作,为后面我们更深一步的学习打下基础。至于后面的作业我们就逐渐接触到了父类与子类之间的继承关系了,父类只有一个,父业子继是一个很形象的比喻。但是子类除了通过继承获取父类的结构之外,还可以定义自己特有的成分,而父类则可以拥有多个子类等等,作业中不同的类之间的关系真的犹如父与子一般,生动形象,学起来别有一般风味。最后我们所接触到的面向对象的多态性则是在父类与子类的继承关系上的一种拓展。主要表现为子类可以重新定义从父类那里所继承过来的结构。
- 当然在解决作业中种种问题的过程中少不了一些遇到的难点。刚开始对于类中的私有制的概念不是太清楚,导致调用数据时总是会出现一些差错,很是烦人,在仔细的再次学习了一遍有关private的相关知识后便解决了。还有一个重要的问题就是有关多态性方面的问题了,对于类的创建与调用如果不明确的话,很容易出现问题,父类与子类之间虽然存在继承关系,但是不是什么都能乱串的,这点要注意区分。
- 作业的难度虽然在逐步增加,但是我们的熟练度也在逐步上升。只是在解决问题的初期耗费的时间比较多了罢,后面的作业虽然更难了,但所花费的时间并没有增加。因为在做作业的过程中我们也会查阅相关资料进行知识的拓展。
- 在写完作业后我发现一个很大的问题,那就是因为在写代码前没有认真做好规划,在写代码时还会因为一些粗心导致测试点通不过,最终反复检查浪费了很多时间。本来题目该怎么去写都是知道的,但是因为在过程中的粗心,导致我不得一遍又一遍的检查,平白无故花了更多的时间。从今以后我在写代码的时候一定要严谨,否则最后倒霉的还是自己。
三.OO设计心得
1.面向对象包括封装·继承·多态三大特性。首先封装性体现了一个类对于私有属性的概念,继而,继承性表达了子类从父类继承相关财产的性质,而多态性更像是继承性的拓展,子类不仅是从父类那里继承了财产,他根据这些财产创造出了新的属于自己的财产,就像是一种散发的行为。下面来说说这三个特性的概念:
封装的概念: 封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。封装的目的在于保护信息,
继承的概念: 如同生活中的子女继承父母拥有的所有财产,程序中的继承性是指子类拥有父类数据结构的方法和机制,这是类之间的一种关系;继承只能是单继承。
多态的概念: 面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。
2.单一职责原则是指就一个类而言,应该仅有一个引起它变化的原因。
就是说一个类只做一件事,只关注它必须关注的,用哲学的语言来说,就是只抓主要矛盾。如果一个类承担了太多的职责,那就意味着这个类和其它程序集,或其它类总是互相影响,会造成整个程序逻辑混乱,既不利于程序的健壮性,也不利于后期维护。所以在设计之前,就要规划好各个类的,各个程序集的职责,显示界面的就只关心界面显示,不要再显示界面的类里去处理后台要做的事;读写数据库的类,就只需要负责把数据读出来和将数据保存进去,而不应该还要去考虑界面如何显示。控制层就只管控制,当前需要那些操作。那么这些过程中的复杂操作,算法呢?那就再新建类吧。反正就遵循一点,这个类只做一件事,并且只有一个地方能影响它。
然而什么是开闭原则呢?一个类、模块、函数等应该对于扩展是开放的,但是对于修改是封闭的,简单说就是当你的系统要升级维护需要对原有的代码进行修改时,可能会将错误引入到了原来的旧代码中,因此,在软件升级维护时,应该尽可能的通过扩展的方式而不是修改原有的代码,虽然在实际开发中,修改原本的代码跟扩展代码都是同时存在的,但是为了程序的可扩展性,在制作初期,应该遵循开闭原则。
3.经过这一段时间有关OO的学习,我发现在这个世界中,万物皆对象。没有什么new一个对象解决不了的问题,如果有,那就再new一个新的对象。说起来很简单,但是其中技巧非常之多。我们的面向对象程序需要具有高内聚,低耦合的特点,具有很强的复用性和扩展性。这需要我们充分理解并且合理运用JAVA封装,继承,多态这三个特点。封装为了程序的安全性,我们代码风格也要求我们进行合理的封装。而最关键的时继承和多态。通过继承,接口,重写等操作,会大大增强我们程序的可扩展性和复用性。
4.有关类的设计就是要做到能够充分调用而不会出现问题,具有很好的修改性,独立性,加强程序的可操作性。
四.测试的理解与实践
1.测试对于编码是很重要的,它为了保证编码完整性与正确性的重要步骤,如果没有这个步骤,编码的质量就没有保证,这样的话,所写的代码就毫无用处,试问谁还愿意使用这样的代码呢?所以我们在编码是绝对不要忘记测试。
2.通过查阅资料,使用Junit进行程序的测试是可行的。但是也要注意一些相关问题,例如测试程序与开发程序的分隔,否则会产生不好的影响。
五.课程收获
这四周的课程使我收获良多,我明白了对待代码要严谨,不能掉以轻心。对于类的使用要慎重,要分得清使用方法,不能错用,乱用。在学习OO时,不要受OP的影响。
六.对课程的建议
1.对于第三阶段的作业我希望可以多出现一些基础题。
2.多将一些样例。

浙公网安备 33010602011771号