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. pyhton 信号量Semaphore和BoundedSemaphore

    Semaphore和BoundedSemaphore两个,用起来好像没啥区别 都是定义信号量 sem=threading.BoundedSemaphore(5) sem=threading.Semap ...

  2. readthedocs网托管持多语言文档

    希望在readthedocs上创建支持多语言的文档,效果类似: 通过语言选项,可以切到到不同的语言版本:实现这个目标包含两个主要步骤: 在本地对文档进行翻译 在readthedocs.org上配置翻译 ...

  3. stdio.h file not found mac catalina clion 头文件 找不到

    问题:mac update catalina 版本之后引发的include文件问题 ​ 近期Mac 版本升级到catalina版本,使用CLion调试c/c++程序,莫名其妙的发现,有些头文件incl ...

  4. Flask 入门(八)

    flask操作数据库:操作数据: 承接上文: 修改main.py中的代码如下: #encoding:utf-8 from flask_sqlalchemy import SQLAlchemy from ...

  5. Flask 入门(六)

    连接数据库 任何一门后端语言都可以连接数据库,python-flask也不例外 flask利用SQLAlchemy ORM连接数据库 接下来,我门来练习如何连接数据库: 1.首先,电脑上得有mysql ...

  6. linux升级python2.7到3.7.0

    1.下载python3.7.0压缩包在 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 2.解压缩 tar -zxvf Py ...

  7. Linux 下如何隐藏自己不被发现?

    可能在某些情况下,自己运行的程序不想或者不方便被其他人看到,就需要隐藏运行的进程.或者某些攻击者采用了本文介绍的隐藏技术,也可以让大家看到如何进行对抗. 隐藏有两种方法: kernel 层面,不对用户 ...

  8. java集合中的一个移除数据陷阱(遍历集合自身并同时删除被遍历数据)

    下面是网上的其他解释,更能从本质上解释原因:Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁. Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量 ...

  9. Java学习成长第一集

    由于最近所在项目组的项目临近结尾,所以有时间对自己近来的学习做个总结.不得不说,程序员不学习就退步这句话是真的很让人信服!自己入行将近一年的时间,所学的就是Java开发的专业,很羞愧的是现在的自己能力 ...

  10. QMS产品 - MasterControl 质量管理活动

    主要质量管理活动如下所示: CAPA 纠正措施/预防措施 Corrective Maintenance 纠正措施 Preventive Maintenance 预防措施 Customs Complai ...