在先导课之前我未曾接触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. unet

    使用unet 直接训练 显著性目标检测数据集,不能得到较好的效果. 在一些情况下(边缘对比较强的情况),分割效果还行.由于没有在ImageNet上得到预训练模型,所以不能得到较好的语义分割的效果

  2. react-router v4中 HashRouter 和 BrowserRouter的使用

    遇到的问题 项目中控制路由跳转使用的是BrowserRouter,代码如下: ReactDOM.render(( <BrowserRouter> <div className=&qu ...

  3. Accoridion折叠面板

    详细操作见代码: <!doctype html> <html> <head> <meta charset="UTF-8"> < ...

  4. PnP 问题方程怎么列?

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

  5. 论文笔记:Cross-Domain Visual Matching via Generalized Similarity Measure and Feature Learning

    Cross-Domain Visual Matching,即跨域视觉匹配.所谓跨域,指的是数据的分布不一样,简单点说,就是两种数据「看起来」不像.如下图中,(a)一般的正面照片和各种背景角度下拍摄的照 ...

  6. Beta冲刺(5/7)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(5/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 ppt制作中 数据集标注 接下来的计划 制作p ...

  7. DataStructure-链表实现指数非递减一元多项式的求和

    // 2-链表实现多项式的求和.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<stdio.h> #inclu ...

  8. English 动词篇

    动词后加to do 和 doing的记忆口诀 一.只能用动名词(ing)作宾语 [口诀] 考虑建议盼原谅,承认推迟没得想. 避免错过继续练,否定完成停欣赏. 禁止想象才冒险,不禁介意弃逃亡. cons ...

  9. kafka知识点详解

    第一部分:kafka概述 一.定义(消息引擎系统) 一句话概括kafka的核心功能就是:高性能的消息发送与高性能的消息消费. kafka刚推出的时候是以消息引擎的身份出现的,它具有强大的消息传输效率和 ...

  10. 【原创】大叔问题定位分享(21)spark执行insert overwrite非常慢,比hive还要慢

    最近把一些sql执行从hive改到spark,发现执行更慢,sql主要是一些insert overwrite操作,从执行计划看到,用到InsertIntoHiveTable spark-sql> ...