学习OO的学习的最终总结
0.前言:
时间过得真快,Java课程学习接近尾声,本次博客就来总结一下本学期学习的Java内容。
1.作业过程总结:
①
从开始的面向过程到后来的面向对象;
到后来的封装,继承,多态;
再到后来的Java异常和异常处理;
接着代码的界面可视化处理。
1.前面三次作业很好地解释了面对过程和面对对象之间的区别,并且让我们认识到了面向对象的优越之处;
2.接着后来的三次作业让我们学习到了代码的封装继承和多态三种情况,并且让我们学习到了如何让代码更容易在修改某个部分的时候不影响到其他代码部分,让代码既可以紧密的连结,又可以方便拆分,提高了代码程序的可维护性。
3.后来几次的pta作业大部分是以单个题目的形式出现,更多的要求是需要我们运用之前几次作业中的内容再结合后来学习的部分内容编写出符合题目要求的代码程序,这时候的题目的难度跟之前的题目的难度简直不在同一个等级,之前的题目大部分都给出了类图,而后来的的几次pta题目都只提供了题目要求,这个时候就需要我们自己设计类图,需要自己设计代码结构,这就是我们的难点之处了。
②作业问题及解决:
一二三次作业:第一次作业由于之前学过类似的计算机语言,只需要了解Java的基本框架就能够完成代码的编写,会出现不知道如何进行输入操作,通过上课听讲课后自学都能够解决这些小问题;第二次作业与第一次作业相比难度上来看可能是质的飞跃,它已经不满足于用一个Main写满所有的代码,它需要用到多个class完成所需要的功能。这个时候就需要我们对于各种类和方法之间的熟悉调用,需要我们了解Java本身自己具有的函数功能,老师所讲的内容和作业之间进度就会出现差异,课上所听的这小部分内容已经不够我们完成这段代码,这个时候需要我们自学能力,而在思维方面也有了很大的变化,第一次作业可能你只需要简单的if else 就能够实现功能,而第二次作业就需要我们很多的思想,需要精心设计实现功能的算法;第三次作业可以说是第二次作业的加强版,它就出现了更多的要求,需要实现更多的功能,用到的知识点就更多了。就比如题目要求需要设置private变量,这个时候问题就来了,你是否了解并掌握了如何建立private变量的方法,还有进行有参与无参函数的建立方法,这些都是对于一个Java初学者的问题所在。解决的方法可能就需要多加练习,多加自觉熟悉。
四五六次作业:第四次作业中的第一题水文校验直到作业时间结束我也没有将题目拿到满分,第一个阻碍可能是在正则表达式的测试所用的时间过长,第二个阻碍是老师在这题中没有给出类图,这极大增加了题目的难度,这题就需要我们精心设计各个部分的内容,最终达到目的。第六次作业中需要用到comparable这个接口去实现排序的功能,在老师还没有讲此内容之前我就开始写了,这就导致了我对这个接口内容毫不知情,这时候就需要我自学这部分内容,所以我在网上找了很久的资料,之后还是半蒙半懂。我在电脑上对代码测试了很久,最终学会了怎么使用这个接口进行排序。
后来几次作业:后来几次作业由于老师很少给出类图,难点自然而然的就变成了类图的设计上,这就很考验一个人对已经学习了的知识的总结与运用能力,大部分时间不是用来写代码,而是用来思考如何设计一个合理的方法让这些类有机的衔接起来,并且实现题目所给的要求。很多情况都是需要询问同学,百度也是个不错的地方,里面有很多大佬的思路,也有很多的小知识点可以查询。老师可能已经讲过了系统已经提供的方法,但是对于新手来说,这些方法全部记住是有很大难度的,很多时候是记了忘忘了记,所以需要频繁百度,这也是个很耗时的工程。
③每次作业花费的时间比例:随着作业难度越来越大,所需的时间越来越大,每次作业提供的时间都是一个礼拜,但是老师提供的题量越来越少,从这里就可以看出题目的难度了,所以时间是从一开始的一两个小时,到后来的一天,再到后来的几天完成一道题。
2.OO设计心得:
①
1.面向过程与面向对象的比较:
<1>.面对对象与面对过程的本质区别就是面对过程编程每一个函数就是一个过程执行完就啥也不剩下了,唯一可以输出的就是return但是本质上说也还是过程的一部分,因为一旦执行完return语句本身就不再起作用了,即仅仅走了一个流程而已。所以你会发现面向过程编程想要储存点东西就不得不定义一个全局变量,而函数不过是对全局变量按照流程步骤进行加工处理的过程而已。
<2>.面对对象编程不是这样。面对对象编程,万事万物皆对象,每当建立一个新的对象,就好像建立了一个实体,它有自己的属性和方法,如果不对其进行销毁那么,她将会一直存在,而不是仅仅走个过程。你可以随时查找它的属性,也可以随时交给她一些东西处理,即对象不仅仅是一个过程模块。
2.对面向对象三大技术特性之间关系的理解
封装就是把普通的对象进行封装,对象的属性设为来私有的,对外提供get和set方法,其他类只能通过get和set对对象属性值进行操作。继承是发生在两个类之间源,一个百类继承另一个类是说这个类属于另一个类,具有另一个类的所有属性和方法,同时它还可以有另一个类不具备的方法和属性。多态是建度立在继承的基础上的,一个父类对象问可以产生多个不同的子类对象答,根据这些子类对象的不同可以具备不同的方法,也就是说表现出了不同的形态即多态 。
②面向对象设计的基本原则理解:
1.
把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。
2.
<单一职责原则>:单一职责原则顾名思义就是一个类它只实现单一的功能,通过设计多个类,再把类的功能一一实现。单一职责的使用降低了类的复杂性,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多,提高类的可读性,提高系统的可维护性,降低变更引起的风险,变更是必然的,如果单一职责原则遵守的好,当修改一个接口的功能时,可以显著降低对其他接口功能的影响。
<开-闭原则>:开-闭”原则,即“对扩展开放,对修改关闭”,指的是在软件复设计中,当制对某一软件实体进行扩展时,尽量不要去修改原有的软件实体,换句话说就是在不修改原有软件百实体的情况下对其进行扩展。这种软件设计方式其实是一种目标,它考虑了度软件后期的维护等其它因素。一个软件系统如果可以达到这个目标,那它就是问可扩展、易维护的。在软件设计中,众多的设计模式的应用就是为了达到这个目答标。
③OO编程思维的理解:
1.面向对象的思维更符合人认识和思考问题的方式,面向对象的概念和应用已经超越了软件开发和程序设计,扩展到多个的领域,其中一个应用的分支就是面向对象的知识表示法。这种表示法把组成客观世界的实体抽象为数据和对数据的操作,并使用类把数据和对数据的操作封装成为一个不可分割、互相依存的整体。
3.测试的理解与实践:
①测试对于编码质量的重要性:
测试可帮助你对你的代码放心。对一个稍复杂的问题写一个解决方案,然后手动测试,你只需要这么做就可以了。如果你的代码难以测试,那么可能是你代码没有写好。通常情况下,因为它迫使你去思考边缘情况——0,10 ^12,null或undefined。这使得你有机会来思考。这些灵感突现的时刻也可能来自最令人沮丧的情况之一:当你的代码和测试不一致的时候。你正处于不知道哪个才正确的两难境地。如果你碰到这种情况,那么设计可能有问题,或者你的前提假设发生了变化。把它看成是一个好兆头!你的代码将会更满意。
②查阅资料,假设使用Junit进行程序的测试是否可行:
JUnit 4.x 引用了注解的方式来对方法进行测试。通常测试方法都是被包含在一个 测试类 中
使用下面的代码来创建一个单元测试 . 通过如下操作: File → New → JUnit → JUnit Test case.
MyClass tester = new MyClass();
assertEquals( "10 x 5 must be 50 " , 50, tester.multiply( 10, 5 ) );
JUnit 假设可以使用任意的顺序执行测试方法。因而测试不依赖于其他的测试方法。
可以使用注解 @org.junit.Test 来修饰方法,以创建一个测试方法。然后使用预期的值 与 真实的值来检查方法是否正确。
你可以使用 Eclipse IDE方式来运行一个测试类,通过如下操作:右键点击需要测试的类并且选择 Run → Run As → JUnit Test。
也可以使用类 org.junit.runner.JUnitCore运行测试类,而不依赖于Eclipse。
该方法可以标记需要测试的类,选择要执行的测试。只有被选定的测试将会执行。
4.课程收获:
经过一个学期的java基础知识学习,学会了如何安装jdk,配置环境变量,编辑,运行,调试源代码,对eclipse开发工具的熟练运用,了解Java可以编写桌面应用程序(C/S Client/Server)、Web应用程序(B/S Browser/Server)、分布式系统和嵌入式系统应用程序等。Java最主要的作用是为各种应用提供强大的后台服务。Java语言的特点:简单、纯面向对象、分布式、健壮、安全性、体系结构中立、可移植性、多线程、高性能、开源、免费。
很高兴自己可以学习到这样的一门有趣的课程,就像的小时候最开始学习英语一样,虽然很不理解,但是经过后来的多读多写多看还是了解了一二,所以我觉得语言这种东西还是要熟能生巧,多看别人的代码,多敲代码,后来总会了解掌握的。

浙公网安备 33010602011771号