面向对象(OO)第二阶段学习总结
0.前言
此阶段总共进行三次大作业,其中第一次作业中的第一题,水文数据校验及处理中,遇到较大的难题,第一次接触正则表达式,编码过程中显得难度特别大。第二次作业同样也是对于一元多项式求导中对单项的正则校验遇到难题。第三次作业总体难度不大,值得高兴的是,求素数的加分题也写出来了。总而言之,这阶段的作业比上一阶段的难度要大,花的时间也多。
1.作业过程总结
第一次作业,主要涉及到继承与正则表达式的知识,第二次作业则为继承与多态,正则表达式,第三次作业以继承、多态性使用方法以及接口的应用为主。三次作业都涉及到图形继承,从简单的继承到继承与多态,再到接口。以上过程均在一道题里面实现,需求增加,用到的方法也相应增加。三次作业的知识点关联密切,由浅到深。
我理解的面向对象的封装性为隐藏对象的属性,对方法实现过程并不关注,对外仅提供接口,也就是说,我们只关注这个类的功能有哪些,并不关注这些功能是如何实现的。这点在作业过程中有明显的感受,比如在主方法中,我们只关注对象,对于对象的一些属性不去关注,就好比一只兔子,它有四条腿,能吃萝卜等,兔子就是我们封装的类。继承性,就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。这点在图形继承里面体现的淋漓尽致,子类圆 、三角形等继承父类图形(Shape),可以继承方法,属性。子类中也能自定父类中没有的方法。而多态性呢,它可分为静态多态性和动态多态性,也就是编译时的多态性和运行时的多态性。通俗点为,向不同对象发送相同指令,不同的对象在接收后会产生不同的行为。它增加了程序的灵活性,和可拓展性。
在作业过程中也遇到了不少问题,比如第一次作业的水文数据校验,其中最难的是,正则表达式验证。第一次作业虽然做出来了,但是还是有一个测试点没通过。
pta测试时,显示每一列均有错误没有通过,而自己设定每一列均有错误的数据,输出结果为正确,这就纳闷了。把后面题做完之后,开始攻克这个测试点,尝试了大概数十组数据,最后也没发现什么错误,最后我选择放弃了。第二次作业呢,同样也还是正则验证没有完全通过,这次作业出现这种情况,和我对时间的把控有关,在离作业结束还有两天才开始进行做题,到最后没有时间进行调试,导致这次作业只获得88分,为了避免这种情况发生,我以后会在作业发布的第一时间先查看题目要求,难度,这样能更好地完成作业。第三次作业可以说是,一次送分作业,还增加一道加分题,对于我这种前面得分不高的同学来说,无疑是一次补过的机会,当然我肯定没有放过这次机会。
这阶段的三次作业花的时间比例大概为5 : 4 : 2,可见难度大的,花的时间也是要多。
编程是一个需要注意力集中,思维敏捷的过程,如在调试过程中出现错误,明显错误还好容易解决,尤其是那种难发现的错误,找个半天也没点影子,这是最令人头疼的。其实这些错误都是可以避免的,只要在编码过程中做到思维严密,可以避免90%的错误。还有就是找个安静的地方开启你的编码世界。
2.OO设计心得
对于面向对象三大技术特性之间关系的理解,首先三大技术特性分别为封装性、继承性和多态性,上面描述了我对这三个特性单独的理解,接下来我浅谈它们之间的关系,封装有set 方法来设置成员变量,用 get 方法来访问成员变量。把对象的成员变量隐藏在里面,不显示细节。保证数据的安全性。封装的好处在于,把一个功能装到一个方法中去,外界不必关注内部的细节。继承是类与类之间的关系,子类可以继承父类的方法,如果子类中调用的某个方法,会优先在子类中查找是否存在此方法,找不到的情况下,才到父类当中查找。子类重写父类中的方法,会覆盖父类的方法,优先使用子类方法。对于多态,我理解是在继承的条件下,才能有多态,多态指的是父类指针指向子类对象。
单一职责原则及“开-闭”原则理解,单一职责为一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。在设计过程中一定要遵循单一职责,尽管这样类的个数会增加,但是复用性强。开闭原则为面向对象的可复用设计的第一块基石,是面向对象设计的目标。目前对于开闭原则了解不多,还是等后面了解透彻再来。
OO编程思维主要表现为面向对象的三大特性,五大原则。充分理解这写特性,原则,能更好的帮助我们理解OO编程。所谓面向对象,它基于万物皆对象这个哲学观点,将我们的程序模块化,对象化;把具体事物的特性属性,和具体方法作为一个类。
对于类设计来说,我觉得,设计一个类,主要从属性和方法进行,可将同一属性的事物归为一个类,或者将功能相同的事物放到一起作为一个类。
3.测试的理解与实践
一个合格的产品,当然需要经过不断的测试,有性能测试,压力测试等,对于编码质量也是同样道理,测试可以检测质量好坏,一个禁得起测试的程序,才是合格的。
使用Junit进行程序的测试可行,Junit要求在编写代码之前先写测试,这样能更好的限制程序的功能,编写也相对比较集中。
4.课程收获
在阶段的收获可以说的是很丰富的,理解了三大特性,了解了正则表达式的设计,进一步理解了OO的思想。同时也发现了自己的不足,编码不够认真,思维不够严密,导致测试通不过。
5.对课程的建议
我认为每次作业可以设计三道题目,高、中、低难度各一道,也可以适当的增加加分题。
课程方面的话,老师可以介绍一些java方法实现的实例;老师可以课前把上课要讲的代码发到群里面,我们跟着进行操作,总看着老师一个人在操作,总感觉容易走神。
面向对象(OO)第二阶段学习总结的更多相关文章
- 面向对象OO第5-7次作业总结
面向对象OO第5-7次作业总结 学习OO七周了,深切的感受到了这门课程的不友好.前三次作业能够算是勉强地通过了,但是从第五次作业开始就完全GG了.这三次作业,从多线程电梯开始,然后文件监控,然后到出租 ...
- 面向对象OO第1-3次作业总结
面向对象OO第1-3次作业总结 学习OO已经四周了,对OO以及JAVA的编程也算终于了解了一丢丢.现在做完了三次的编程作业,对前三次的作业做一次总结. 第一次作业 ------------------ ...
- PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
PHP面向对象三大特点学习 学习目标:充分理解抽象.封装.继承.多态 面象对向的三大特点:封装性.继承性.多态性 首先简单理解一下抽象:我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和 ...
- 面向对象OO第15次作业总结
面向对象OO第15次作业总结 1.论述测试与正确性论证的效果差异,比较其优缺点测试通过大量测试数据来覆盖测试代码,比较直观,优点在于知道测的是啥,特别直观,缺点在于很难覆盖所有情况.正确性论证从逻辑关 ...
- 面向对象OO第9-11次作业总结
面向对象OO第9-11次作业总结 1.关于规格化设计的调研程序规格说明:对程序所应满足的要求,以可验证的方式作出完全.精确陈述的文件.“规格说明”一词与其他工业产品的“规格说明书”有相似的含义.不过, ...
- 面向对象(OO)第一阶段学习总结
前言:对OO本阶段作业情况说明 本阶段一共完成三次作业,第一次主要是在主方法里面进行编程,也就是和之前C差不多,而随着学习的深入,慢慢了解到面向对象与面向过程的区别.作业的难度也在慢慢增大,后两次都用 ...
- PHP学习 Object Oriented 面向对象 OO
定义类class class_name [extends partclass_name]{public private protected var property_name = value;publ ...
- Python全栈开发记录_第九篇(面向对象(类)的学习)
有点时间没更新博客了,今天就开始学习类了,今天主要是面向对象(类),我们知道面向对象的三大特性,那就是封装,继承和多态.内容参考该博客https://www.cnblogs.com/wupeiqi/p ...
- 暑期java(面向对象设计)学习第一阶段总结
0.前言 本次博客针对的是暑假学习java(面向对象设计)的前三次作业的小结,第一次作业:7-1 对三个整数排序 7-2 对四个整数排序 7-3 对十个整数进行排序 7-4 对多个整数进行排序 第二次 ...
随机推荐
- Spring (六):整合Mybatis
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- JAVA debug 断点调试
更多调试参看 https://www.cnblogs.com/yjd_hycf_space/p/7483471.html 先编译好要调试的程序.1.设置断点 选定要设置断点的代码行,在行号的区域后面单 ...
- gcc/g++堆栈保护技术
最近学习内存分布,通过gdb调试发现一些问题,栈空间变量地址应该是从高往低分布的,但是调试发现地址虽然是从高往低分布,但是变量地址的顺序是乱的,请教同事他说可能是gcc/g++默认启用了堆栈保护, ...
- 合理使用CSS框架,加速UI设计进程
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/how-to-speed-up-your-d ...
- 01-启动jmeter目录功能
1.bin :存储了jmeter的可执行程序,如启动脚本.配置程序 docs: api扩展文档存放 lib: lib\ext 存储了jmeter的整合的功能(如.jar文件程序,和第三方 ...
- MAC 系统java开发环境搭建教程
1.在安装JDK之前,先查看下自己电脑是否已经安装了JDK. 打开终端,输入java -version并回车. 从上图中可以看出我们已安装了,JDK 8.如果这个版本是你需要的版本,可直接看4 ...
- 2019-07-31【机器学习】无监督学习之聚类 K-Means算法实例 (图像分割)
样本: 代码: import numpy as np import PIL.Image as image from sklearn.cluster import KMeans def loadData ...
- 今日写一篇散文 Textview settext 方法不能放入 int 参数 不然报错!
Textview settext 方法不能放入 int 参数 不然报错!
- Linux/UNIX 下终端复用利器 tmux
简介 tmux 是一个终端复用器类自由软件,功能类似 GNU Screen,但使用 BSD 许可发布.用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个 ...
- Three.js实现3D地图实例分享
本文主要给大家介绍了关于利用Three.js开发实现3D地图的实践过程,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习 ...