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. 类型信息(反射,RTTI)

    类型信息 1.java如何在运行时识别对象和类的信息 "传统的"RTTI run-time type identification ,假设我们在编译时已经知道了所有类型,在编译的时 ...

  2. spark机器学习从0到1协同过滤算法 (九)

      一.概念 协同过滤算法主要分为基于用户的协同过滤算法和基于项目的协同过滤算法.   基于用户的协同过滤算法和基于项目的协同过滤算法 1.1.以用户为基础(User-based)的协同过滤 用相似统 ...

  3. python机器学习(三)分类算法-朴素贝叶斯

    一.概率基础 概率定义:概率定义为一件事情发生的可能性,例如,随机抛硬币,正面朝上的概率. 联合概率:包含多个条件,且所有条件同时成立的概率,记作:

  4. mysql 一台服务器中装两个mysql

    个人经验: 服务器中已有mysql5.0 现要安装mysql5.5 下载安装包,安装后,mysql5.5中没有my.ini文件,就在我自己的电脑上复制了mysql5.5的my.ini文件进去. 1.在 ...

  5. IIS网站发布不了.ttf .woff 文件 并且网站报脚本错误找不到

    -----------------------------解决方法------------------------------------------------ 1. 既然脚本发布不了,就将脚本从本 ...

  6. kali下一些代理工具的简单描述

    前言 最近几天了解了kali中一些代理工具的基本使用,做一个小小的总结,kali操作系统的官网为 www.kali.org,感兴趣的可以去官网下载镜像,如何安装这里就不在讲解了,百度有很多教程.新手这 ...

  7. SpringBoot瘦身

    1.介绍 本教程中,我们将研究如何使用spring-boot-thin-launcher项目来将Spring Boot项目瘦身. Spring Boot出了名的把所有依赖打包成单个可执行的Fat JA ...

  8. Java工作流引擎的测试容器-功能-使用方法-注意事项

    工作流引擎的测试容器-功能-使用方法-注意事项 关键字 Ccbpm, ccflow,jflow,工作流引擎,工作流引擎测试容器,表单引擎 功能说明 工作流的测试容器是为了解决手工模拟人工登录模式下测试 ...

  9. 【JavaScript数据结构系列】05-链表LinkedList

    [JavaScript数据结构系列]05-链表LinkedList 码路工人 CoderMonkey 转载请注明作者与出处 ## 1. 认识链表结构(单向链表) 链表也是线性结构, 节点相连构成链表 ...

  10. 前端自动化构建之webpack

    前言 学了gulp后马上就开始学了一下webpack,所以马上来谈一下感受,感觉webpack有人说是一个模块化工具,用来和browserify来做比较,我感觉webpack牛逼多了,不但可以把复杂的 ...