在先导课之前我未曾接触C和Python之外的语言,在大一学年的课程中,用面向过程的思想方法足以完成绝大多数课程要求,故而我也对面向对象的编程思想知之甚少,虽然多有耳闻但是对它一直没有一个正式的学习了解也没有任何直观感受过。因此,在第一节先导课上,第一次真的去了解到面向对象的思想感觉是很新鲜甚至有点惊叹的。而对于java,在上课之前心里其实是有点畏惧的,毕竟有的代码比起C语言来说要多打很多字(System.out.println....),但上完第一节课后,我对Java的好感度一下子就被提高了不少,通过类和类的方法来构筑程序的编程方法让我仿佛一下子打开了视野,加上Java里很多自带的方法使用起来非常便利,在课程中能逐渐体验到用Java写代码是一个很有趣的过程。

第一次作业我的程序bug非常多,可以debug完成度说是非常低了……大部分的测试点都没有通过,其中一个最严重的问题就是,共计13个测试点,程序输出到第6个就不输出了,MyTest里面的tearDown方法也没有执行,虽然输出了的6个测试点好像都通过了(课上测试的时候测试点输出的看不懂可能有出入……),但是这个输出到第六个点的问题未解决就匆匆忙忙奔向下一节课去了……今天再来看,发现是在

CharSet类的myInsert方法里多了一行在判断字符已存在之后结束运行的代码,当时为什么要加这一行?我现在也想不起来自己当时怎么想的了……在之后的几次作业里依然还有许多诸如此类的bug,多余的操作等等,没有特别记录的价值,我下面就不特别写出来了……

第二次作业的课上测试情况也是一样的惨,一片000,我在debug的过程中出现了另一个错误,如图,

这个错误的意思是‘无法实例化类’,可能的原因有:一、类的构造函数为private,可是我的构造函数是public,排除;二、这个类是抽象类,看到这里我就想起来了,之前有这样的一个报错:

我当时没有多想,也犯懒没有进一步的研究,直接就双击了第二个选项,就把StringSet变成了抽象类,由此得出教训一:不要被Eclipse宠坏了!虽然Eclipse为我们提供了很多这样的便利,但是对于我们这些极为不熟悉的新手,千万不可以图一时之便滥用这些quick fixes,我们应当利用这些信息来研究到底是哪里除了错,并且内化,而不是这样拿来偷懒。

话又说回来,这里告诉了我们,我们在StringSet里缺少了一些它所属的接口的方法,究竟是哪一个呢?万幸接口中只有三个抽象方法,很快就找到了问题所在,在StringSetInterface中

,find方法的参数是一个Object,然而在StringSet中的find方法的参数却是一个String,这样这两个方法就会被认为是两种不同的方法,将二者的参数改成一样的就可以了,这是教训二。

接下来是第三次作业,第三次作业是词频统计,在这个学期的C语言与数据结构课程中我们已经用C语言写过了这道题,但是我的这门课学得很差——这也直接导致了我不会用更加快速的排序算法提升性能,除此之外,我的程序还有很多不达标准的地方,比如说位置的记录、还有单词的表现上,由于我本来试图在读入单词的同时排序,所以想将单词逐个读入,于是利用了一个ArrayList<Character>来储存单词,但是在调用.ToString()方法时会输出奇怪的东西,如图:

在写第四次作业的时候我才将读入的方法变成整行读入再处理字符串。

在排序等等的算法上我也只能使用自带的方法,关于树之类的查找排序算法我也在这个学期的课程中没有学会……正在补习。

但是在这一次的课上,关于提升性能的方法有了进一步的了解,也是有所收获。

到了第四次也就是最后一次作业,通过前面三次的试错与积累,写代码的过程意外的顺利,几乎没有被卡住的地方,主要的难点就是在HashMap的利用上吧,理解HashMap、Entry等等用了我一些时间,但是最终也顺利的完成了作业。

经过四次课的训练和积累,能够明显感觉到自己运用Java的熟练度有增长,但是也曝露了很多不足,其中有很大一部分可以说是由这个学期缺乏锻炼导致的,会在编程过程中有很多动作很小但是危害不小的错误,还有明显多余累赘的地方,同时,从第一次到最后一次作业在写的过程中效率提升了很多的一个原因就是在最后一次作业中更加妥善利用搜索引擎了,一来是Java的熟练度还是不够高,二来是Java有很多方便的方法可以大大提升编程效率,这些都可以不怕麻烦不断向搜索引擎“不耻下问”的,这也是学习的一环。

这次暑季学期的面向对象先导课是我第一次接触“训练营”形式的课程,在课堂上有自己动手的时间,不必像平时课堂上想要立即试试看就会造成听课分心的困扰,在课堂上立即动手自己写写看,内化的更快。特别是对于我个人而言,虽然作为经常进度太慢,拖后腿的成员,压力不小,但是课堂的氛围还是能令我十分投入。课堂练习的难度对于我来说也比较适中,虽然我属于基础较差的学生,但是课堂人数较少,练习的时间也很充足,无论是向老师助教,还是身边的同学请教,都能都获取足够的答疑资源,所以在课堂上的学习效率是很高的。

如果说有什么地方让我感觉跟不上,就是在课上测试的时候了,当然这与我课下作业写得太不好也有关系,课下作业完成的好的同学很快就能测完,然后做自己的事等像我这样垂死挣扎的同学了。虽然个别同学完成作业的质量无法控制,但是如果在作业要求上对输入输出有更严格的标准说明或者是样例或许能把总体的测试时间缩短一些。

总的来说,虽然说面向对象这门课我们从学长学姐们口中听到的都极为可怕,但是这门先导课的学习体验还是很愉快的,也谢谢老师和助教的付出~

Java+面向对象初学感想的更多相关文章

  1. java的初学感想

    了解了JAVA的来源后,翻阅了一点关于java特性的书籍,众所周知,安全性和可移植性是java得以成功的前提,对此我想发表一点看法. 1.安全性:任何东西的安全性都是相对的,虽然java编译生成的字节 ...

  2. JAVA课程实验报告 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  3. 20145208 实验三 Java面向对象程序设计

    20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  4. Java面向对象详解

    Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...

  5. 2018-2019-2 20175320实验二《Java面向对象程序设计》实验报告

    2018-2019-2 20175320实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 (一)了解使用JUint,并对示例代码MyUtil进行测试 1.先在IDEA中安装J ...

  6. 20175314 实验二 Java面向对象程序设计

    20175314 实验二 Java面向对象程序设计 一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二 ...

  7. 20165235 实验二Java面向对象程序设计

    20165235 Java面向对象程序设计 姓名:祁瑛 学号:20165235 班级:1652 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.14 指导老师: ...

  8. 20165336 实验二 Java面向对象程序设计

    20165336 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...

  9. java的第二个实验——JAVA面向对象程序设计

    java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实     验    报     告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩:      ...

随机推荐

  1. Arduino-接口图

    Arduino开发板上数字输入输出引脚中的3.5.6.9和11都提供0V和5V之外的可变输出.在这些引脚的旁边,会标有PWM——脉冲宽度调制,PWM是英文“Pulse Width Modulation ...

  2. Factorized TDNN(因子分解TDNN,TDNN-F)

    论文 Povey, D., Cheng, G., Wang, Y., Li, K., Xu, H., Yarmohamadi, M., & Khudanpur, S. (2018). Semi ...

  3. PnP 问题方程怎么列?

    PnP 问题即 Perspective-n-Point . 有 P3P 方法,使用三个点对就能求解.但是先按照熟悉的方法,写一写.最后写 P3P 方法,P3P 方法还是比较晦涩的,不是无脑方法. 1. ...

  4. java -jar参数携带问题

    方式一 -DpropName=propValue的形式携带,要放在-jar参数前面,亲测,放在它后面好像取不到值 java -fileName=JOURNAL_TREENODE_DATA-201904 ...

  5. 编程入门视频【 Python、PHP、ThinkPHP、Laravel、Mysql、微信小程序】

    免费分享 Python.PHP.ThinkPHP.Laravel.Mysql.微信小程序等学习视频 点击进入搜刮 免费分享 Python.PHP.ThinkPHP.Laravel.Mysql.微信小程 ...

  6. JdbcTemplate中queryForObject方法返回空结果或不正确结果数量的解决方法

    在使用Spirng提供的JdbcTemplate中名为queryForObject API进行数据库查询时有时会抛出如下异常: org.springframework.dao.EmptyResultD ...

  7. OpenCV中Mat总结

    一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...

  8. js 禁止f12、Ctrl +S 、右键

    <script language=javascript> window.onload=function(){ document.onkeydown=function(){ ]; ){ re ...

  9. JavaScript入门学习笔记(异常处理)

    try:语句测试代码块的错误,当try中的代码块出错时执行catch中的代码块. catch:语句处理错误: throw:语句创建或抛出自定义异常. 三者一起使用可以控制程序流并生成自定义异常信息. ...

  10. 使用Java API操作HDFS文件系统

    使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...