Java+面向对象初学感想
在先导课之前我未曾接触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+面向对象初学感想的更多相关文章
- java的初学感想
了解了JAVA的来源后,翻阅了一点关于java特性的书籍,众所周知,安全性和可移植性是java得以成功的前提,对此我想发表一点看法. 1.安全性:任何东西的安全性都是相对的,虽然java编译生成的字节 ...
- JAVA课程实验报告 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145208 实验三 Java面向对象程序设计
20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- Java面向对象详解
Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...
- 2018-2019-2 20175320实验二《Java面向对象程序设计》实验报告
2018-2019-2 20175320实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 (一)了解使用JUint,并对示例代码MyUtil进行测试 1.先在IDEA中安装J ...
- 20175314 实验二 Java面向对象程序设计
20175314 实验二 Java面向对象程序设计 一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二 ...
- 20165235 实验二Java面向对象程序设计
20165235 Java面向对象程序设计 姓名:祁瑛 学号:20165235 班级:1652 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.14 指导老师: ...
- 20165336 实验二 Java面向对象程序设计
20165336 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- java的第二个实验——JAVA面向对象程序设计
java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实 验 报 告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩: ...
随机推荐
- Kaldi nnet3的前向计算
根据任务,构建ComputationRequst 编译ComputationRequst,获取NnetComputation std::shared_ptr<const NnetComputat ...
- Vue2.0的三种常用传值方式、父传子、子传父、非父子组件传值
参考链接:https://blog.csdn.net/lander_xiong/article/details/79018737
- ASP.NET Web API系列教程(目录)(转)
注:微软随ASP.NET MVC 4一起还发布了一个框架,叫做ASP.NET Web API.这是一个用来在.NET平台上建立HTTP服务的Web API框架,是微软的又一项令人振奋的技术.目前,国内 ...
- python向ftp上传文件,解决中文问题
# coding: UTF-8 import os import sys import salt.client import salt.config import time from ftplib i ...
- centos禁止与开启ping设置
禁止ping: echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 允许ping: echo 0 > /proc/sys/net/ipv4/i ...
- Xshell出现‘The remote SSH server rejected X11 forwarding request’解决办法
当准备用Xshell进行远程连接的时候出现下面的情况: 那么跟着我来点击鼠标就ojbk了: 文件--->属性--->隧道 然后找打 把那个单选框的对号勾掉,然后点击确认就OK了!!
- Javascript—DOM
1.什么是DOM? DOM 是 W3C(万维网联盟)的标准.DOM 定义了访问 HTML 和 XML 文档的标准: "W3C 文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本 ...
- 创建免费的证书,实现网站HTTPS
使用Certbot来实现HTTPS,这边也就考虑采用Cerbot来实现下 配置Certbot 证书 Certbot 的官方网站是 https://certbot.eff.org/ ,打开官网选择的 w ...
- 大一上c语言学习总结
一: 近期C语言知识点易错点整理(1)main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略 ...
- Azure Database for MySQL 报 Please specify SSL options and retry.
Exception has been thrown by the aspect of an invocation. ---> Authentication to host 'xxx.mysql. ...