博客作业__OO第二单元(5-8周)作业总结

  1. 前言

后面的几次作业难度明显比前几周的作业难度提高了很多,做起来有一些吃力,而且很多测试点越来越考虑细节方面,比较令人头疼,第四次作业从发布一直写道周三才写完,第五次和第六次相比来说要更简单,但是在细节方面更加考验思维的完整性。

下图是水文数据的提交截图

 

  1. 作业过程总结

①    三次作业主要涉及了java程序设计的多态,继承,抽象类等概念,因为这些概念像类的概念一样,在c语言中没有涉及过,这可能也是编写更加吃力的原因之一。

②     

(1)      封装性:封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装的思想,在Java中通常通过建立一个实体类,用来封装对象的属性和行为,通过setXxx()和getXxx()方法封装起来;

(2)      继承性:简单来说就是使子类的对象拥有父类的全部属性和行为,同时可以增添自己的所特有的属性和行为。这样可以节省写共同具有的属性和方法代码的时间,有利于代码的复用,这就是继承的基本思想。软件的代码使用继承思想可以缩短软件开发的时间,复用那些已经定义好的类可以提高系统和软件的性能,减少系统和软件在使用过程中出现错误的几率;

(3)      多态性:简单来说就是一个程序中同名的多个不同方法共存的情况,通常使用方法的重载和重写(也叫覆盖)来实现类的多态性,多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类,多态的实现并不依赖具体类,而是依赖抽象类和接口,在多态的机制中,父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体过程,通过继承父类来实现,而比抽象类更方便的是将抽象类定义为接口。

③     

(1)      如何将输入的一行字符分割开?使用

 

用分割函数可以将输入的字符串分开提取所需要的部分。

(2)      如何去除空格?

 

(3)      正则表达式不是简单的匹配某一个格式就行,要多种情况都考虑到。

(4)      在使用继承抽象类的时候,不熟悉抽象类的属性,在构造函数的时候使用对象的属性出错。

(5)      在重写ToString和compareTo函数的时候,没有理解好原函数本来的意义,在return的参数上理解错误。compareTo的比较,1为大,0为相等,-1为小于。

④    第四次作业是所有作业里花的时间最久的,一是第一题的需求比较多,UML图比较复杂,二是要自学正则表达式和一些其他的东西,花了很多时间,大概花了三天才满分;第五次作业的难度相比于前两次难度减少,但总体也是属于比较难的一次,好在题目量只有两题,花了一天半写完;第六次作业整体难度适中,在发布的当天基本写完,但是有一个0测试点,在第二天才测试通过。

⑤    在编程过程中,要对编程所面向的对象有清楚的认识,如果题目没有给出UML图,自己就要先画好一个UML图并且考虑到一些特殊情况;如果题目给出了UML图,就要先依照题目的文字描述来理解题目所给出的UML图,要考虑UML图中各个类的关系,和各个事件在本次代码中所起到的作用;还要考虑输入输出的格式和输入数据的校验,尤其要考虑会发生的一些特殊情况,不能在代码打完了才开始加特殊情况判断,会增添很多麻烦。

  1. OO设计心得

①    抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节;继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的回时候,可以在一个已答经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容;多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。抽象是为后面继承打下基础,使得继承的类都在一个框架内完成,多态是为了使得对具有更多可操作性。

②     (1)单一职责原则:所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。

(2)“开-闭”原则:“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。

③    在面向过程设计时,只用考虑每一步的结果应该是什么,但是在面向对象程序设计时,需要先考虑目标程序的大致结构,如何画出UML图,考虑有没有什么特殊情况,如何根据UML图来建立所需要的类和对象等等。

④    类对于我来说是一个新的概念,类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。在面向对象中,类可以说是最重要的概念,是作为面向对象程序设计的基础,如果不能掌握类的特性,例如抽象类等,就很难以面向对象的思维去编写代码,代码就会显得杂乱无章,在后续对代码进行扩充的时候会显得手足无措。

  1. 测试的理解与实践

①    测试对于程序设计是很重要的一步,关系到你设计的程序在实际情况下能否顺利运行,在面向对象程序设计中,测试更加更加重要,因为在面向过程中,每一个步骤都有它对应的答案和结果,是一步一步递进运行的;但是在面向对象的程序设计中,每个类、每个对象都意味着现实的一个实体,具有多样性,意味着测试更加重要了。

②    JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。 本教程将教你用 Java 编程语言做单元测试时,如何使用 JUnit。不要认为压力大,就不写测试代码。相反编写测试代码会使你的压力逐渐减轻,因为通过编写测试代码,你对类的行为有了确切的认识。你会更快地编写出有效率地工作代码。

  1. 课程收获

在面向对象编程时还会有面向过程的思路,在遇到不能通过的测试点时,首相想的是如何通过这个测试点,而不是找自己的类和事件有什么遗漏,就会出现拆东墙补西墙的情况,通过了一个测试点,之前通过的测试点又错了,所以在之后的练习中要更全面的考虑问题。

  1. 对课程的建议

①    第三阶段因为各个实验比较多,希望难度向第六次作业一样,题目难度适中、题目量适中。

②    希望上课能多讲示例,因为不结合实际题目,只有几行代码的话,在遇到题目时还是不清楚应该怎么用。

猜你喜欢

转载自www.cnblogs.com/okay824/p/12804190.html