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. 使用css动画实现领积分效果

    最近项目中要做一个领积分的效果,根据老板的描述,这个效果类似于支付宝蚂蚁森林里的领取能量.整体效果是就是在树周围飘着几个积分元素,上下滑动,类似星星闪烁,点击领取后,沿着树中心的位置滑动并消失,树上的 ...

  2. stdio.h file not found mac catalina clion 头文件 找不到

    问题:mac update catalina 版本之后引发的include文件问题 ​ 近期Mac 版本升级到catalina版本,使用CLion调试c/c++程序,莫名其妙的发现,有些头文件incl ...

  3. MySQL5.7使用Notifier启动、停止服务时出现的问题

    1.选择右击右下角 MySQL Notifier ,选择 Actions -> Manage Monitored Items 2.选择当前的服务 MySQL57  并进行删除 3.然后点击  a ...

  4. ASP.NET Core 3.1+MySQL 部署到docker上面使用docker-compose+DockerFile

    一.新建DockerFile文件 选择Linux版本 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR ...

  5. hadoop(五)scp命令copy文件和配置(完全分布式准备二)|7

    机器的克隆参考centos7克隆ip|机器名|映射关系|别名配置(hadoop完全分布式准备一) 那么问题来了,如果我们有30台机器,之间可以互相访问,那我们如何快速安装配置环境如jdk hadoop ...

  6. Spring Cloud和eureka启动报错 解决版本依赖关系

    导读 An attempt was made to call a method that does not exist. The attempt was made from the following ...

  7. AJ学IOS(49)多线程网络之线程的创建NSThreand

    AJ分享,必须精品 一:NSThread的基本使用 1:创建和启动线程 一个NSThread对象就代表一条线程 创建.启动线程 NSThread *thread = [[NSThread alloc] ...

  8. Netty 中的异步编程 Future 和 Promise

    Netty 中大量 I/O 操作都是异步执行,本篇博文来聊聊 Netty 中的异步编程. Java Future 提供的异步模型 JDK 5 引入了 Future 模式.Future 接口是 Java ...

  9. ASE past project:interview & analysis

    采访往届ASE课程学员李潇,他所在的团队blog戳这里http://www.cnblogs.com/smart-code/ Q1:师兄你觉得在团队项目中,有哪些需要注意的事情? A1:团队合作吧.首先 ...

  10. Obtain The String CodeForces - 1295C binary_search+思维

    妈耶,,,被B题卡到哭,C题一发就过了... 字符串问题.首先用vector记录每个字符出现的位置,然后对字符串t的每个字符,用二分查找函数查找,注意用upper_bound查找,对于字符i,首先用变 ...