1.1第一次作业主要让我们熟悉java的基本输入、输出函数,比如第一题是关于计算税率的问题,数学公式很简单,但c语言中的printf函数和java的输出函数不大一样,需要自己适应。在编写程序的过程中我会不断查资料,了解java函数的语法。第二题起需要用到简单的数学函数,选择语句,对字符串的处理等内容。旨在让我们熟悉java的环境。第二次作业开始使用方法,和C语言的函数大致类似,依旧用到了数学函数,开始有一定的逻辑运算,并且难度上升,需要花费时间思考完成。第三次作业用到了类,第一题要求我们掌握基本的类的知识,了解类的用法,第二题开始难度有所上升,需要在类中编写方法达到日期的计算。总体而言,三次作业的难度依次上升,对java语言的理解程度也依次加深,更有利于后面的学习。
1.2一开始完成第一次作业,仅仅只需要写出每题功能的代码即可,也就是说,只要写出解题过程,知道怎么写代码完成题目问题的功能的代码就能完成。这应该是面向过程的概念,只需要解决问题的解决方法就行。从第二次作业起需要将方法剥离出来,把解决问题的方法进行封装成方法函数,把这种方法变成任意调用的对象。如果需要再次使用到这种方法时,只需要调用这个方法函数即可,不需要重新写过一遍代码。我觉得这是一种简化的面向对象,调用对象后,在对它进行选择方法,先处理对象,再处理方法。第三次作业就变得不一样了,一个Main类不能完成题目的要求,我们需要另外构造新类,把每个对象都当做类来处理,每个对象都有它自己的方法在类里面。把类当做对象,需要新建对象然后对对象进行调用对象的方法。这是和c语言不一样的地方,这些观念需要我们慢慢转变并且接收新的模式。
1.3前两次作业都还好,问题也很常见,就是作业写的代码算法不对,导致虽然没有编译错误,但是题目的结果不正确无法通过测试点,通过反复的推敲和与同学的探讨就可以解决这个问题。从第三次作业开始,一开始接触到了类,上课时听讲感觉自己模模糊糊的明白了,写作业就暴露了许多问题。于是做作业时又查了许多资料,通过别人分享的代码才知道类要怎么写,怎么用,参数怎么调用等等。
1.4第一次作业很简单 用了大概一上午就做完了,第二次查资料包括编写并调试代码加起来大概用了一天。第三次断断续续写了两三天才完全写好。
1.5在计算日期的那道题中,需要计算两个日期的时间差,我分做几部分计算的,但是计算的结果总是差一天,我觉得我的代码计算逻辑没有错误,在调整了计算的顺序之后才通过了验证,可见运算的逻辑是很重要的。
2.1 面向过程可能只需要解决问题,写出如何计算,逻辑衔接,就可以写好一段代码,但面向对象需要理解对象自己的属性,方法等等。面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为。类是一组相关的属性和行为的集合。是一个抽象的概念。
对象是该类事物的具体表现形式。具体存在的个体。
2.2
①模块化:面向对象开发方法很自然地支持了把系统分解成模块的设计原则:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。分解系统为一组具有高内聚和松耦合的模块是模块化的属性。
②抽象:面向对象方法不仅支持过程抽象,而且支持数据抽象。
③信息隐藏:在面向对象方法中,信息隐藏通过对象的封装性来实现。
④低耦合:在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。低耦合是设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其它部分的影响降到最低程度。
⑤高内聚:操作内聚;类内聚;具体内聚。
2.3面向对象的处理思维,不在只寻求解决步骤,同时把对象表现出来。
3.1如果不测试的话,很多编程者本身都想不到的小漏洞就无从发现,比如我之前自认为正确的代码其实计算结果会有所偏差,再比如写课设时软件功能之间的衔接存在问题,但光看代码是看不出问题的。所以测试是非常重要的。
3.2考虑问题的实际性,测试用例一定要保证接近现实数据。考虑各种极限情况,边界值的测试,极大值极小值的测试。考虑特殊情况的测试,针对不同的问题,如果出现特殊情况或者会出现变化偏差的情况需要单独测试。考虑正常情况的测试,正常的功能情况随机输入进行测试确保每次有效。考虑功能全面的测试,确保功能的全面性,进行功能测试。考虑代码的运行效率,分析代码算法的效率性。
4.1
①一定要确认每次变量的类型和精度问题
②很多时候需要调试每一行代码才能知道具体哪里有问题
③需要根据自己的理解可适当添加或修改检查代码,确认自己的程序是按照自己的逻辑来运行的。
④在编译器中有一些快捷功能可以使用
⑤更加熟悉了面向对象的思想,熟悉java的编程风格。
4.2希望老师讲课的时候可以多讲一些实际例子,多让我们看一些完整的代码,才更好理解。
浙公网安备 33010602011771号