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对 ...
随机推荐
- Java开发架构篇《初识领域驱动设计DDD落地》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 DDD(Domain-Driven Design 领域驱动设计)是由Eric Eva ...
- flask之session
''' session使用: session创建: (1)导入session from flask import session (2)设置secret_key密钥 app.secret_key='s ...
- Flask开发技巧之异常处理
Flask开发技巧之异常处理 目录 Flask开发技巧之异常处理 1.Flask内置异常处理 2.HTTPException类分析 3.自定义异常处理类 4.方便的定义自己的错误类 5.注意事项 本人 ...
- 基于vue+Django的简迩音乐用户界面实现
应这次软件工程课程要求,我们团队着力打造一个音乐播放器软件. 软件实现主要采用基于Vue.js+Python Django,前后端分离架构实现网页. 用户界面主要功能:呈现用户收藏歌单歌曲信息,并且提 ...
- 都说变量有七八种,到底谁是 Java 的亲儿子
网上罗列了很多关于变量的理解,良莠不齐,不知道哪些是对的,哪些是错的,所以笔者就这些博客和自己的理解写出这篇文章,如果有不对的地方,希望读者能够指正,感谢. 变量是我们经常用到的一种,我在刚学 Jav ...
- 【转】Mac系统常用快捷键大全
Mac系统常用快捷键大全 通用 Command是Mac里最重要的修饰键,在大多数情况下相当于Windows下的Ctrl.所以以下最基本操作很好理解: Command + Z 撤销 Command + ...
- Centos 安装 Anaconda
# 首先从 Anaconda 官网下载 anaconda Linux 64Bit 版本命令行安装包 $ wget https://repo.continuum.io/archive/Anaconda3 ...
- 重学 Java 设计模式:实战抽象工厂模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!
- JS 写逻辑判断,不要只知道用 if-else 和 switch
我们在编写 JS 代码时,经常会遇到逻辑判断复杂的情况.一般情况下,可以用 if/else 或 switch 来实现多个条件判断,但会出现一个问题:随着逻辑复杂度的增加,代码中的 if/else 和 ...
- noip2019(普及组) 公交换乘 (不剪枝见祖宗题)
luogu题目传送门 其实就是一道普普通通的模拟题,但是1e5的数据让很多不看数据范围和不加优化的小伙伴们莫名其妙的T了.(包括我) 因此,论减枝的重要性!! 于是乎,最重要的一点也就出来了.早就过期 ...