面向对象(OO)第一阶段学习总结
前言:对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)第一阶段学习总结的更多相关文章
- OO第一阶段总结
OO第一阶段总结 一.各次作业程序结构 第一次作业 第一次作业由于初用JAVA,还没有深刻理解面向对象的编程方法,故在编程过程中只用了一个类,一个方法,即完成了相应的程序功能.这必然不是本课程的目的, ...
- IT兄弟连 HTML5教程 HTML5的学习线路图 第一阶段学习网页制作
学习HTML5技术可并不是简单学会几个新增的标签而已,HTML5现在可以说是前端所有技术的代名词.需要学习的语言和工具不仅多,对于刚接触他们的新人会感觉很乱.另外,前端开发也会细分很多个开发岗位,不同 ...
- PHP四个阶段目标以及第一阶段学习内容
PHP课程体系主要分为四个阶段,第一阶段讲的是网页HTML和数据库MySQL,第一阶段要学会网页制作的基础知识,熟用各种基本标签,对数据库进行操作,各项考核都能够达标,拿出出众的项目展示. 在第二个阶 ...
- OO第一阶段纪实
$ 0 写在前面 在DDL一次次的推动下,历经三个周期的更迭,一个月的时光匆匆而过.谨撰此博文,以记录这一段见证成长的心路历程. $ 0-0 JAVA“一天速成”没有修习过传说中的“OO先导课”,在学 ...
- OO第一阶段作业总结
对于OO这门课,学长学姐偶尔提起,大家都略有耳闻,但是并没有将其和计组相提并论.因此,在刚开始接触的时候,并不认为其会比计组难到哪里去,然而事实证明,还是不要想当然去判断,以及不提前学好JAVA对于O ...
- JavaScript第一阶段学习心得
开始接触JavaScript是从慕课网开始的,基础篇学完.懵了一逼,可能是自己太蠢.感觉跟没学差不多,属性,方法,对象,什么都不懂.有的方法知道起的是什么效果,但是原理什么的都不知道. 还好,基础篇学 ...
- oo第一单元学习总结
写在开头: 第一次接触面向对象思想和java语言,在学习以及完成作业的过程经历了一个比较痛苦的过程, 虽然在每次写作业时总是会有一些小小的抱怨,虽然写出的代码还是很差, 但是看到自己有所进步,还是感觉 ...
- OO第一阶段总(休)结(养)分(生)析(息)
第一次作业: 这是一次让我认识到ddl面前潜力真的可以无限大的作业. 一直以为OO是一门和数据结构一样先用几周的时间讲讲Java然后写写”Hello World”小程序再开始讲正课的我(我也不知道为什 ...
- jQuery 第一阶段 学习使用总结
jQuery 是一个 JavaScript 库,位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数.在平常的使用过程中,会常常与JavaScript,配合css使用,能够令网 ...
随机推荐
- web前端——美化效果总结
概述 项目开发过程中使用到了不少web前端美化效果的方法,总结一下 1 图片作为背景 要实现的效果是,任意一张图片"img-page-background.png",不需要调整图片 ...
- 提高 Web开发性能的 10 个方法
随着网络的高速发展,网络性能的持续提高成为能否在芸芸App中脱颖而出的关键.高度联结的世界意味着用户对网络体验提出了更严苛的要求.假如你的网站不能做到快速响应,又或你的App存在延迟,用户很快就会移情 ...
- 前端每日实战:132# 视频演示如何用纯 CSS 创作一只思考的手
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/WgdVyx/ 可交互视频 此视频是 ...
- 前端每日实战:119# 视频演示如何用纯 CSS 创作一个接扎啤的动画(内含2个视频)
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/rZeOQp 可交互视频 此视频是可 ...
- java多线程基础API
本次内容主要讲认识Java中的多线程.线程的启动与中止.yield()和join.线程优先级和守护线程. 1.Java程序天生就是多线程的 一个Java程序从main()方法开始执行,然后按照既定的代 ...
- Design Patterns | 02 什么样的代码是好代码
目录 01 - 什么是好的代码? 02 - 评价代码的标准有哪些 2.1 可维护性(maintainability) 2.2 可读性(readability) 2.3 可扩展性(extensibili ...
- 关于JS的数据类型与转化(自动与强制)
在我们谈到JS的数据类型转化时,一定会知道分为自动转化和强制转化两种方式吧,通俗来讲,自动就是在某种条件下,电脑浏览器自己会把其他类型的数据转化为相应的数据类型,而强制则是咋们程序员应该手动来做的了, ...
- 使用VS2017进行Python代码的编写并打印出九九乘法表
我们来盘一盘怎么使用VS2017进行python代码的编写并打印出九九乘法表. 使用Visual Studio 2017进行Python编程不需要太复杂的工作,只需要vs2017安装好对Python的 ...
- 新手学黑客攻防-黑客攻击电脑方式和认识IP地址
听说过黑客,没见过黑客,从最基础的开始学习,让我能在互联网中保护自己的隐私安全和信息安全. 黑客攻击电脑方式 黑客攻击的方式多种多样,但常见的只有以下几种,基本上每个黑客都会用到: 网络报文嗅探 网络 ...
- docker的安装,自己写了一个安装docker的脚本,辅助做docker安装的实验(ubuntu)
#!/bin/bash #获取用户名 [ pwd == '/root' ] && hn="root@$(hostname):~#" || hn="root ...