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. Redis系列(五):Redis的过期键删除策略

    本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数 ...

  2. readthedocs网托管持多语言文档

    希望在readthedocs上创建支持多语言的文档,效果类似: 通过语言选项,可以切到到不同的语言版本:实现这个目标包含两个主要步骤: 在本地对文档进行翻译 在readthedocs.org上配置翻译 ...

  3. 家庭记账本app进度之ui相关概念控制ui界面与布局管理

    ui就是用户界面设计的意思. 首先是view,view相当于窗户上的玻璃. 1.android:id属性.android:id="@+id/user".他的id是user前面的@+ ...

  4. PTA 6-1 单链表逆转

    本题是一个非常经典的题目:单链表逆转. 这是链表结点的定义: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储 ...

  5. node+mysql数据库连接(入门)

    node+mysql的数据库操作: 1 //引入mysql var mysql = require('mysql'); //进行数据库连接设置 var connection = mysql.creat ...

  6. matplotlib BboxBase类

    2020-04-07 17:24:12  --Edit by yangray BboxBase 是 TransformNode 的子类, 同时它是所有 bounding box(平行四边形限位框) 的 ...

  7. python3(二十二) oop

    """ 面向对象编程 """ __author__ = 'shaozhiqi' # 面向对象的程序设计把计算机程序视为一组对象的集合,而每个 ...

  8. 判断一组checkbox/redio是否被选中,为其添加样式

    业务场景:当一行中有一个CheckBox被选中,则为此行添加class. <script type="text/javascript"> $(function(){ $ ...

  9. Linux的文本编辑和文本内容查看命令

    Linux的文本编辑和文本内容查看命令 1.文本编辑命令 vi:用于编辑文本文件,基本上可以分为三种模式,分别是一般模式.编辑模式.命令行模式.    一般模式:当编辑一个文件时,刚进入文件就是一般模 ...

  10. 数据结构和算法(Golang实现)(5)简单入门Golang-接口

    接口 在Golang世界中,有一种叫interface的东西,很是神奇. 一.数据类型 interface{} 如果你事前并不知道变量是哪种数据类型,不知道它是整数还是字符串,但是你还是想要使用它. ...