前言:对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. css手写一个表头固定

    Bootstrap,layui等前端框架里面都对表头固定,表格滚动有实现,偏偏刚入职的公司选择了手动渲染表格,后期又觉得表格数据拉太长想要做表头固定.为了避免对代码改动太大,所以决定手写表头固定 主要 ...

  2. django实战商城项目注册业务实现

    设计到的前端知识 项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果 ...

  3. springboot连接redis错误 io.lettuce.core.RedisCommandTimeoutException:

    springboot连接redis报错 超时连接不上  可以从以下方面排查 1查看自己的配置文件信息,把超时时间不要设置0毫秒 设置5000毫秒 2redis服务长时间不连接就会休眠,也会连接不上 重 ...

  4. Python魔法方法之 __call__

    前言 Python的魔法方法是指Python内部已经包含的,被双下划线所包围的方法,这些方法在特定的操作时会自动被调用.魔法方法可以使Python的自由度变得更高,当不重载魔法方法时它可以在规定的默认 ...

  5. python装饰器见解笔记

    def zsq(fun): def zsq_n(*args,**kwargs) print('这是装饰器需要运行内容') r = fun(*args,**kwargs) print('在被装饰函数执行 ...

  6. 1构建个人博客--使用Hugo快速成型

    概述 人在武汉,病毒肆虐. 隔离久了,有点闷,闲余时间找点事情做. 建个博客吧, 内容不重要,写不写也不那么要紧,目前水平也写不出什么有深度的东西. 但是这个姿势一定要优美, 过程一定要折腾. OK, ...

  7. go学习第五天、运算符

    算术运算符 下表列出了所有Go语言的算术运算符.假定 A 值为 10,B 值为 20 运算符 描述 实例 + 相加 A + B 输出结果 30 - 相减 A - B 输出结果 -10 * 相乘 A * ...

  8. Spark入门(三)--Spark经典的单词统计

    spark经典之单词统计 准备数据 既然要统计单词我们就需要一个包含一定数量的文本,我们这里选择了英文原著<GoneWithTheWind>(<飘>)的文本来做一个数据统计,看 ...

  9. [C++]请麻烦压一下定理的棺材板啦

    从去年还在竞赛的时候2/12的原博客里搬运来的 不得不说之前取名真的很艺术qwq 今天开始上的数论课,让头发以肉眼可见的速度掉落emmm 没关系我头发多我不怕啦啦啦QwQ 其中最令人头疼的就是那些人名 ...

  10. Android UI性能测试——使用 Systrace 查找问题

    一 官方文档翻译 官文地址:https://developer.android.com/studio/command-line/systrace systrace命令允许您在系统级别上收集和检查所有运 ...