第一阶段作业总结

时光总嘲笑我的痴心妄想 提交于 2020-04-05 16:36:37

------------恢复内容开始------------

前言

第一阶段的作业总共有三次PTA上的作业,第一次作业有5题,第二次以及第三次作业都为4题并且题目基本是相同的,但是要求确实不同的编程思维,所以我个人感觉第一阶段的作业重点在让我们由原本的面向过程的编程方式慢慢过渡到目前我们所重点学习的面向对象编程方式。经过本次作业可以让我们从了解面向对象思维到运用面向对象思维方式到我们的编程过程之中。我个人感觉Java毕竟是C语言基础上发展的语言,所以可以说比C语言更有优势,C语言中需要对函数和变量进行定义和声明,而JAVA只用定义,不用声明; Java语言有new关键字,用于创建引用对象,C语言没有此类关键字; C语言不是面向对象的,而是面向过程,而JAVA是面向对象的语言;C语言可以直接操作内存,而JAVA不能;C语言有指针,而JAVA没有等等。

 


1.作业过程总结
①总结三次作业之间的知识迭代关系;

第一次作业算是简单的循环运用,第二、三次则较复杂同时第三次要求运用面向对象的思维来编写。


②如何通过作业逐步从面向过程过渡到面向对象;

在第一次作业以及第二次作业我编程时感觉回到了大一学习C语言时的前几次作业,题目类型差不多此外就是编程时的思维方式改变还不太大,但第三次作业编写时明显感觉与前两次不同,并且由于第二次作业与第三次作业的题目相同,使得编程时思维方式的不同处更加明显也让我更加了解面向对象的编程思维。


③作业过程中遇到的问题及解决方法

作业中最主要遇到问题的是第三次作业,由面向过程的思维改变到面向对象的思维,许多编写方式需要改变。我在网上看了许多资料也向同学请教过题目中一些问题,最终完成了作业。


④每次作业花费的时间比例

第一次作业将时间连续起来的话总共花了一天不到,不排除一些开小差的时间…。第二次时间差不多是两天多,而第三次同编写的时间同第二次作业时间差不多,还花费了更多时间在思考、查找两者不同编程思维方式之上。


⑤对编程过程的严谨性的认识及教训

这学期的PTA上的作业检测让我更深刻体会到编程的严谨性,总是因为一些十分细节的地方没能考虑到而想破头在那苦恼。知道了以后看问题要全面细致。


2.OO设计心得
①面向过程与面向对象的比较

通过这次作业,我体会到面向对象与面向过程两种编程思维的不同之处:面向对象是一种以过程为中心的编程思想,都是以什么正在发生为主要目标进行编程;而面向对象是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。并且面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;但面向对象却更注重识认性,在系统中的基本构件可识认为一组可识别的离散对象,对象具有唯一的静态类型和多个可能的动态类型,在基本层次关系的不同类中共享数据和操作。所以二者相比,面向对象更具优势,它支持丰富的“面向对象”特性(比如继承、多态),并且不允许混合持久化状态和域逻辑,同时在内部表示为一个指向一组属性的指针,任何对这个对象的操作都会经过这个指针操作对象的属性和方法。


②面向对象设计的基本原则理解

开闭原则:

设计的时候时刻要考虑、尽量让这个类是足够好,写好了就不要去修改了,如果有新需求来再增加一些类就行,原来的代码能不动则不动。

里氏代换原则:

一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。

依赖倒转原则:

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象即各部分都可灵活自如,不会牵连其他部分。

接口隔离原则:

为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

迪米特法则:

即类之间的耦合关系越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成影响,也就是说信息的隐藏促进了软件的复用。

单一职责原则:

一个类只负责一项职责,应该有且只有一个引起它变化的原因。

组合复用原则:

在一个新的对象里面使用一些已有的对象,使其成为新对象的一部分,新的对象通过向这些对象的委派达到复用已有功能的目的。


③OO编程思维的理解

我对面向对象的理解结合了些自己在网上课前收集过的资料,有人说过面向对象也可以翻译作 “物件导向”,我觉得这个翻译十分符合我对它的理解,即以物件为导向目标。我们编写软件是为了解决某一个问题,而面向对象思想就是在编程过程中把问题中的内容映射到软件系统中的多个对象之上,对象作为一个独立的个体,有它自己的功能、状态以及与其他对象之间的联系,这些对象个体互相作用最终解决问题。


3.测试的理解与实践
①测试对于编码质量的重要性

一个代码是否高质量重要的是能经得起多少极端问题的考验,基础的功能很简单但很多细小的问题会成为这串代码的bug。因此测试对于代码的质量十分重要。


②假如让你设计测试用例,你会如何做

多挑极端的擦边测试点进行测试考验代码的质量。


4.课程收获

通过四周的学习,对于面向对象有了大致的了解,在脑内也有了一定的概念模型,在未来的编程中会加强自己对这种思维方式的运用。


5.对课程的建议

希望以后的课程中老师能讲一些Java语言的细节,编程时有问过已经学过Java的朋友,发现有许多Java语言更方便或更内行的运用方式我不了解,个人感觉自己编程时很多习惯还是同之前学习C语言时的习惯一样。

------------恢复内容结束------------

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!