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有很多方便的方法可以大大提升编程效率,这些都可以不怕麻烦不断向搜索引擎“不耻下问”的,这也是学习的一环。

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

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

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

时间: 2024-10-20 18:08:24

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

第5篇-JAVA面向对象Ⅰ

第5篇-JAVA面向对象Ⅰ 每篇一句 :面向对象面向君,不负代码不负卿 初学心得: 代码虐我千百遍,我待代码如初恋 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-03| JAVA面向对象 Ⅰ] 1.JAVA作为一种面向对象语言,具有以下基本概念: ● 多态 ● 继承 ● 封装 ● 抽象 ● 类 ● 对象 ● 实例 ● 方法 ● 重载 2.面向对象 什么是面向对象?: 面向对象是一种编程思想 通俗的说:面向对象是一种思考问题的思维方式 为什么使用面向对象以及它的作用 计算机语

第6篇-JAVA面向对象Ⅱ

第6篇-JAVA面向对象Ⅱ 每篇一句 :敢于向黑暗宣战的人,心中必定充满光明 初学心得: 面向对象 春暖花开 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-05| JAVA面向对象 Ⅱ] 1.JAVA面向对象三大特征 1.封装(Encapsulation); 2.继承(Inheritance); 3.多态(Polymorphism) 2.面向对象 之 封装 什么是封装? 封装就是隐藏实现细节,仅对外提供访问接口 封装的类型有:属性封装.方法封装.类封装.组件封装.模块化封装

Java面向对象详解

Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵懵懂懂,后来实践的多了,有些东西才慢慢清 楚:二是经过一定的实践之后,反过头来再去学习一些基础东西才能够理解的更透彻:三是有些东西基础但是确很重要,是值得好好搞一搞的. 1.面向对象 面向对象(Object Oriented)是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),

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

java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实     验    报     告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩:        指导教师:娄嘉鹏  实验日期:2015.4.14 实验密级: 预习程度:  实验时间:19:30~21:50 仪器组次:13 必修/选修:选修 实验序号:2 实验名称:JAVA面向对象程序设计 实验目的与要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态

第8篇-JAVA面向对象-设计模式Ⅳ

第8篇-JAVA面向对象-设计模式Ⅳ 每篇一句 : 想象是程序的创作之源 初学心得 : 平静的海洋练不出熟练的水手 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-11| JAVA面向对象 Ⅳ] JAVA设计模式 什么是JAVA设计模式以及作用? 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性,本篇将介绍10种JAVA常用设计模式 1.JAVA 设计模式 - 单例设计模式 单例模

第9篇-JAVA面向对象-常用类Ⅴ

第9篇-JAVA面向对象-常用类Ⅴ 每篇一句 :巨轮寻深水而航行 初学心得: 没有胆大的猜测就没有伟大的发现 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-13| JAVA面向对象 Ⅴ] 1.JAVA Scanner类 java.util.Scanner 是 Java5 的新特征,读者可以通过 Scanner 类来获取用户的输入 创建 Scanner 对象的基本语法格式: Scanner s = new Scanner(System.in); 使用 next 方法代码: 1

第7篇-JAVA面向对象Ⅲ

第7篇-JAVA面向对象Ⅲ 每篇一句 :任何值得去的地方,都没有捷径 初学心得: 温故而知新 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-09| JAVA面向对象 Ⅲ] 1.JAVA基本包装类型 基本数据类型 包装类 byte Byte short Short int Integer char Character float Float double Double long Long boolean Boolean 除了Integer和Character定义的名称和对应的

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

20165336 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:13:45 - 15:25 实验序号:实验二 实验名称:Java面向对象程序设计 实验目的与要求: 二.实验内容 1初步掌握单元测试和TDD 2 理解并掌握面向对象三要素:封装.继承.多态 3 初步掌握UML建模 4 熟悉S.O.L.I.D原则 5 了解设计模式 三.实验要求 1.没有Li

JAVA面向对象编程课程设计——多人扫雷对战

一.团队课程设计博客链接 JAVA面向对象编程课程设计--多人扫雷对战 二.个人负责模块和任务说明 负责服务器和客户端信息传输 用DAO模式对MySQL进行操作 在客户端将信息在各个界面间传输 三.自己的代码提交记录截图 四.自己负责模块或任务详细说明 客户端登陆.注册.设置信息时和服务器的数据交互: 获取游戏操作信息,将玩家的游戏操作传到游戏界面以便于GUI显示: 客户端接收到消息时将消息传到相应界面以便于GUI的实时显示: 主要代码 服务器接收并转发信息 客户端接收并与界面传送信息 数据库D