JAVA第一次blog总结

0.前言

大一下学期我们开展了OPP这门课程,这也是我们第一次接触到JAVA。与上学期我们在学校里学C语言不同的是,这学期由于疫情原因我们是以网课的方式在学习。在学习中我发现难度最大的部分在于编程思想和方法的改变,而C语言和JAVA的不同,也就是面向过程程序设计和面向对象程序设计的不同。这篇blog是OOP学习以来第一次阶段性的总结,在这篇blog中将对本阶段学习中各个方面出现的问题和心得进行总结。

1.作业过程总结

刚刚接触JAVA却还是以c语言的方式在编程,现在回看这几次作业,发现最开始的时候我写的程序里虽然是使用的JAVA编程的用法,但是丝毫看不到对象,方法,属性,类的痕迹,甚至我的脑子里都根本没用那个概念,虽然写出来的程序也能达到题里的要求,但至少一味的输入输出,程序可读性很差,也根本没有复用性。就像老师常说的那句话一样,要是稍微改了改题里的要求,这程序里的东西全都要彻底改动,很繁琐。但是经过这几次的作业,和平时的学习,我也慢慢的感觉到OPP的含义,慢慢感悟到面向过程程序设计和面向对象程序设计的本质区别。在后面的作业中,明显能够看出编程方法的不同,思维在改变,思想也在改变。

第一次的作业是一些JAVA的简单应用,熟悉main函数,基本类型和运算符,还有选择和循环结构,虽然这些东西和C语言的差不多但还是有所区别的。第二次作业就是在考查类与对象的知识,甚至在这个时候你还是可以偷懒,还是能用面向过程的思想去写。但到了第三次作业,就都是在第二次作业的基础上进行功能的增加和改进,而且继承,封装,组成的应用。这个时候我就发现,之前写的东西复用性太低,根本没办法进行改进,所以重新花了大量的时间,重新去看回放,看视频重新写了一遍。这次虽然对我是一个教训,但是他非常有意义,这让我真正认识到了面向对象程序设计的思想和意义。

值得一说的是,我的粗心问题。编程是严谨性非常强的,虽然平时的错误在eclipse里都能检查出来,甚至有改进方案,但是那些检查不出来的问题才会产生大麻烦。在做闰年判断及应用的那道题时,因为我循环结构里的括号漏了一对,导致本应一起反复循环的过程分开了,然后就有一个测试点死活过不去,检查的时候还感觉没有问题,浪费了很多时间。最后经过别人的提醒,采用分步执行并检验的方法一步一步检查下来才发现问题所在。

2.OOP设计心得

先说一下我对面向过程程序设计和面向对象程序设计的理解。面向过程程序设计是指利用函数的定义和调用去编写程序执行操作,好处是突出的是从上到下整体运行的过程。面向对象程序设计是利用类的定义和使用,对象的属性和方法,互相联系和发送“命令”和“消息”,好处是复用性高,便于更改,就像上文说的不会出现改变一个细微的要求或者功能导致全盘重来的问题。

对于面向过程程序设计来说虽然易于理解容易编写,但是一旦系统庞大功能繁多的之后,就不利于更改,控制和重用。而面向对象程序设计则是一种通过类似建模的方式和思维去达到目标,对象之间互相联系,发送“命令”与“消息”,同时传递给主程序进行判断与执行,通过类和对象的反复使用达到复用性,灵活性,扩展性。看了百度百科里的一句话感觉总结的非常好OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

老师之前讲了JAVA的很多特性,例如:简单,分布式,解释性,健壮,安全,结构中立,可移植,高性能,多线程,动态,但我觉得OPP才是JAVA最特别的特性。OPP的思维方法首先考虑的不是解决问题,而是将所有东西想象成一个框架,再利用框架去思考问题,最后解决问题。

3.测试的理解与实践

对于一个新编写好的程序,首要工作就是测试,因为哪怕是最厉害的程序员也不敢保证自己编写的程序没有bug,如果没有测试谁也不敢保证程序的实用性和正确性。任正非任老爷子说:我们要从最基础的编码质量做起,视高质量代码为尊严和个人声誉。测试是保证编码质量的最主要也是最有效的方法,由此可见测试的重要性。

测试是非常有门道的,也有好多种类单元测试,冒烟测试,集成测试,灰盒测试,白盒测试黑盒测试,还有很多书《谷歌测试之道》,《微软测试之道》,《测试驱动开发》,《自动化测试》。虽然我不懂这些,但是经过现阶段的学习,以及观察PTA里的测试点,我觉得测试用例应该主要从边界值,特殊值,错误输入值这三方面来检验。

4.课程收获

之前上面谈了很多,在这里简要总结一下

①明白OOP与OPP的区别

②解决问题的背后要学会学习方法,学到东西远比解决问题本身更有收获

③发现问题的同时要学会总结教训,明白错在哪里下次才能避免犯错

④注意严谨性,避免粗心而导致逻辑上的错误

⑤利用好测试以及测试点保证代码的正确性

⑥在学习和编写JAVA的时候要用OOP的思维去解决问题

再补充一点⑦独立和自信

解释一下这里的独立和自信,不是盲目的相信自己和闭门造车不向他人学习。而是在遇到问题的时候不要害怕,不能一味地求助别人,要有勇气自己独立得解决问题才能收获更多。在这里我也要自我检讨一下,之前说过在判断闰年及其功能的那道题里,因为我循环结构里的括号漏了一对而导致错误但我自己却检查不出来,然后自己开始烦躁不想去再看了,就让别人帮忙检查,但还是检查不出来,我就索性问别人关于这一段这一部分的写法,听懂之后就采用了他的思路和方法,而把自己原本的方法否定掉了。这就是不自信,我那时自己的思路和方法是错误的,其实不然,只是我自己没有完全理解。后来作业结束之后知道了可以分步调试的方法我就重新检查了自己原本的方法,发现思路没有错误,只是粗心和不严谨。所以以后碰到问题还是要独立解决问题,不能不自信。

5.对课程的建议

作为刚刚接触编程的小白来说,理解这些东西还是比较困难的,特别是这个逻辑思维很是晦涩难懂,而且上学期刚弄懂OPP现在突然接受OOP还是非常不习惯我明白自己的感悟和练习很重要但是还是需要新手保护的,希望老师在讲解一下抽象的概念理解时慢一点,有的时候这个词还没听懂呢,下个词就又出来了非常崩溃。而且对于eclipse里的好多实用常用功能都不会使用,希望老师有时间可以讲解一下。

JAVA第一次blog总结的更多相关文章

  1. java第一次作业0

    lsl321 java第一次作业 #1. 本章学习总结 你对于本章知识的学习总结 本章我们学习了各种java相关文件的使用,以及码云,博客,pat等程序辅助软件,这些对于我们专业的学习有非常大的帮助, ...

  2. Java第一次实验 20145104张家明

    Java第一次实验 实验报告 实验要求: 1.使用JDK编译.运行简单的Java程序 2.使用IDEA 编辑.编译.运行.调试Java程序 实验内容: 1.使用JDK编译.运行简单的Java程序: 2 ...

  3. 20155210 潘滢昊 Java第一次实验---凯撒密码

    Java第一次实验---凯撒密码 实验内容 实现凯撒密码,并进行测试. 实验代码 import java.io.*; import java.util.Scanner; public class ks ...

  4. 20145312《Java第一次实验报告》

    20145312<Java第一次实验报告> Java开发环境的熟悉(Windows+Idea) 一.实验内容 使用Idea编辑.编译.运行.调试Java程序. 使用JDK编译.运行简单的J ...

  5. java第一次实验总结&第三周总结

    Java第一次实验报告,java开发环境与简单的Java程序 一.实验目的 1.熟悉JDK开发环境 2.熟练掌握结构化程序设计方法 二.实验内容 打印输出所有的"水仙花数",所谓& ...

  6. Java 第一次课堂测验

    周一下午进行了开学来java第一次课堂测验,在课堂上我只完成了其中一部分,现代码修改如下: 先定义 ScoreInformation 类记录学生信息: /** * 信1805-1 * 胡一鸣 * 20 ...

  7. Java 第一次课堂测试总结。

    Java 第一次课堂测试总结. 昨天参加了JAVA的开学测试,课上没有完成计算基点的功能,以下是修改完成后的代码.  首先是ScoreInformation类来存储学生信息. //信1805-1 王正 ...

  8. Java第一次实验

    北京电子科技学院(BESTI) 实验报告   课程: java实验    班级:1352     姓名:吕松鸿     学号:20135229  成绩: 指导教师: 娄嘉鹏    实验日期及时间:20 ...

  9. Java第一次写的流布局图形界面,留个纪念

    package jisuanqi; import java.awt.*; public class MyFrame extends Frame{ //继承Frame类 public MyFrame() ...

随机推荐

  1. echarts以地图形式显示中国疫情情况实现点击省份下钻

    首先要导入对应的包.下钻用到各个省份的json文件等内容导入之后进行相关的操作. 首先是从数据库中读取相应的数据文件.通过list方式.只有在ser出转化为json文件.在jsp页面通过ajax来进行 ...

  2. Java 数据持久化系列之 HikariCP (一)

    在上一篇<Java 数据持久化系列之池化技术>中,我们了解了池化技术,并使用 Apache-common-Pool2 实现了一个简单连接池,实验对比了它和 HikariCP.Druid 等 ...

  3. 7.2 java 类的定义和使用

    /* * 类的定义: * 类是用来描述现实世界的事物的 * * 事物: * 属性 事物的描述信息 * 行为 事物能够做什么 * * 类是如何和事物进行对应的呢? * 类: * 成员变量 * 成员方法 ...

  4. leetcode c++做题思路和题解(4)——队列的例题和总结

    队列的例题和总结 0. 目录 栈实现队列 队列实现栈 滑动窗口最大值 1. 栈实现队列 FIFO和FILO,相当于+-号,互转都是利用"负负得正"的原理. 官方解答中第二种思路很6 ...

  5. 理解JSON:3分钟课程

    理解JSON:3分钟课程 博客分类: Java综合 jsonAjaxJavaScriptXMLLISP 本文是从 Understanding JSON: the 3 minute lesson 这篇文 ...

  6. Pandownload作者被抓之后

    近日,pandownload作者被抓,可以说是圈内的大事件,被抓之后, Pandownload 已经是打不开,用不了了 就在我为此感到惋惜的时候,竟然有出来个shengdownload 先来一块看看这 ...

  7. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十二)之Error Handling with Exceptions

    The ideal time to catch an error is at compile time, before you even try to run the program. However ...

  8. 选择IT行业的自我心得,希望能帮助到各位!(六)

    在这个社会,想做大事的人很多,但是很多事情也挺难做的,为什么说复杂的事情简单做,简单的事情重复做,这样一个人才能获得更多的优越品质,为啥说改变,人还是挺难过的,都知道本性难移,想改挺难得.在这个社会千 ...

  9. PHP函数:func_num_args

    func_num_args()  - 返回传递给函数的参数数量. 说明: func_num_args ( void ) : int 参数: 无 返回值: 返回传入当前用户定义函数的参数数量. 参考链接 ...

  10. testlink的api

    testlink可以做很多你想象得到的事情,如API测试参数管理,Excel导入导出,快速模板创建测试用例,集成Jenkins. TestLink API第三方库: TestLink-API-Pyth ...