第一阶段作业总结

 

0.前言

 

本篇博客主要写了针对前三次java实验作业的一个阶段性总结。总体上分为五个部分作业过程总结、设计心得、测试的理解与实践、课程的收获以及对课程的建议。在总结过程中,把自己在实验中遇见的问题和解决方法体现出来,反映出存在的问题。

 

1.作业过程总结

 

①总结三次作业之间的知识迭代关系

 

在第一阶段的作业中,第一次作业题目包括:税率的就算、判断坐标点所在范围、电话键盘字母数字转换、判断三角形类型、统计最大数的出现次数五题题目;第二次作业题目包括:求一元二次方程、判断闰年及星期几、求下一天、求前N天四道题目;第三次作业题目包括:用类解一元二次方程式、日期类设计 、日期问题面向对象设计、日期问题面向对象设计(聚合二)四道题目。第一次作业更偏重于基础,较为简单,没有运用到很多java的专业知识和算法设计,更多的是让我们熟悉了解一些java的基本编程方法语言,为之后的作业做铺垫打基础;第二次作业开始练习使用一些具体算法来实现Java代码,同时开始接触日期时间类,相对上一次难度和能力要求都有所提升。第三次作业开始使用类图来表明程序之间的关系来进行编程,相对于前两次难度有所增加,知识点也增加了,也更加的正式,使用多个类,每一个类各司其职,拥有自己的功能,整体上过渡到了面向对象中来。总体而言,第一阶段的作业基本实现了一个从面向过程到面向对象的过渡。


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

 

第一次作业中的题目偏向于基础,所有的功能都集中在一个main函数中实现,没有使用类来对程序的所有功能进行分散实现。第二作业练习使用算法设计来进行功能的实现,是一个面向对象的入门。第三次作业开始运用类方法来分散实现程序功能并通过在主函数中调用来完整整个程序的功能。使整个程序的代码看上去更加条理清晰,紧密相连。让我也更有兴趣。


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

 

刚使用PTA的时候,由于不熟悉,所以会出现没有将主函数改为main,没有删除包名而无法通过编译的情况。在计算税率的时候,因为表格数据多,所以计算的时候有地方值给错了,导致程序不符合要求,后来在观察某一部分出错值的计算式的时候发现了错误。在判断三角形类型的时候,有一个部分答案错误,但是不清楚错误部分的测试实例,所以没有解决。在后面的日期设计中,由于年月日涉及到了平年、闰年,大月、小月,以及2月的多种情况,所以在计算日期的时候要考虑清楚,在一些跨年跨月的时候会出现计算错误,后来仔细理清楚后解决了问题。第三次作业看类图写代码,一开始没什么头绪,后来看了一些学习视频后自己开始慢慢的写,同时根据类图中的关键信息构建每一个类,在根据运行报错信息对程序进行修正。

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

 

第一次作业花了5个小时,第二次作业花了8个小时,第三次作业花了18个小时,总体下来5:8:18


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

 

在这次的实验过程中出现了很多错误,其中不乏由粗心导致的算法错误,以及思维的不够开放,导致设计的方法过于繁琐,给自己增加负担,也更容易出错。在设计类的时候,没有声明就进行调用导致出现空指针,以及类中属性的私有、公有状态把握不好,导致下面的调用会出现错误。同时我也认识到自己要学的东西还有很多,平时应该多看一看别人写的好的代码,从中学习一些解题思路以及方法的具体使用。

 

2.OO设计心得


①面向过程与面向对象的比较

 

编程思想不同:面向过程是一种以过程为中心的编程思想。都是以什么正在发生为主要目标进行编程。面向对象语言:是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。特点不同:面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用度的时候一个一个依次调用就可以了。面向对象语言:识认性,系统中的基本专构件可识认为一组可识别的离散对象,对象具有唯一的静态类型和多个可能的动态类型,在基本层次关系的不同类中共享数据和操作。


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

 

每一个类应该专注于一件事情。超类存在的地方,子类是可以替换的。实现尽量依赖抽象,不依赖具体实现。一个软件实体应当尽可能少的与其他实体发生相互作用。尽量使用合成/聚合达到复用尽量少用继承。原则:一个类中有另一个类的对象。不将变量类型声明为某个具体类型,而是声明为某个接口。客户程序无需知道对象的具体类型,只需要知道对象所具有的接口。减少系统中各部分的依赖关系,从而实现高内聚,低耦合的类型设计方案。


③OO编程思维的理解

 

编程思维并不是编写程序的技巧,而是一种高效解决问题的思维方式。“编程思维”就是“理解问题——找出路径”的思维过程,它由分解—识别模式—抽象—算法四个步骤组成:分解,把一个复杂的大问题,拆解成更可执行、更好理解的小步骤。模式识别,找出相似模式,高效解决细分问题。抽象,聚焦最重要的信息,忽视无用细节。算法,设计一步一步的解决路径,解决整个问题。


3.测试的理解与实践


①测试对于编码质量的重要性

软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。它是软件生命周期中一项非常重要且非常复杂的工作,对软件可靠性保证具有极其重要的意义。在目前形式化方法和程序正确性证明技术还无望成为实用性方法的情况下,软件测试在将来相当一段时间内仍然是软件可靠性保证的有效方法。软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成软件开发项目。不足的测试势必使软件带着一些未揭露的隐藏错误投入运行,这将意味着更大的危险让用户承担。


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

 

首先明确原始需求。原始需求是软件的使用者(客户)的需求,在需求文档基础+本质理解才能真正理清楚需求要实现什么样的目的,以此为出发点才能不偏离需求本质。拆分原始需求。在需求测试阶段,按照需求测试策略对需求梳理一遍之后,将需求点罗列出来,就可以作为测试点。然后按照显式功能性需求使用等价划分法,边界值分析法,错误推断法,以及非功能性需求的兼容性测试,安全性测试,压力测试。


4.课程收获

 

在这四周时间里通过这几次的作业,让我对java的面向对象思想有了更深的理解,也让我对java中的类使用愈发的熟悉,同时也更加认识到自己的不足,还要多去学习别人的代码,看人家的方法使用,人家的设计思路,自己才能够写出出色的代码,并且在实验中,每完成一项,都能体会到编程的乐趣,感受到自己独立正确的做好一个程序,就会有很大的成就感!

 

5.对课程的建议

 

  希望老师在每次作业评分完成后能够给出示例代码,因为有些地方有问题没有解决的可以通过示例代码来学习,而且一些完成的代码也能够学习示例中更好的思路以及方法。

 

posted @ 2020-04-19 13:08  醉丶琉璃  阅读(151)  评论(0)    收藏  举报