0.前言

本次博客是对整个java及oo学习情况的一个概略性总结,目的在于反思这半年来的学习情况和实际感受,和具体学习方面的理解和问题。

1.作业过程总结

看着自己一个学期做的所有作业,我想起的是总是急急忙忙改错的自己。每一次作业都是紧绷着完成,对照着作业去学习自己该学习的内容,一出错就害怕再次犯错于是去请教学习好的同学,但是也随着OO编程的学习,修改了自己的编程习惯,学习了很多方法和炫酷的技巧。这是在迷茫的一个学期唯一让我欣慰的。

虽然三次作业之间有比较紧密的联系,但是就论几个章节之间的知识,还是没有什么关联的。平心而论这给了学习不好的同学赶上的时间,而对于我来说,这个分散的知识点给我的课程平添了几分悠闲。为了完成作业去拼命运转,一旦作业完成死线来临当场停转,这种剧烈的变化让我不习惯,但是还是催促我尽自己所能以最好的方式完成每次作业。仅此足矣。

虽说如此,学习的形式和上学期的相比而言仍然没有什么不同,菜鸟依旧还是菜鸟。

2.OO设计心得

OO学习给我带来最大的改变可能就是平时编程的习惯吧,在学习了OO之前,我虽然会使用函数编程,但是主要目的是为了在连续性的几次作业之间复制函数,节省编程所需的时间,但是学完了OO以后,我开始去尝试把一个大型的问题分成多个小问题,这样,我就能抓住要点:该如何完成几个关键的步骤,从而轻松地完成整个任务。对于初学者来说,这个问题的关键往往是把实际问题变抽象,最后再把抽象问题变实际。在整个算法上,大多是在直接仿照人类的思维去完成,因为我们没有时间也没有经验去探讨更好的算法。当然,没有引导而是选择自己思考的我和这个业界成熟的思维和规定相比肯定不成气候,但是这正是我仍想接触的地方,关于我们至今引用的函数和文件并没有一个系统的介绍,这就好比对于一个工匠学徒来说你让他看工具箱里一堆帅气的工具但是你却放着不让他用,不教他用,对于我们来说就是一种折磨。最后,为了达成目的,我们就需要自学,自己查找资料,还是比较麻烦的。我个人来说不太喜欢这种半强迫的思考方式,因为如果有着优秀的解决方式的话,应该积极地去接受,而不是去躲避。作为教材可能为了解释方便会去躲避关于标准制定的解释,但是在面对作业时,应该去更加激进和开放一点。

3.测试的理解与实践

因为PTA里的测试点不是公开可复制的,而且关于测试了什么也是缄口不言,所以这导致我们自己的设计测试总是按照搜索来的进行测试,同时需要自行修改,这也让我关于算法方面顺带涨了许多知识。但是因为关于Junit我们并没有学习很多内容(或者是确实学了很多但是我忘了)所以我迄今为止也只是在重复最初教的自动测试。反倒是调试的使用占了最多,而且是我们使用功能最大占比的部分,毕竟这是改错的最好办法。

4.课程收获

相比c语言中打下的巨量功底,在jdk中的努力看起来并没有带来什么实质性的变化,在算法方面,该不会的题依旧没有进展,依然只有单行的鼠标输入输出,并没有向实质化迈出一步。但是仔细回想之后,想起自己学了正则表达式,学会了javafx,学会了hashmap,虽然仍然不熟练,学会了接口和抽象类,还有父类覆写,虽然仍然对于怎么使用没有清晰的概念,但是确实会用了。为了完成作业,逼迫自己学了很多词语的用法如try catch,比如BigDecimal,比如StringBuilder,虽然我不知道这些是不是必要的,但是学会了就满意。

因为基本功方面有老师详细且条理清晰的课程讲解,所以这方面只要学习课内内容就能确保完美完成课程要求。反过来说,虽然讲课内容详细且条理清晰,但是信息量过大导致想要完成作业需要占用过多的时间。因为消化课程并且把课程内容做成作业,有的作业只需要照着去做就行,有的作业则是需要融入思考,但是有的作业既需要模仿新内容又需要融入思考找到算法,那么这样的作业就算不管其工作量,身为大一学生的我们可能面对态度就消极了起来。作为作业,PTA给我们的依然只有一个冷冰冰的界面,一个附带无数检测点的参考,和我们不一定能看懂的实验报告,这对于我们来说是十分不友好的,想要快速高效的完成,只能去求助那些已经拥有相当知识,或是先人一步的同学。虽然结果来说促进了同学之间的讨论(毕竟查重在那里再怎么说肯定要自己亲手去做),但是这个过程很不友好,有点强硬。

5.对课程的建议

建议将作业合并,用一次大作业来直接考验学生水准,这样我们能够自由调控做作业的时间,并且长期维持一段思考不间断。但是,如果课程任务过大,那么我认为可以以题目为单位拆分作业目的,如上所说的,拆分以技能考察为目的的题目和以思考探究为目的的题目,这样如果真的哪道题没有做完,那么短板和孱弱之处一目了然,甚至方便教学统计,可以大大提高效率。

关于课程讲解方面,目前的讲解已经足够,受限于课时方面,很多内容必须线下重新去听录像。这个功能十分方便,尤其是学习一些基础知识比如正则表达式这种,需要反复听反复练习但是并不是太难的,录像几乎就是唯一选择了。所以,即使没有这次疫情,请务必依然在线下教学中采用这种方式,这样绝对对我们的学习有所帮助。

2020.6.6OO学期末总结的更多相关文章

  1. OO课程学期末总结

    OO课程学期末总结 测试VS正确性论证 OCL vs JSF 对象约束语言(Object Constraint Language), 简称OCL, 是一种指示用户建模系统中的限制方式. 他是UML可选 ...

  2. 2020 年 Java 程序员应该学习什么?

    大家好,我相信大家在新的一年都有一个良好的开端,并准备好制定一个提升自我技术的目标.作为 Java 开发人员,我还制定了一些目标,希望在今年成为一名更好的 Java 开发人员. 如果你尚未制定目标,这 ...

  3. 停下来,回头看 ——记2020BUAA软工第一次作业-热身!

    description: 'Mar 1st, 2020 - Mar 3rd, 2020' 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 第一次作 ...

  4. “介绍一下自己吧”——记2020BUAA软工团队介绍和采访

    写在前面 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 团队作业-团队介绍和采访 团队介绍 团队名称 我们是 BUAA软软软件工程小队 ,简称 ...

  5. Alpha版本项目展示

    成员简介 谷大鑫: 热爱编程,技术狂魔,可以对感兴趣的技术钻研到茶饭不思,队伍的技术中坚.标签:整个队伍里最靠谱的人. 个人博客:http://www.cnblogs.com/nrm1/ 杨金键: 未 ...

  6. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  7. 关于我和Github不得不说的一些小事

    你好,我叫黄雅婷,学号是1413042031,网络工程142班.因为小时候家里有很多课外书,有关神话和科学方面的杂志和书籍等,所以从小就喜欢看书,现在比较不挑,什么书都喜欢看,就是给我本字典,我也能看 ...

  8. 学生信息管理系统v1.0

    昨天一个教师朋友找到我,告诉我现在学期末他工作比较忙.需要统计处理很多学生信息,想让我帮他做一个管理系统.实现的功能就是把WPS表格转化成Word文档,将每一个学生的信息都能够分开,并且要根据名字找到 ...

  9. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF入门教程系列(一) 创建你的第一个WPF项目 WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知 ...

  10. <转>HTML+CSS总结/深入理解CSS盒子模型

    原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverf ...

随机推荐

  1. 解决 django channel: zadd() got an unexpected keyword argument 'daphne.response.HzSXMUhzYL!QSfUgrDObf'

    在stackoverflow上找到答案 If you are using Redis version 3.0 or above, it will not work with channels vers ...

  2. 我和Java这些年的故事(五)

    时光荏苒,我来到了IBM.和慕名已久的WebSphere Application Server(WAS)打起了交道. 之前我搞过Weblogic,对应用服务器的特性有了一定的了解.但WAS无疑更为庞大 ...

  3. UGUI UI拖拽,UI连线。

    1.拖拽 public class Item : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public Re ...

  4. 结构体struct

    在 C# 中,结构体是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构体. 结构体是用来代表一个记录.假设您想跟踪图书馆中书的动态.您可能想跟踪每本书 ...

  5. Mac预览怎么用 Mac预览功能实用技巧大全

    Mac预览怎么用?有很多的用户以为Mac自带的预览功能只具有简单的图片浏览功能,其实不然,其实"预览"是一款强大的看图.修图.改图软件,也同时是一款多功能的 PDF 阅读与编辑工具 ...

  6. mongodb更改账户密码

    docker部署方式更改 sudo docker exec -it mongodb mongo admin (登录数据库容器) use admin db.auth('admin','shijiehep ...

  7. Linux基础第七章:磁盘阵列(RAID)

    一.磁盘阵列 二.磁盘阵列类型 1.RAID 0 2.RAID 1 3.RAID 5 4.RAID10 三.磁盘阵列配置 1.硬件方式 2.软件方式 一.磁盘阵列独立硬盘冗余阵列(RAID, Redu ...

  8. 使用react脚手架创建项目报错-You are running `create-react-app` 5.0.0, which is behind the latest release (5.0.1).

    创建项目报错: You are running `create-react-app` 5.0.0, which is behind the latest release (5.0.1). We no ...

  9. 微信小程序云函数中管理短信验证码的完整SDK工具

    微信小程序云开发管理短信验证码并不是一件容易的事情,它不像其他web服务器开发中可以将验证码存放到session或者cookie中,你只能将其存到云开发的数据库中,实现起来非常困难.一个简单的需要短信 ...

  10. flutter 底部导航栏 BottomNavigationBar

    话不多说,上代码 import 'package:flutter/material.dart'; import 'package:flutter_zhihu/pages/tabs/homeTab.da ...