OO第四次博客作业

本学期的面向对象编程,顾名思义,就是为了理解和熟悉面向对象的编程方法。面向对象,及一切皆对象,或许在底层实现中转化成c语言对应的方法多种多样,但在我们的面向对象语言之中的思想则是一切皆对象。那么首先对对象的理解便尤为重要。理解了对象,便理解了面向对象中的一切。于是,伴随着对对象的理解和面向对象编程方法的理解的层层深入,我们一步一步的完成了本学期的面向对象编程课程。

面向对象的第一个编程模块是多项式单元,经历了对多项式的逐步加深复杂的过程。第一单元的主要初步理解是万物皆对象的概念。即开始在我的程序中,仅仅将比较高级别的“表达式”看做的对象,而对于比较低级的“多项式”,即a * x ^ n形式的低级表达式,仅仅储存了底数和指数,并没有把他当作对象存储。这种存储方式在后来的增强版中引进了三角函数概念和复合嵌套的概念导致变得越来越复杂。于是,对所有的元素都引入了对象,并对有多种类型的因子引入了子类,才使得对多项式的处理变得相对简单。同时,引入对象的好处在于第一单元的格式检验非常重要,而在检验时由于f(g(x))的存在使过去的检验方法也随之失效,因此通过万物皆对象通过递归嵌套的引用使得对格式检验的过程变得简单很多。

第二次作业是电梯模拟,主要学习多线程,主要侧重于对对象的状态和动作的理解,以及其间的相互作用,我认为这一单元对面向对象的理解帮助是最大的。通过引入多线程在时间轴上的运行,能比过去的程序都更加清晰的感受对象之间的相互作用,从而使对象在我眼里更加具体,更加形象。对象之间需要通过一些变量来传递信号,通过“加锁”来解决时间的先后关系问题。就如同对象真的是现实中的事物一样。多线程的概念不仅增加了程序运行的效率,更使得对象这一概念在我看来更加具体,更加接近我们的自然思维了。因为对象真的跟我们平时见到的自然事物一样,在不同的时间内,因为自己的动作或其他对象的动作或方法,而发生了状态的改变。这和物理世界的常识是一致的。而通过“万物皆对象”的理念使编程语言更加接近人类的自然思维,正是面向对象编程的伟大之处。不同于接近于计算机思维的面向过程编程,面向过程编程的思维更接近人的思维,而对象之间的多线程交互让我具体感受到了这一点。

第三单元是关于熟悉JML的过程,主要根据JML的规格来编写程序。实现一个交通地铁图,实现的过程主要是实现各种不同权重的“最短路径”算法,来实现不同要求下的“最佳”解决方案。对数据结构的要求较高,同时,对我的启发主要在于,当我们知道任务需要由对象来完成时,我们应该如何将特定的任务划分给一个对象才能显得最合理,最直观明了。开始我几乎只写了一个核心类,并将大量算法置于核心类中,结果便是这个类极端臃肿,也超过了500行。于是我才开始思考,当任务较多,且实际上相互并列,必较相近时,应该怎么样对对象的工作进行划分,使得程序的架构显得比较合理(并且能符合行数要求)。

第四单元则是关于状态图等的数据进行的分析。实际上,作业中提供了工具将图转化为多天数据。因此我觉得实际上本次作业与载体关系不大,实际上更偏向于讨论和理解类之间的关系,即对象之间的关系。集中表现为当出现继承和接口时,类的种种属性。帮助我更深层次理解了类之间的关系。

因此,综合总结,本学期对面向对象编程的层层深入的过程:从理解使用类的重要性,到深层次理解类“是什么”,到理解如何对众多类进行有层次,有条理的分类和规划,到综合理解众多类之间的关系和联系,以达到根据类图综合理解程序的目的。可以说经过一个学期,对面向对象编程有了逐步深入的初步认识。

 

posted @ 2019-06-24 21:47  EinsY  阅读(134)  评论(1编辑  收藏  举报