0.前言
这个学期的面向对象程序设计到这里就结束了。受疫情影响,这门课程全程都是线上教学,虽然效率不如线下教学那么高,但是我还是学到了不少,领略到了面向对象程序设计的魅力。学得越多,越发现自己知道的少。
1.作业过程总结
最后的这几次作业难度不是很大,但是依然是挺费时间的,和前面的题目一样,需要使用正则表达式处理输入。但是,表达式求值这道题,我利用了java的异常处理来对不合法的表达式进行检测,这一操作减少了我不少时间,不用被这令人头疼的正则表达式折磨。表达式求值这道题目运用了栈这一数据结构,在老师讲解之前,我并不知道如何处理这道题,但是老师讲了需要用到栈来处理,之后我就知道了大致思路,将中缀表达式转化成后缀表达式,然后再对式子进行处理。然而在转化的这个过程没有我想象中的那么顺利,这过程中需要判断符号优先级,然后对其进行出入栈操作,这一部分我反复调试修改,最后本以为要成功了,在pta中一提交还是错了。反复思考一直没找出错误,最后才发现原来是出入栈的条件没有调试好。整完这道题,心情瞬间舒畅,挺有成就感,感叹这道题代码逻辑的严密。在这之后就是学习javaFX,由于我用的是jdk 13,并没有自带javaFX,因此配置javaFX也花了一些时间。实验题目中做关于javaFX的实验,这过程中我是边看书边做的,有书本的帮助,写起来很快。发现javaFX可以做很多有趣的事,而且用javaFX相比以前在控制台输入要好看得多。
2.面向对象设计心得
(1)对面向对象三大技术特性之间关系的理解
①封
封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
②继承
继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。子类可以继承于抽象类,通过重写抽象类中的抽象方法来实现方法的功能,使得一个类的功能实现变得不那么繁琐。
③多态
多态,是面向对象的程序设计语言最核心的特征,是指一个类实例的相同方法在不同情形有不同表现形式,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。这一特性极大地降低了代码的复杂程度,使得方法调用不会因为情况不同而去另外多写一些重复的代码。
这三大特性让程序变得更加好理解,更加好设计,代码更加简洁。封装提升了类成员属性的独立性、安全性;继承使得类之间的关系更加明了,逻辑更严密;多态不同情况下的方法调用变得简单。
(2)面向对象设计的基本原则理解
①一个类应该有且仅有一个去改变它的理由,这意味着一个类应该只有一项工作。对象或实体应该对扩展开放,对修改封闭。
②父类的调用同样试用于子类。
③高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
④具体实现应该依赖于抽象,而不是抽象依赖于实现。
⑤不应强迫客户端实现一个它用不上的接口。
(3)面向对象编程思维的理解
在现实世界中是先有对象后有类,而在面向对象中,先有类后有对象,类是对象的抽象,是对对象的一种概括,对象是类的实例。面向对象世界中处处都是对象,对象所具有的就相当于现实世界中的每一个事物都具有的的“数据”和“能力”,面向对象编程就是对不同的对象发依次出各种命令就行了。
3.课程收获
在这为期一个学期的学习中,加上这次一共做了三次课程blog,自己在写的过程中思考和感受到的成长是最多的。从一开始懵懵懂懂的不太理解,到现在能理解一些理念的东西了,虽然也还只是接触了一些皮毛。思路由一开始的照葫芦画瓢,变得可以自己思考和设计。对于程序的设计,由一开始完全的平面构思,慢慢的立起来了,变得更加的立体,有自己的层次结构。相较于过去,感觉自己真的进入了软件世界。
浙公网安备 33010602011771号