JAVA第三次blog总结
JAVA第三次blog总结
0.前言
这是我们在博客园上第三次写博客,也是本学期最后一次的JAVA学习大总结。现在我们的JAVA已经接近尾声了,对于编程思想和方法的改变依旧是难点,但是经过这一段时间的学习还是让我在OOP思想的理解上有了很大的进步。特别是经过C语言的补考之后我也更加体会到了面向过程程序设计和面向对象程序设计的不同,也就是OPP和OOP的不同。在最后这篇blog中将针对最近的作业和JAVA的整体学习进行总结。
1.作业过程总结
刚刚接触JAVA却还是以c语言的方式在编程,现在整体回看这几次作业,发现最开始的时候我写的程序里虽然是使用的JAVA编程的用法,但是丝毫看不到对象,方法,属性,类的痕迹,甚至我的脑子里都根本没用那个概念。只是一味的输入输出,程序可读性很差,也根本没有复用性。只要稍微改了改题里的要求,这程序里的东西全都要彻底改动,很繁琐。但是再看后面几次的PTA作业,已经能够看到完整的对象,方法,属性,类,甚至对于面向对象程序设计的三大技术特性也有了很深的理解,即为封装性、继承性与多态性。对于程序的可读性也有了不错的改善。而且对于类的学习和认识也让我程序的复用性大大提高。
最后的三次作业也是难度最大的三次作业,这三次作业分别是雨刷程序功能扩展设计,统计Java程序中关键词的出现次数,表达式求值,考察了List、Set和Map的接口应用,正则表达式的应用,以及算符栈,操作数栈的知识。
这几次作业都做的不好,特别的最后两次,也因为之前学的不扎实,又是因为正则表达式不正确,不能得出正确的输出样式,而丢掉几十分。对于雨刷程序功能扩展设计这道题在程序重构之后就因为循环和正则表达式不正确而不能正确控制升档和降档,在经过大量时间的改正之后勉强实现了基本的功能,但是并没有满分,第二行无效输入的测试点还是没有通过。对于List、Set和Map的接口应用和算符栈,操作数栈的知识我学的不是很好,上课就听得一头雾水,在CSDN里找帖子也看不懂,所以后两道题也只完成了基本的非法输入判断,因为检查不出来错所以主要的功能没有实现。
这几次作业在编写程序上花费的时间不是特别多,主要是学习新知识比较占时间,但是因为没有学懂总是感觉无从下手。想要通过作业逐步理解面向对象的特点,就要体会各个题目要求之间的相同与不同,在此基础上对框架进行修改,不能因为麻烦或者不理解就推倒重做,才能得到最大的收获。
至于编程的严谨性也是不可忽略的问题我就在在统计Java程序中关键词的出现次数这道题里吃了亏,在关键字字符串的输入中因为我多加了几个空白符而导致的错误令我很困扰,也耽误了我很多时间。
2.OOP设计心得
首先是面向过程程序设计和面向对象程序设计差异性的理解。面向过程程序设计是指利用函数的定义和调用去编写程序执行操作,好处是突出的是从上到下整体运行的过程。面向对象程序设计是利用类的定义和使用,对象的属性和方法,互相联系和发送“命令”和“消息”,好处是复用性高,便于更改。
而面向对象程序设计有封装性、继承性与多态性三大技术特性。这三个技术特性的关系密切,封装可以使代码模块化,而继承可以实现父类子类之间模块的联系,再赋予多态用于接口,使接口重用。这样相互配合就可以提高代码的逻辑性和复用性。总结起来就是一句话OOP=对象+类+继承+多态+消息。
其次就是面向对象设计有两个基本原则,单一职责原则和开闭原则。单一职责原则是一个类只负责一项职责。而开闭原则是指应该对扩展开放,对修改关闭。换句话说,如果修改或者添加一个功能,应该是通过扩展原来的代码,而不是通过修改原来的代码。
最后要说的是UML图的应用。在平时的作业里我发现给了UML图程序实现起来就很轻松,而没有UML的程序就需要你自己去设计。“类”顾名思义起到了分类的作用,让你的程序更有逻辑性和可读性,成为你解决问题的框架。同时也提升了复用性。再结合封装性、继承性与多态性三大技术特性也就完成了OOP。
3.测试的理解与实践
对于PTA里的测试点,我觉得测试用例应该主要从边界值,特殊值,错误输入值这三方面来检验。同时也要注意内存超限和死循环的情况。之前的总结里提到了白盒测试和Junit的应用。这两个是很常用的,这次还要说一个更加必不可缺的功能,那就是debug。Debug可以在每一步中检查每一个值,表达式的变化,找到异常的数值,从而找出错误,这样会让测试更加简便。
4.课程收获
之前上面谈了很多,在这里简要总结一下
①理解面向过程程序设计和面向对象程序设计的区别
②理解了面向对象程序设计封装性、继承性与多态性三大技术特性
③利用UML和“类”去编写程序以及思考问题
④利用debug功能去检验程序里的值和表达式
⑤利用Junit单元测试(白盒测试)去提高我们编写程序的效率并避免错误
⑥需要继续理解和巩固List、Set和Map的接口应用,正则表达式的应用,以及算符栈,操作数栈的知识
5.对课程的建议
经过本学期对JAVA的学习,我们对OOP也有所理解和感悟。因为疫情的原因本学期的JAVA课程都是在线上进行的,虽然是第一次经历这种情况,但是我感觉对于学习效果还是没有什么区别的,毕竟这是一门计算机学科。在家写PTA的这段时间,让人更加专心,注意力更加集中。特别是知道这门专业课取消最后的考试,采用平时PTA和实验的分数已经平时分作为最后的分数,我们对待PTA更加认真了,而且返校之后也不能大范围集中,不管是笔试还是机考都不合适,这样的学习经历很特殊收获也很大。
JAVA第三次blog总结的更多相关文章
- Java进阶(三十六)深入理解Java的接口和抽象类
Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...
- Java进阶(三十一) Web服务调用
Java进阶(三十一) Web服务调用 前言 有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下: https://www.evernote.com/shard/s744/sh/c37cd5 ...
- 《Effective Java 第三版》新条目介绍
版权声明:本文为博主原创文章,可以随意转载,不过请加上原文链接. https://blog.csdn.net/u014717036/article/details/80588806前言 从去年的3月份 ...
- Java EE : 三、图解Session(会话)
目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.Session由来 二.Sessio ...
- JAVA第三周作业(从键盘输入若干数求和)
JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...
- 编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三
编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三 编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三
- Java的三种代理模式
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- Java的三种代理模式简述
本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...
- Java进阶(三十九)Java集合类的排序,查找,替换操作
Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...
随机推荐
- 2018-06-19 Javascript 基础2
js变量类型测试:typeof()->五种 (number,string,boolean,object,undefined): instanceof->检查某个对象是否是某个构造器产生的 ...
- 解决 Loaded plugins: fastestmirror
其大概意思是fastestmirror不能使用,fastestmirror是yum的一个加速插件,具体我也没有仔细了解过,可能是系统不支持或者缺少组建导致的.处理办法就是禁用这个插件,方法如下:roo ...
- Vue与 Vue组件部分
1.Vuex作用?哪种功能场景使用它? 答案:vue框架中状态管理. 场景有:单页面应用中,组件之间的状态.音乐播放. 登录状态.加入购物车 2.解释vuex最常用的两种属性 答案:分别State.G ...
- 13.2 Go练习题答案
13.2 Go练习题答案 练习题1: 创建一个goroutine与主线程按顺序相互发送信息若干次 且打印 package temp import "fmt" //创建一个gorou ...
- 5.6 Go 常用函数
5.6 Go 常用函数 最正确的学习模块姿势: https://golang.org/pkg/ //golang官网 程序开发常用函数 strings处理字符串相关 统计字符串长度,按字节 len(s ...
- linux文档目录
- 全局设置UITableView的属性|正确计算contentSize|MJRefresh mj_footer 能正常隐藏在底部,不因为数据过少展示在页面中部
可在AppDelegate中设置 if (@available(iOS 11.0, *)) { UITableView.appearance.estimatedRowHeight = 0; UITab ...
- BZOJ1010单调性DP优化
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 10707 Solved: 4445[Submit][S ...
- 程序员使用IDEA这些插件后,办公效率提升100%(持续更新中)
IDEA一些不错的插件分享 目录 IDEA一些不错的插件分享 插件集合 CamelCase Translation LiveEdit MarkDown Navigator Jrebel CheckSt ...
- Sping源码+Redis+Nginx+MySQL等七篇实战技术文档,阿里大佬推荐
JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 引入 ...