前言:对OO本阶段作业情况说明

本阶段一共完成三次作业,第一次主要是在主方法里面进行编程,也就是和之前C差不多,而随着学习的深入,慢慢了解到面向对象与面向过程的区别。作业的难度也在慢慢增大,后两次都用到了面向对象的方法。目前三次作业均已完成。

作业过程总结:

下面就三次作业进行总结,第一次作业,可以说是基础练习,更相当于回忆编程方法、技巧。在完成作业的过程,其中第一题计算税率,我遇到三个测试点没有通过,第一反应是检查代码方法是不是有误,从头到尾查了一遍,并,没有找到错误。第二步,检查是否数据有误,查了两遍,发现了两个数据写错了,提交之后还是有一个测试点没过,这时我接着查了五遍,最终还是发现了一个小错误。可见,打代码得心细,思维严密。

这三次作业直接有着很强的知识递进关系,难度由易到难。通过三次作业,慢慢的从面向过程进入到面向对象,从第一个java程序开始

public class Helloworld{
public static void main(String[] args){
System.out.println("hello world");
}
}

到后面的class(类)和对象。我简述一下,对于面向对象的理解,面向对象和面向过程最大的区别就是前者对解决问题通过类+对象即方法+对象进行的,而后者则更多的强调函数的功能。两者都为高级语言,而编程思想和方法截然不同,各自有优缺点。通过作业逐步从面向过程过渡到面向对象的,在这个过程中,从第一次作业的全部在主方法里面编程,到第三次作业的建立多个类进行编程。可以说这段时间还是学到了不少东西。

当然在作业过程中也遇到不少问题,这里我总结为一下三种。

一是由于自己不细心造成的错误,这种错误只要在编程过程中做到认真细致就完全可以避免的。比如数字写错,这种错误很小,一旦出错便是要花上几倍的时间去这个错误。二是在编程过程中,构造的方法没有达到预期效果,导致测试点不能通过,比如最大(小)整数值测试,程序结果产生溢出,导致结果错误,对与这个错误,就像计算(5+n),n为输入的值,我采用的方法是将n分为n/2+n/2(或1+n/2),这样就不会溢出了。三是在测试程序过中出现的不常见问题,比如程序运行超时,这是我会选择用另一种方法进行编程。在写程序过程中,错误肯定是有的,但是我们要知道自己为什么会错,到底是不细心还是知识点没掌握导致的。

粗略计算了一下这三次作业所花的时间比例 3:7:12(小时),我认为每周在OO上花的时间是最多的,同时学到的当然也不少。可见这三次作业难度在慢慢加大,我也要改变编程方法,从而达到高效率完成作业。

通过这三次作业,我认识到了编程过程是非常严谨的,不容有半点差错,尤其是小错误,找起来难度大。为了减少错误的产生,首先,编程风格整洁,让别人一看就懂,后面发生错误也很容易找到。然后,找一个安静的环境编写代码,像我一般是在晚上进行编程,这时候安静,效率高(当然这里不提倡熬夜哈)。最后,还是要做到细心、细心、细心!

OO设计心得

就面向对象与面向过程而言:

面向对象,从字面意思是面向对象的编程,对象可以是实物,也可以是客观存在的东西。对象需要自己创建,通过new 进行创建,这里对象的目的不是为了完成某一个步骤,而是描述一个事物在整个问题步骤中的行为。面向对象程序设计主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递等。

面向过程,是一种以过程为中心的编程思想。以什么正在发生为主要目标进行编程函数,然后用函数把这些步骤一步一步实现,使用的时候依次调用就行。

这两者最大的区别在于,面向过程没有封装、继承、多态性的特性,面向对象由于这些特性,设计起来更加灵活、更加易于维护。

面向对象基本原则有单一职责、开发封闭、依赖倒置、接口隔离、Liskov替换原则。 对于单一职责原则,其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响。单一职责就是指只有一种单一功能,不要以类实现过多的功能,确保功能单一。

OO编程思维:我理解的编程思维是,首先对需求进行分析,根据要求建立类,方法。定义属性,类型。通过对象进行解决问题,它与面向过程不同,面向过程主要是分析解决问题的步骤,通过步骤进行构造函数,然后通过调用将其一步步连续起来。面向对象主要是针对对象进行一系列的操作。也有很简单的理解,在我们用java语言做一件事,只要去new一个对象,并且去调用这个对象的方法,就可以实现我们所要的业务,我们并不关注这个对象具体做了什么。

测试的理解与实践

我们所写的代码得经过测试才能说得上合格,要是代码写出来,什么功能都实现不了,那岂不是写了一堆废品。编码质量可以通过测试点进行检测,通常都有一些边界测试对代码测试。就像软件公司的软件测试员,他们的职责就是查找开发的软件里面的bug,通过测试案例进行检测。可见,测试对于编码来说是特别重要的。

目前遇到的测试,主要是对输入变量进行测试。要是我设计测试用例,我会选择三个正常用例,加上两个边界用例测试,正常用例作用是测试程序在正常值的运行结果,而边界用例多在于测试程序运算过程中是否发生溢出,一旦溢出,结果肯定错误。这样就能更好的对编码质量进行评估。

课程收获

通过这四周的学习,我学会了使用对象进行操作,学会了类与类之间的关系,类里面的成员可以用UML图进行表示,同样也能根据UML图进行编写程序。从课程一开始,我觉得我有信心学好它,毕竟那时候大家也没有OO基础。我发现编程过程中,有好的算法可以省好多的时间,提高效率。我认识到算法在开发软件过程中的重要性,同时我也会根据需求设计最优算法。这段时间的收获,可以说是颇丰,在面向对象中我从一脸懵逼,到能够独立分析题目要求。在编码过程中,要做到细心,认真,可以为后面过程减少很大时间。在课堂上遇到不明白的,可以截图下来,课后进行研究。

对课程的建议

我认为老师可以事先把要将的内容代码先发到群里面,到时候上课时,我们可以跟着老师操作一遍,我觉得这样效率应该会更高。

面向对象(OO)第一阶段学习总结的更多相关文章

  1. OO第一阶段总结

    OO第一阶段总结 一.各次作业程序结构 第一次作业 第一次作业由于初用JAVA,还没有深刻理解面向对象的编程方法,故在编程过程中只用了一个类,一个方法,即完成了相应的程序功能.这必然不是本课程的目的, ...

  2. IT兄弟连 HTML5教程 HTML5的学习线路图 第一阶段学习网页制作

    学习HTML5技术可并不是简单学会几个新增的标签而已,HTML5现在可以说是前端所有技术的代名词.需要学习的语言和工具不仅多,对于刚接触他们的新人会感觉很乱.另外,前端开发也会细分很多个开发岗位,不同 ...

  3. PHP四个阶段目标以及第一阶段学习内容

    PHP课程体系主要分为四个阶段,第一阶段讲的是网页HTML和数据库MySQL,第一阶段要学会网页制作的基础知识,熟用各种基本标签,对数据库进行操作,各项考核都能够达标,拿出出众的项目展示. 在第二个阶 ...

  4. OO第一阶段纪实

    $ 0 写在前面 在DDL一次次的推动下,历经三个周期的更迭,一个月的时光匆匆而过.谨撰此博文,以记录这一段见证成长的心路历程. $ 0-0 JAVA“一天速成”没有修习过传说中的“OO先导课”,在学 ...

  5. OO第一阶段作业总结

    对于OO这门课,学长学姐偶尔提起,大家都略有耳闻,但是并没有将其和计组相提并论.因此,在刚开始接触的时候,并不认为其会比计组难到哪里去,然而事实证明,还是不要想当然去判断,以及不提前学好JAVA对于O ...

  6. JavaScript第一阶段学习心得

    开始接触JavaScript是从慕课网开始的,基础篇学完.懵了一逼,可能是自己太蠢.感觉跟没学差不多,属性,方法,对象,什么都不懂.有的方法知道起的是什么效果,但是原理什么的都不知道. 还好,基础篇学 ...

  7. oo第一单元学习总结

    写在开头: 第一次接触面向对象思想和java语言,在学习以及完成作业的过程经历了一个比较痛苦的过程, 虽然在每次写作业时总是会有一些小小的抱怨,虽然写出的代码还是很差, 但是看到自己有所进步,还是感觉 ...

  8. OO第一阶段总(休)结(养)分(生)析(息)

    第一次作业: 这是一次让我认识到ddl面前潜力真的可以无限大的作业. 一直以为OO是一门和数据结构一样先用几周的时间讲讲Java然后写写”Hello World”小程序再开始讲正课的我(我也不知道为什 ...

  9. jQuery 第一阶段 学习使用总结

    jQuery 是一个 JavaScript 库,位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数.在平常的使用过程中,会常常与JavaScript,配合css使用,能够令网 ...

随机推荐

  1. 彻底理解使用JavaScript 将Json数据导出CSV文件

    前言 将数据报表导出,是web数据报告展示常用的附带功能.通常这种功能都是用后端开发人员编写的.今天我们主要讲的是直接通过前端js将数据导出Excel的CSV格式的文件. 原理 首先在本地用Excel ...

  2. js 打开新窗口方式

    之前的项目,有个功能是下载文件,这里只要在浏览器输入 url 就会下载那个文件了.当时我只是简单得使用 window.open ,但是却会被浏览器进行拦截,要手动开启才行,然后就搜索研究其他方法,就看 ...

  3. webpack进阶(二)

    1)webpack动态打包所有依赖项,避免打包未使用的模块. 2)转换css的loader有:css-loader,style-loader,加载图片或文件的loader是:file-loader,如 ...

  4. scrapy mid中间件一般处理方法

    import user_agent import requests class UA_midd(object): def process_request(self,request,spider): r ...

  5. MATLAB神经网络(2)之R练习

    1. AMORE 1.1 newff newff(n.neurons, learning.rate.global, momentum.global, error.criterium, Stao, hi ...

  6. URL及short URL短网址

    URL,uniform resource locator,经常被称为网址,尤其是在使用HTTP的时候.通常是一个指向某个资源的字符串.   URLs经常被用于网页(http),但也可以用于文件传输(f ...

  7. 机器学习——详解经典聚类算法Kmeans

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第12篇文章,我们一起来看下Kmeans聚类算法. 在上一篇文章当中我们讨论了KNN算法,KNN算法非常形象,通过距离公 ...

  8. 微信公众号 H5页面 支付注意细节

    1.   当秘钥(AppSecretApplets) 有问题时注意是不是已经被重置过了,此时要注意获取最新的秘钥: 2.   调试时后端的东西要放在线上https 请求 不然在手机上测试时 会被拦截: ...

  9. LeetCode-最长回文串

    题目描述: 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意:假设字符 ...

  10. win10安装ubuntu子系统和图形界面

    子系统可以很方便的调用windows的文件(在/mnt里就有各个盘),也可以在windows里用VScode编辑linux的文件.还是很方便的.也可以切出去用QQ微信. 安装子系统参考教程:https ...