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总结的更多相关文章

  1. Java进阶(三十六)深入理解Java的接口和抽象类

    Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

  2. Java进阶(三十一) Web服务调用

    Java进阶(三十一) Web服务调用 前言 有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下: https://www.evernote.com/shard/s744/sh/c37cd5 ...

  3. 《Effective Java 第三版》新条目介绍

    版权声明:本文为博主原创文章,可以随意转载,不过请加上原文链接. https://blog.csdn.net/u014717036/article/details/80588806前言 从去年的3月份 ...

  4. Java EE : 三、图解Session(会话)

    目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.Session由来 二.Sessio ...

  5. JAVA第三周作业(从键盘输入若干数求和)

    JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...

  6. 编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三

    编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三 编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三

  7. Java的三种代理模式

    Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...

  8. Java的三种代理模式简述

    本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...

  9. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

随机推荐

  1. live2d web端加载moc3模型

    大佬博客链接:https://blog.csdn.net/weixin_44128558/article/details/104792345 照着大佬的博客做一下,可以先学会怎么生成bundle.js ...

  2. 爬虫之图片懒加载技术、selenium工具与PhantomJS无头浏览器

    图片懒加载技术 selenium爬虫简单使用 2.1 selenium简介 2.2 selenium安装 2.3 selenium简单使用 2.3.1 selenium使用案例 2.3.2 selen ...

  3. 矩阵重叠面积计算 线段树hdu1542

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  4. BZOJ1077 并查集

    1077: [SCOI2008]天平 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 416  Solved: 224[Submit][Status][ ...

  5. json字符串转List集合

    public List<Map<String,PendingInfo>> jsonToList(String json){//PendingInfo可以换成其它bean类 Li ...

  6. APM 上报信息分析与应用

    在入正题之前我们再回顾下它的架构图: 本文章主要分析AMP各索引的作用,与及结合1.7环境上已接入的服务数据对比后,对索引中的主要字段进行解析.文章分为四个小章节. 1.索引类型 apm索引分为四种类 ...

  7. MySQL性能分析(Explain)

    更多知识,请移步我的小破站:http://hellofriend.top 1. 概述 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的.分析你的查 ...

  8. 0506static【重点】

    static[重点] [重点] 1.[没有对象] [没有对象] [没有对象] 2.static 修饰的是一个资源共享类型的变量 3.静态成员变量的基本使用规范 static修饰的成员变量只能通过静态方 ...

  9. .NET Core 反射获取所有控制器及方法上特定标签

    .NET Core 反射获取所有控制器及方法上特定标签 有个需求,就是在. NET Core中,我们想在项目 启动时,获取LinCmsAuthorizeAttribute这个特性标签所有出现的地方,把 ...

  10. [JavaWeb基础] 006.Struts1的配置和简单使用

    1.框架简介 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架,用于快速开发Java Web应用.Struts实现的重点在C(Controller), ...