OO第二单元(5-8周)作业总结
0.前言 本次博客对java课程第一阶段作业进行总结汇报。
1.作业过程总结
1)三次作业主要涉及封装,继承,多态,三次作业由简入繁,每次的侧重点不同,但始终贯彻逐渐加深三者之间的关系的原则。除此之外还涉及正则表达式,ArrayList等其他内容。
2)三次作业,先是简单的类创立,用简洁的实例讲演抽象的封装,即将某事物的属性和行为包装到对象中,根据private,protected,public三种修饰符号对外部对象访问发i对象的属性和行为进行限制。
之后初步加入继承的概念,同样用简单的例子进行讲演,使子类与父类的关系更加直观化。
最后开始在程序设计中加入多态性的概念,强调多态性灵活、抽象、行为共享、代码共享的优势特点,通过实例化的例子表现多态性允许不同类的对象对同意信息做出回应,解决应用程序函数同名的问题。
通过现实生活中工程化的例子将三种特征结合在一起,同时表现三者的重要性以及三者同时共存的特征。
3)在完成作业过程中,最直观的问题就是在面对要求时,无法将抽象的理论知识实现到代码中,经常出现思路明确但实践代码时无从下手,在这种矛盾下陷入死循环。除此之外,便是对课上涉及的其他内容一知半解,对代码的编写带来了很大的阻碍。
解决方案便是通过网上自主学习。但诚然言之,目前尚未有明显成效。
4)由于课程的安排,外加网课教学的特殊性,以及环境限制,完成作业的时间集中在周末接近deadline,这导致没有充足的时间发现问题,解决问题,学习经验,代码的完成度不高,完成质量不高。
5)这段时间的学习让我充分认识到了理论与实践之间的差距,理论的可行性在面对实际问题经常出现或大或小的出入,仅学习理论知识却不进行平时化的练习的结果就是一知半解,无法解决问题。
2.OO设计心得
1)面向对象的三大特性是封装,继承,多态。
封装把客观事物封装为抽象的类,对类的数据和方法进行修饰,只让允许操作的类或对象进行操作,通过这种方式进行数据的保护,防止意外的改变和错误的使用。
继承简单的说就是让某个类型的类获得另一个类的属性和方法,是一种按级分类的概念。继承的类称为子类,被继承的叫做父类,子类可以使用父类的所有功能并可以在无需重新编写原本类的情况下对功能进行拓展。这一过程就是从一般到特殊的过程。
多提是指一个类的实例的相同方法在不同情况下有不同的表现形式,使具有不同内部结构的对象可以共享相同的接口,通过一个公共的类对不同的对象予以相同的调用。
2)单一职责原则很简明,就是指一个类的功能要单一,不能一下子包括很多功能,比卖你工作效率的降低。
开闭原则是指一个模块在拓展性的方面应该是开放的,但在更改性方面应该是封闭的。
3)面向对象的基本概念有对象,类,抽象,封装,继承,多态,接口,消息,组件,模式和复用等。目前学习主要为前四个。关于对象和类,总结地说,每一个对象都是某一个类的实例。类是程序运行前已经定义好的存在,对象是在运行之后动态创立的,类是对象生成的模板。抽象是对实际对象进行抽象化,进行主要特征的强调,次要特征的忽略。
4)类的设计要简单化,具体化,注意类与类的继承与调用,让类之间形成层次,让每个类只实现单一职责,避免类之间的重复与冲突,最大化提高效率。
3.测试的理解与实践
1)在编写代码的过程中基本无法做到考虑所有情况,不然我们平时用的程序也不会有那么多bug了。因而,我们需要在编写完成后进行测试,对格式、边界等进行细化。更值得我们注意的是,当我们出现问题后我们需要做的事。出现问题后遍历自己的代码,对错误进行更正,并对这一错误吸取经验教训,想想自己在写的时候为什么会出现问题,如果是对代码的熟悉程度不高就要加强练习与记忆,为将来代码的质量做好准备。更多时候出现的问题是逻辑问题,这是后我们首先要做的不是改代码,而是去举一反三,我之前的思路是是那么,如果运行下去会出现什么问题,我需要的解决思路是什么,为什么按照这种思路运行可以避免我的问题。代码的测试便是如此,一点一点夯实我们的编码,提高它的质量。
2)在eclipse工具下,利用junit功能可以对代码的模块与功能进行测试,可以进行单个测试,也可以进行批量测试。
4.课程收获
经过这一段时间的学习,我认识到了OO需要开放而灵活的思维,以及坚实的知识基础,任何投机取巧的行为都会收到负面影响,在学习过程中的懈怠,代价便是面对课题是的手足无措,焦头烂额。踏踏实实略显无聊的学习,换来的是面对问题的自信与顺畅。
5.对课程的建议
1)第三阶段的难度希望可以稍微降低一些或者是凸显分级,由浅入深,仅能保证不打压学生积极性,又能保证知识的连贯性与实践性。
2)课程讲解希望更加实用化,与实例结合。
浙公网安备 33010602011771号