JAVA第一次blog总结
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总结的更多相关文章
- java第一次作业0
lsl321 java第一次作业 #1. 本章学习总结 你对于本章知识的学习总结 本章我们学习了各种java相关文件的使用,以及码云,博客,pat等程序辅助软件,这些对于我们专业的学习有非常大的帮助, ...
- Java第一次实验 20145104张家明
Java第一次实验 实验报告 实验要求: 1.使用JDK编译.运行简单的Java程序 2.使用IDEA 编辑.编译.运行.调试Java程序 实验内容: 1.使用JDK编译.运行简单的Java程序: 2 ...
- 20155210 潘滢昊 Java第一次实验---凯撒密码
Java第一次实验---凯撒密码 实验内容 实现凯撒密码,并进行测试. 实验代码 import java.io.*; import java.util.Scanner; public class ks ...
- 20145312《Java第一次实验报告》
20145312<Java第一次实验报告> Java开发环境的熟悉(Windows+Idea) 一.实验内容 使用Idea编辑.编译.运行.调试Java程序. 使用JDK编译.运行简单的J ...
- java第一次实验总结&第三周总结
Java第一次实验报告,java开发环境与简单的Java程序 一.实验目的 1.熟悉JDK开发环境 2.熟练掌握结构化程序设计方法 二.实验内容 打印输出所有的"水仙花数",所谓& ...
- Java 第一次课堂测验
周一下午进行了开学来java第一次课堂测验,在课堂上我只完成了其中一部分,现代码修改如下: 先定义 ScoreInformation 类记录学生信息: /** * 信1805-1 * 胡一鸣 * 20 ...
- Java 第一次课堂测试总结。
Java 第一次课堂测试总结. 昨天参加了JAVA的开学测试,课上没有完成计算基点的功能,以下是修改完成后的代码. 首先是ScoreInformation类来存储学生信息. //信1805-1 王正 ...
- Java第一次实验
北京电子科技学院(BESTI) 实验报告 课程: java实验 班级:1352 姓名:吕松鸿 学号:20135229 成绩: 指导教师: 娄嘉鹏 实验日期及时间:20 ...
- Java第一次写的流布局图形界面,留个纪念
package jisuanqi; import java.awt.*; public class MyFrame extends Frame{ //继承Frame类 public MyFrame() ...
随机推荐
- MES Auto Logout
如果您在车间使用MES,可能存在这种情况有人在仍然登录的情况下偶尔离开终端.如果一段时间不使用终端,我们是否可以让用户自动注销. 1 首先,我们有一条using语句: using System.Run ...
- python的字符串、列表、字典和函数
一.字符串 在python中字符串无需通过像php中的explode或者javascript中的split进行分解即可完成切片,可以直接通过下标获取字符串中的每一个字符,下标从0开始,如果从厚望签署, ...
- 大O表示法是什么?
1.什么是大O表示法: 1.在算法描述中,我们用这种方式来描述计算机算法的效率. 2.在计算机中,这种粗略的量度叫做 "大O" 表示法. 3.在具体的情境中,利用大O表示法来描述具 ...
- 安卓开发学习日记 DAY2——android项目文件
当一个android项目建立时,会有一个目录,以下为目录所包含内容 src:放置java源代码 gen:基本不会做任何更改,放置自动生成的配置文件(主要是R文件) Android4.4.2:放置当前版 ...
- 33.1 File 获取目录下的所有文件及子目录
重要获取功能 String[] list() 返回当前路径下所有的文件和文件夹名称 //注意:只有指向文件夹的File对象才可以调用该方法(指向文件的file对象使用list会报错npe) File[ ...
- Linux c++ vim环境搭建系列(1)——Ubuntu18.04.4编译安装vim8.2
1. vim源码编译安装 参考网址: https://github.com/ycm-core/YouCompleteMe/wiki/Building-Vim-from-source 安装各类依赖库 s ...
- Fiddler实战之拟2G、3G、4G网络进行弱网测试
至于fidder网络代理设置就不多说了 模拟网速: 1.启动Fiddler,打开菜单栏Rules---Performances---Simulate Modem Speeds这里打开了模拟调节速度 2 ...
- 2019-07-31【机器学习】无监督学习之聚类 K-Means算法实例 (图像分割)
样本: 代码: import numpy as np import PIL.Image as image from sklearn.cluster import KMeans def loadData ...
- 【转】Centos7启动网卡(获取ip地址)
这里之所以是查看下IP ,是我们后面要建一个Centos远程工具Xshell 连接Centos的时候,需要IP地址,所以我们这里先 学会查看虚拟机里的Centos7的IP地址 首先我们登录操作系统 用 ...
- 最近遇到adb connection 问题,总结一下
最近eclipse总是遇到adb connection问题,网上搜索了一些解决方法,在cmd tool工具下adb kill-server ,adb start-server ,甚至重启都无效.然后我 ...