0.前言

此阶段总共进行三次大作业,其中第一次作业中的第一题,水文数据校验及处理中,遇到较大的难题,第一次接触正则表达式,编码过程中显得难度特别大。第二次作业同样也是对于一元多项式求导中对单项的正则校验遇到难题。第三次作业总体难度不大,值得高兴的是,求素数的加分题也写出来了。总而言之,这阶段的作业比上一阶段的难度要大,花的时间也多。
1.作业过程总结

第一次作业,主要涉及到继承与正则表达式的知识,第二次作业则为继承与多态,正则表达式,第三次作业以继承、多态性使用方法以及接口的应用为主。三次作业都涉及到图形继承,从简单的继承到继承与多态,再到接口。以上过程均在一道题里面实现,需求增加,用到的方法也相应增加。三次作业的知识点关联密切,由浅到深。

我理解的面向对象的封装性为隐藏对象的属性,对方法实现过程并不关注,对外仅提供接口,也就是说,我们只关注这个类的功能有哪些,并不关注这些功能是如何实现的。这点在作业过程中有明显的感受,比如在主方法中,我们只关注对象,对于对象的一些属性不去关注,就好比一只兔子,它有四条腿,能吃萝卜等,兔子就是我们封装的类。继承性,就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。这点在图形继承里面体现的淋漓尽致,子类圆 、三角形等继承父类图形(Shape),可以继承方法,属性。子类中也能自定父类中没有的方法。而多态性呢,它可分为静态多态性和动态多态性,也就是编译时的多态性和运行时的多态性。通俗点为,向不同对象发送相同指令,不同的对象在接收后会产生不同的行为。它增加了程序的灵活性,和可拓展性。

在作业过程中也遇到了不少问题,比如第一次作业的水文数据校验,其中最难的是,正则表达式验证。第一次作业虽然做出来了,但是还是有一个测试点没通过。

pta测试时,显示每一列均有错误没有通过,而自己设定每一列均有错误的数据,输出结果为正确,这就纳闷了。把后面题做完之后,开始攻克这个测试点,尝试了大概数十组数据,最后也没发现什么错误,最后我选择放弃了。第二次作业呢,同样也还是正则验证没有完全通过,这次作业出现这种情况,和我对时间的把控有关,在离作业结束还有两天才开始进行做题,到最后没有时间进行调试,导致这次作业只获得88分,为了避免这种情况发生,我以后会在作业发布的第一时间先查看题目要求,难度,这样能更好地完成作业。第三次作业可以说是,一次送分作业,还增加一道加分题,对于我这种前面得分不高的同学来说,无疑是一次补过的机会,当然我肯定没有放过这次机会。

这阶段的三次作业花的时间比例大概为5 : 4 : 2,可见难度大的,花的时间也是要多。

编程是一个需要注意力集中,思维敏捷的过程,如在调试过程中出现错误,明显错误还好容易解决,尤其是那种难发现的错误,找个半天也没点影子,这是最令人头疼的。其实这些错误都是可以避免的,只要在编码过程中做到思维严密,可以避免90%的错误。还有就是找个安静的地方开启你的编码世界。

2.OO设计心得

对于面向对象三大技术特性之间关系的理解,首先三大技术特性分别为封装性、继承性和多态性,上面描述了我对这三个特性单独的理解,接下来我浅谈它们之间的关系,封装有set 方法来设置成员变量,用 get 方法来访问成员变量。把对象的成员变量隐藏在里面,不显示细节。保证数据的安全性。封装的好处在于,把一个功能装到一个方法中去,外界不必关注内部的细节。继承是类与类之间的关系,子类可以继承父类的方法,如果子类中调用的某个方法,会优先在子类中查找是否存在此方法,找不到的情况下,才到父类当中查找。子类重写父类中的方法,会覆盖父类的方法,优先使用子类方法。对于多态,我理解是在继承的条件下,才能有多态,多态指的是父类指针指向子类对象。

单一职责原则及“开-闭”原则理解,单一职责为一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。在设计过程中一定要遵循单一职责,尽管这样类的个数会增加,但是复用性强。开闭原则为面向对象的可复用设计的第一块基石,是面向对象设计的目标。目前对于开闭原则了解不多,还是等后面了解透彻再来。

OO编程思维主要表现为面向对象的三大特性,五大原则。充分理解这写特性,原则,能更好的帮助我们理解OO编程。所谓面向对象,它基于万物皆对象这个哲学观点,将我们的程序模块化,对象化;把具体事物的特性属性,和具体方法作为一个类。

对于类设计来说,我觉得,设计一个类,主要从属性和方法进行,可将同一属性的事物归为一个类,或者将功能相同的事物放到一起作为一个类。

3.测试的理解与实践

一个合格的产品,当然需要经过不断的测试,有性能测试,压力测试等,对于编码质量也是同样道理,测试可以检测质量好坏,一个禁得起测试的程序,才是合格的。

使用Junit进行程序的测试可行,Junit要求在编写代码之前先写测试,这样能更好的限制程序的功能,编写也相对比较集中。
4.课程收获

在阶段的收获可以说的是很丰富的,理解了三大特性,了解了正则表达式的设计,进一步理解了OO的思想。同时也发现了自己的不足,编码不够认真,思维不够严密,导致测试通不过。

5.对课程的建议

我认为每次作业可以设计三道题目,高、中、低难度各一道,也可以适当的增加加分题。

课程方面的话,老师可以介绍一些java方法实现的实例;老师可以课前把上课要讲的代码发到群里面,我们跟着进行操作,总看着老师一个人在操作,总感觉容易走神。

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

  1. 面向对象OO第5-7次作业总结

    面向对象OO第5-7次作业总结 学习OO七周了,深切的感受到了这门课程的不友好.前三次作业能够算是勉强地通过了,但是从第五次作业开始就完全GG了.这三次作业,从多线程电梯开始,然后文件监控,然后到出租 ...

  2. 面向对象OO第1-3次作业总结

    面向对象OO第1-3次作业总结 学习OO已经四周了,对OO以及JAVA的编程也算终于了解了一丢丢.现在做完了三次的编程作业,对前三次的作业做一次总结. 第一次作业 ------------------ ...

  3. PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)

    PHP面向对象三大特点学习 学习目标:充分理解抽象.封装.继承.多态   面象对向的三大特点:封装性.继承性.多态性 首先简单理解一下抽象:我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和 ...

  4. 面向对象OO第15次作业总结

    面向对象OO第15次作业总结 1.论述测试与正确性论证的效果差异,比较其优缺点测试通过大量测试数据来覆盖测试代码,比较直观,优点在于知道测的是啥,特别直观,缺点在于很难覆盖所有情况.正确性论证从逻辑关 ...

  5. 面向对象OO第9-11次作业总结

    面向对象OO第9-11次作业总结 1.关于规格化设计的调研程序规格说明:对程序所应满足的要求,以可验证的方式作出完全.精确陈述的文件.“规格说明”一词与其他工业产品的“规格说明书”有相似的含义.不过, ...

  6. 面向对象(OO)第一阶段学习总结

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

  7. PHP学习 Object Oriented 面向对象 OO

    定义类class class_name [extends partclass_name]{public private protected var property_name = value;publ ...

  8. Python全栈开发记录_第九篇(面向对象(类)的学习)

    有点时间没更新博客了,今天就开始学习类了,今天主要是面向对象(类),我们知道面向对象的三大特性,那就是封装,继承和多态.内容参考该博客https://www.cnblogs.com/wupeiqi/p ...

  9. 暑期java(面向对象设计)学习第一阶段总结

    0.前言 本次博客针对的是暑假学习java(面向对象设计)的前三次作业的小结,第一次作业:7-1 对三个整数排序 7-2 对四个整数排序 7-3 对十个整数进行排序 7-4 对多个整数进行排序 第二次 ...

随机推荐

  1. oracle实现分页功能 limit功能例子

    oracle数据库不支持mysql中limit功能,但可以通过rownum来限制返回的结果集的行数,rownum并不是用户添加的字段,而是oracle系统自动添加的. 记录两种常用方法: (1)使查询 ...

  2. vue中的$router 和 $route的区别

    最近在学习vue的单页面应用开发,需要vue全家桶,其中用到了VueRouter,在路由的设置和跳转中遇到了两个对象$router 和 $route ,有些傻傻分不清,后来自己结合网上的博客和自己本地 ...

  3. K:leetcode 5381.查询带键的排列 这题简单,但我还能优化。精益求精,才是算法的乐趣所在!

    前言: 本题来自leetcode第184场周赛的第二小题.以前参加过周赛,觉得很有趣.苦于最近一段时间比较忙就没坚持参加了(实际上是借口来着....),由于昨晚思考一些事情,导致睡不着,所以起得有点早 ...

  4. 【公告】请访问我Blog新站——superman2014 www.superman2014.com

    http://www.superman2014.com 欢迎光顾 本博客不在更新!!!!

  5. java仿win7计算器布局

    代码: package calculator; import javax.swing.*; import java.awt.*; import java.awt.event.*; public cla ...

  6. ubuntu上安装redis和配置远程访问

    ubuntu上安装redis和配置远程访问 安装redis: 下载安装包: wget http://download.redis.io/releases/redis-4.0.1.tar.gz 解压: ...

  7. 我对KMP算法的理解

    KMP算法的核心在于失配回溯表——pnext,相比于通过逐个比较来匹配字符串的朴素算法,KMP通过对模式串的分析,可以做到比较指针在主串上不回溯,一直向前. 1. KMP如何实现不回溯? 对于主串 t ...

  8. Android Google Play app signing 最终完美解决方式

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/105561341 本文出自[赵彦军的博客] 在 GooglePlay 创建 App ...

  9. 2、使用断言(json assertion)

    1.假设现在有一个服务端的返回数据(需要测试的)为:HTTP/1.1 200 OK,要测试的响应字段勾选Response Headers,模式匹配规则选择Substring,把该响应断言命名为Http ...

  10. windows VMware 安装mac 系统

    0x00 下载链接 首先肯定要有镜像: 链接:https://pan.baidu.com/s/190NBRBwNXVOYRxb6nodHeA 提取码:ahq5 然后还得有这个插件: 链接:https: ...