OO第一单元(前四周)作业总结

0.前言

本次博客主要针对PTA上的前三次作业,分别是Homework1、Homework2、Homework3。这三次作业都是初Java时老师布置的作业。

1.作业总结过程

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

三次的作业难度及深度都是层层递进的。首先课前自学了课件Java环境搭建和程序初体验,学会了JDK安装、Eclipse安装、配置和调试、HelloWorld程序编写和编译,能够初步配置Java环境,学会怎样写Java程序。然后自学了Java概述,包括Java明天、Java昨天和Java今天,了解了Java的前世今生,更有利于对今后Java的学习。Homework1的5道题都是很基础的题,是关于Java类基础知识的,包括Java类结构和main函数、基本类型和运算符、选择循环结构,这些知识大多都和C语言差不多,但还是有些微区别和新的知识,因此需要自己融会贯通并理解学会Java程序的基本语法,就能够很好的完成Homework1的作业;Homework2在Homework1的基础上新加了自定义函数和数组相关知识,在题目中需要自己构造相应的方法来进行程序的编写;Homework3则是在头两次作业的基础上增加了面向对象和类相关知识,需要学习面向对象思想、Java类和对象、构造函数、信息隐藏和this用法。此次作业更能体现出Java编程的特点,强调了面对对象和类,还运用到了关联关系(聚合、组合是特殊的关联关系)、继承关系。

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

 作业是逐步深入,通过作业认为从面向过程编程到面向对象要进行思路转换,关键在于应该把问题抽象成对象去考虑,并充分利用和理解面向对象的基本特性:封装性、继承性、多态性等,减少对代码的重用。

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

(1)第一次写程序的时候不知道用户输入代码该怎么写,通过在网上搜索资料知道了需要用到import java.util.Scanner。

(2)判断三角形类型这一题的有一个测试点始终过不了,经过反复检查并没有发现错误,就去问了同学,结果是因为没有考虑精度问题。

(3)在计算下n天时,一开始我的算法是一天天来算,可是运行超时,耗费时间长。那时候有想过减去年份,减去月份,再一天天算。但是这种方法好像很麻烦,在计算减去月份的时候,要用到很多语句,后面算一天天也有很多语句,就显得这个算法很长。所以我换了一种方法,先把年份减去,然后再一天天算。

(4)在写Homework3三四题的时候,对于类的设计图有点疑惑,通过问同学得到了解答,在写代码时也对于运用其他类的方法不是很会,通过上网搜索得到了解答。

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

Homework1:用了一个晚上的时间。

Homework2:用了一天的时间。

Homework3:用了3天时间来写,1天时间来修改错误。

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

编程时逻辑严谨性是十分重要的,在做一道题之前,首先应该仔细阅读题干和要求,在心里大致想好应该按照什么顺序逻辑来写,或者先在草稿纸上把思路画出来。如果编程时逻辑不严谨,会造成很多错误,也会使编程更加复杂,加重自己的作业量。

2.OO设计心得

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

(1)区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

(2)优缺点

面向过程:优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

      缺点:没有面向对象易维护、易复用、易扩展 。

面向对象:优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。

      缺点:性能比面向过程低。

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

(1)单一职责原则:每一个类应该专注于做一件事情。可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;提高类的可读性,提高系统的可维护性;

(2)组合/聚合复用原则:尽量使用合成\聚合达到复用,尽量少用继承。原则: 一个类中有另一个类的对象。

③OO编程思维的理解

面向对象是将现实问题构建关系,然后抽象成类,给类定义属性和方法后,再将类实例化成实例,通过访问实例的属性和调用方法来进行使用。

3.测试的理解与实践

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

测试可以检验所写代码的准确性,通过多个测试点的检验可以准确找出错误,以便修改。

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

我会设计正常值和边界值以及容易出错的数据,这样能够避免凑巧用例通过,更能检测代码的准确性。

4.课程收获

总结这四周来在OO方面的教训及收获:

通过这四周Java课程的学习,我认为这门课程很难,如果不认真听讲完成作业会很吃力,因此上课要认真,课前也应该预习。面对对象的编程需要自己结合实际,多思考,才能理解透彻。我也收获了面对对象的基本思路,如何运用该思想来处理简单问题。

5.对课程的建议

由于疫情期间,只能上网课,加上该课程难度很大所以学起来较吃力,因此希望老师上课能够多讲解实例便于理解,课后能够发课堂相关知识到群里供大家学习。

    

   

posted @ 2020-04-04 15:53  Eliauk454  阅读(99)  评论(0)    收藏  举报