经历了三次oo作业的洗礼,让我对java语言的强大以及面向对象编程有了初步的理解(当然,我是小白)。本文接下来就将对自己这三次作业的代码进行分析以及分享自己的心路历程。
基础知识点考核
针对前三次作业,我列出了这其中涉及到的主要的知识点:
- java基础语法
- java正则表达式(注意不要爆栈)
- 对java封装、继承、多态、接口的理解
- 程序的构思能力
当然,还有最重要的还是阅读和理解指导书的能力,能够在较短的时间内准确无误的理解指导书的意图也是必需的能力之一。
程序结构分析
作业一:多项式计算
程序类图如下:
这是我第一个认真写的java程序。由于第一次作业比较简单,所以用到的类也只有三个,类图也很简单。尽管并不是纯翻译的c代码,但自从看了很多大佬的代码就愈发开始嫌弃起来。尤其是输入的检测部分,可能是脑抽了吧写了个字符状态机,这样的后果是一个明明非常简洁的程序看上去非常的臃肿,好处是它可以遍历几乎所有的情况。然后是主体部分,类的设计是源自老师的PPT,而且主体方法和其他同学的几乎都差不多,由于第一次作业较为简单,具体细节就不再赘述。但这次作业也让我对java有了较为基础的认识,对比c代码和java代码就可以看出来,很多功能用c实现起来或许很难,但用java却可以在很短的代码内写出较为高效的程序(也可能是我对c的理解不够吧);至于对面向对象的理解,此时还停留在朦胧的阶段,认为面向对象编程就是构造一些对象,然后通过对象来调用它们内部的方法。比如我第一次作业的main函数的内容是这样的:
public static void main(String[] args) { Scanner scn = new Scanner(System.in); if (!scn.hasNextLine()) {System.out.println("ERROR"); System.out.print("#输入不能为空,请重新输入"); scn.close(); return;} String str = scn.nextLine(); if (str.length() != 0) { str = str.replace(" ", ""); new ComputePoly(str); } else { System.out.println("ERROR"); System.out.println("#输入不能为空,请重新输入"); } scn.close(); }