前言:对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. PHP时区转换(默认中国时区<Asia/Shanghai>转意大利时区<Europe/Rome>)

    <?php function changeTimeZone($date_time, $format = 'Y-m-d H:i:s', $to = 'Europe/Rome', $from = ' ...

  2. MySQL的字符集和乱码问题

    1.字符集知识 #概述 .字符集是一套文字符号及其编码.比较规则的集合,第一个计算机字符串ASC2 .mysql数据库字符集包括字符集(character)和 校对规则,其中字符集使用来定义mysql ...

  3. Skeleton Screen加载占位图(内容出现前显示灰色占位图)的分析与实现

    今天有几个好友问了这个叫加载占位图的实现方法,我还在此问题下做了个回答.由于国内对这个的名词是各有各的叫法,所以这里直接用加载占位图来解释.相信很多人都看到过图中这样的加载方式: 这个图是一个国内知名 ...

  4. 《高性能javascript》阅读摘要

    最近在阅读这本Nicholas C.Zakas(javascript高级程序设计作者)写的最佳实践.性能优化类的书.记录下主要知识. 加载和执行 脚本位置 放在<head>中的javasc ...

  5. LeetCode 154.Find Minimum in Rotated Sorted Array II(H)(P)

    题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...

  6. SuperBenchmarker一个用.NET编写的压测工具

    0x01 前言 在这之前想必大家对ab(http)与abs(https)也有一些了解,我们今天不去看ab和abs,SuperBenchmarker(sb.exe)是一个压测工具,他是一个受Apache ...

  7. 使用VMware12在CentOS7上部署docker实例

    今天下午算是自己搞了一下午才搞出来,对于认为linux是自己死穴的我,现在能搞出来,心里滋味不是一丢丢,哈哈~~~ 算了,废话不多说,直接上图!步骤如下: 1.在安装好VMware12并安装好了cen ...

  8. sonarqube配置全指南,集成阿里巴巴p3c规范

    环境准备 内置数据库 Sonar安装成功后,默认内置H2数据库,用于记录单次的扫描结果,对同一个project重复扫码,会覆盖之前的扫描记录,所以H2 数据库只应用于测试,不可以用于生产环境,那如果你 ...

  9. 【已解决】HDFS节点已经启动,但不能访问50070 ?

    问题描述 通过start-dfs.sh启动了三个节点 但无法通过IP访问50070端口 问题分析 1.可能是防火墙没关,被拦截了 果然,防火墙没关 再将防火墙设为开机不启动 systemctl dis ...

  10. 开放融合易用@门户移动开发新体验-逐浪CMS v8.0.1全面发布

    北京时间2019年8月30日消息: 领先的web内核研发厂商--上海Zoomla!逐浪CMS团队发布最新CMS版本:Zoomla!逐浪CMS v8.0.1,这是继上个版本v8.0后功能最具完强大与精彩 ...