OO第一阶段(前四周)作业总结

前言

本次博客主要分为五个部分,其中第一部分为对前三次作业过程的总结,第二部分为关于OO设计的心得,第三部分为关于测试的理解与实践,第四部分为从课程中得到的收获,第五部分为对课程的建议。

 

一.作业过程总结

1.第一次作业中有五道题,每道题可能都有需要用到控制语句(如if语句和switch语句等等)与循环语句(如for循环和while循环等),其中第五道题可能会用到数组,但是这五题均有一个共同点,那就都是面向过程,与C语言相似,没有体现出面向对象的思想。而到了第二次作业依然是面向过程,其中都有需要用到控制语句和循环语句,然而其中后三道题目是关于日期的问题,为第三次作业中关于日期类的设计做好了铺垫。到第三次作业中出现了类的概念,题目中会给你一个已经定义好的类,其中类中的数据成员以及方法成员需要自己去定义,在此过程中出现了构造函数,将类中属性私有化,setter和getter等面向对象设计中才可能会出现的语法知识,这在面向过程设计中是不会出现的,自此,作业就开始由面向过程到面向对象开始过渡,在第三次作业中的后两题中尤为明显,要求你设计多个类,因此你就需要创建多个对象,并进行对象与对象之间的传递。

2.在完成作业的过程中当然会遇到许多的问题,如一些java上语法的错误,在逻辑上的错误,也有在编译器上可以通过样例而到pta平台上却又不行,有些测试点不会通过,此时我会再重新去阅读一遍题目,检查是否有我漏掉的一些前提或者是条件,仔细想一想有没有别的情况会出现,有没有一些特殊的例子,因为有的题目就是需要你考虑的比较全面,各个点都能想到。如果我在一些java语法有问题的话,比如一些语法不会使用,这个语法我是不是使用错误了,我会到网上去寻找有关这些语法的用法,去找关于这些Java语法的用法还有例子,自己再在编译器上敲一遍代码,便领会了如何使用。如果有一些章节的知识点没弄清楚,我可能会去一些学习的视频网站找相关的视频去看,再结合老师讲的内容,加以一些java书籍的辅助,能更好的理解这块章节的内容。

3.可能在寒假也没有认真的预习过java语言吧,会导致我对老师所讲内容吸收消化的缓慢,因此有时听课难免会一些不懂,所以在平时写作业时花费的时间也更多,这三次作业所占时间比例是越来越多的,尤其是第三次作业,感觉很多东西还没有学到,练的题目还不够多,练的少,一时间接受比较困难,因此要花费大量时间去完成,需要去网上查找资料,翻阅书籍等等,只有把作业题目中所涉及的相关知识点掌握了才能更加顺利的完成作业。

二.OO设计心得

1.从语言方面出发:对于C语言来说,是完全面向过程的。对于Java语言来说,是完全面向对象的。面向过程的开发方式主要的特点是:注重步骤,注重的是实现这个功能的步骤。而且比较注重的是实现功能的因果关系,由A到B,再由B到C,其中没有对象的概念,只是实现这个功能的步骤以及因果关系。面向过程的缺点主要是耦合度较高,导致扩展力较差,每一步之间都有所谓的因果关系,假设其中任何一个因果关系出现问题,此时整个程序的运行都会出现问题。而它的优点在于对于一些小型项目(功能),采用面向过程的方式进行开发,效率较高,不需要前期对象的提取,模型的建立等等。面向对象的开发方式的特点是:采用面向对象的方式进行开发,更加符合人类的思维方式,人类就是以“对象”的方式去认识世界的,所以面向对象更容易然后我们接受。采取面向对象的方式进行开发,耦合度低,扩展力较强,与面向过程开发相反。简单来说就是,面向过程主要关注的是:实现步骤以及整个过程。面向对象主要关注的是:对象A,对象B,对象C,然后对象ABC组合,或者CBA组合......

2.如果采用面向对象的方式贯穿整个系统的话,可分为三个过程,第一是OOA:面向对象分析,第二是OOD:面向对象设计,第三是OOP:面向对象编程,整个软件开发的过程:分析(A)到设 (D)到编程(P),面向对象包括三大特征,封装继承多态。任何一个面向对象的编程语言都包括这三个特征,例如python。然后是关于类和对象的概念,面向对象当中最主要的“一词”是:对象。对象是实际存在的个体(真实存在的个体)。而类实际上再现实世界当中是不存在的,是一个抽象的概念。是一个模板,是我们人类大脑进行“思考,总结,抽象”的一个结果。类的本质是现实世界当中某些事物具有共同特征,将这些共同特征提取出来形成的概念就是一个“类”,“类”就是一个模板。类 = 属性 + 方法,属性来源于状态,而方法来源于动作。

三.测试的理解与实践

测试对于我而言就是使自己写出来的代码更加的完美,功能更加完善可以查缺补漏,找到很多不足之处,且通过测试可能会找到很多错误和发现许多bug,如果是将来再软件中出现的话,后果是不堪设想的,开发人员要为这个可能看似不太起眼的bug付出惨重的代价,花费大量的人力物力还有时间再去修改,维护成本会相当高,而给客户的印象还有体验也不好,所以测试对于软件对于编码质量来说还是尤为重要的。如果让我去设计测试用例的话,我会从多个角度,全方位的给出样例,尽可能的考虑的周全一些,这样让别人写出来的代码质量也会得到一个水平的提升。

四.课程收获

经过这四周的学习,我知道了另一种语言也知道了另一种编程思想,那就是java语言和面向对象的编程思想,这种思想与面向过程是迥然不同的,面向对象是先需要去创建类,再去创建多个对象,最后将对象再组合在一起的结果,而面向过程更类似于环环相扣的感觉,因果关系明显,缺一不可,耦合度极高。在面向对象中出现了很多在面向过程中没有的知识点如封装,方法的构造,方法是可以重载的,但必须符合一些条件,不同的数据储存在不同的位置,如局部变量是储存在栈当中,静态变量是储存在方法区当中,而对象则是储存在堆当中,有些类可以公开而有些类又不是公开的,类中的数据成员也有不是公开的,此时又出现setter和getter方法可以从外部去访问他们。以上只是我这四周学习到的一部分,也是java语言学习中的很小一部分,还有很多需要我去学习,去探索,我需要尽早地从原来C语言那种面向过程的开发方式过渡到java语言中面向过程的开发方式中来,不然就永远领会不到真正的面向对象的思维,没有理解到它的真正涵义,自然也无法很好的使用这门语言去进行编程,这是一个教训。

五.对课程的建议

对于java语言这门课程的学习我觉得还是要循序渐进,慢慢地引导我们从原来C语言那种面向过程思想到如今的面向对象思想,在两者的不同之处的部分可以重点去讲讲的尽量透彻一点,类似的部分可以讲得稍快一些,向我们说明java语言这类面向对象的语言它好在哪,最好可以给我们多举点例子演示一遍,然后我们在课后再去演示一遍,效果会更好,作业每周布置一次就好,最好跟着讲课的进度来,这样才能更好地学以致用,更好地理解这些知识点,融会贯通。

 

posted @ 2020-04-04 20:43  一个灵魂歌手  阅读(83)  评论(0)    收藏  举报