前言:对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库

    这篇文章的目的是通过演示一个简单的例子来介绍在JS中实例化和定义一个库的正确方法,以优化他人编写或维护自己的JS库. 在我们深入之前,我做了两点假设: 你知道简单的JavaScript或C语言. 你不 ...

  2. css实战#用css画一个中国结

    大家好!今天跟大家分享一个用 css 画中国结的教程.最终效果如下: 大家如果感兴趣可以参考我的源码:gitHub地址 首先,我们定义好画中国结需要的结构: <div class="k ...

  3. 前端每日实战:48# 视频演示如何用纯 CSS 创作一盘传统蚊香

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/BVpvMz 可交互视频教程 此视频 ...

  4. 每个 JavaScript 工程师都应当知道的 10 个面试题

    1. 能说出来两种对于 JavaScript 工程师很重要的编程范式么? JavaScript 是一门多范式(multi-paradigm)的编程语言,它既支持命令式(imperative)/面向过程 ...

  5. LVM简介及CentOS7 LVM操作实战

    LVM简介LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活 ...

  6. php Rabbitmq扩展安装坑点

    pecl install amqp 出现 checking for amqp using pkg-config... configure: error: librabbitmq not found 这 ...

  7. 通过itunes把文件放入app的document目录

    通过itunes把文件放入app的document目录 反向也是可以的. 仅仅需要添加plist中一项:Application supports iTunes file sharing,value Y ...

  8. ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)

    引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...

  9. 编译 openwrt 及初始配置

    主机为 ubuntu 14 x64 硬件: 优酷土豆宝 cpuMT7620A,内存128M,flash 32M有2个源,用哪个也可以git clone https://github.com/openw ...

  10. Aircrack-ng无线审计工具破解无线密码

    Aircrack-ng工具 Aircrack-ng是一个与802.11标准的无线网络分析的安全软件,主要功能有网络探测.数据包嗅探捕获.WEP和WPA/WPA2-PSK破解.Aircrack可以工作在 ...