面向对象设计的初步认识和理解
前言
本期作业主要要求为:理解和掌握并学会运用正则表达式(水文的数据校验,一元多项式求导),继承与多态性的运用(图形的继承与应用),动态数组List,ArrayLsit等运用(图形卡片组排序,添加,修改);
作业过程总结
总结三次作业之间的知识迭代关系:
从这三次作业来看,最基本的就是学会了解并掌握利用好类与类之间的关系,比如水文数据校验题,要求实现对水文数据的记录,统计,和保存,这就需要用到实体类和业务类之间的联系,它们有引用和依赖的关系,一元多项式求导同样也有着类似的关系,而图形之间的关系又与此不同,他们是继承与迭代的关系;
通过了解类与类之间的关系后,进一步的任务就是学会利用这些关系来解决一个个实际问题,实现一个个独立的类不是什么难事,但要将它们联系起来,就需要一些用于过渡和提示的类,这时,接口便应运而生,一些类通过实现某个或某些接口进而实现一些具有特殊关系的方法,这样做不仅降低了类与类之间的偶合性,又提高了整个程序的内聚性,进而提高的了一部分代码的可复用性,同时也提高了整个程序的效率;
如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性:
通常来说,一个能够实现长久稳定的程序容易得到人们的认可,因为不稳定的程序甚至经常出bug的程序往往会导致各种问题,就像外卖的包装盒一样,无论放到哪个地方,不管是嘈杂的街道,颠簸的车上,甚至是尘土飞扬的工地,你都能享受到外卖盒里的美食,这就是封装性带来的优势,然而要想实现一个程序的长久稳定,必不可少的就是要有一个良好的封装性,在上一次文章中我提到的了因为程序的封装性不好而导致的悲剧,那么这次我结合作业来说说如何提高程序的封装性
首先,你会发现,不论是水文数据校验设计类,还是一元多项式求导类,还是图形继承类,他们都是封装在包里的,把类和方法保存在整合包里体现了封装性的一个特点,那就是有这着良好的内聚性,其次,就是类中成员变量的私有性,这些变量封装在类内,无法直接对其进行访问,一是为了保护好类内的成员变量,而来也是为了更好的私有性和封装性,一个个类被封装在包里,当程序想要调用这些类时,必须先导入这些类对应的包,才可以使用这些类,极其方法,这就体现了其封装性
说完了封装性,我再来谈谈继承与多态,我简单解释下什么是继承,继承指的是一个对象通过继承来保留和传承另一个类的所有变量和方法,继承以后,这两个类就构成了父类与子类的关系,子类保留父类的所有变量和方法,这就是继承,而多态又是从继承而来,指的是,不同的类在接收到同一个指令,执行不同的行为或方法,这就是多态。
那要如何实现继承和多态呢?我举个作业中例子,比如“圆”继承自“图形”,指圆保留了所有“图形”中的变量和方法,图形中可以实现的方法,圆一定也能实现,这就实现了继承,而多态就要用到另一个方法——覆写方法,具体是这么实现的:当一个类继承自另一个类时,方法的签名是一致时,这时通过利用“@Override”来修饰某个要覆写的方法,程序就会识别和认定这是一个覆写方法,这就体现了多态。
作业中遇到的问题与解决方案
从这几次作业来看,涉及到比较多的内容就是如何利用好正则表达式,还有理解类与类之间的继承关系,为了解决这些问题,查阅资料是必不可少的,正则表达式刚刚开始不好理解,难以上手,但当你学会利用好它,它便是一个十分强大的工具,正则表达式是遵循一定规律的,了解和掌握好其中的规律便可以很好的利用它,而类的继承也同样遵循一定规律,当一个类与另一个是包含关系,就可以考虑它们之间是否可以继承,总的来说,掌握其中的可以遵循的规律是至关重要的。
OO设计心得
就目前来看,设计好一个类,就得实现类中的一个个方法,但如果这个类是一个接口或者是抽象类的话,它只有抽象方法,因此就要落实到那些具体实现的类中的方法,为了实现类中的方法,你得先了解整个程序是如何运作的,程序不是一次编程就可以做到完美,这就需要不断的试错,但不管怎样,任务拿到手上,要按着流程走,首先进行需求分析,这是很重要的,它可以减少很多不必要的错误,很多想当然的错误都是没有认清任务需求而导致的错误
接着就是提出一个总体的设计方案,这里就会产生很多分歧,因为解决方案不是唯一的,但它有好有坏,一个不好的解决方案可能会绕很多的弯路还不能把问题解决,最后一步,就是编写代码,这一步也很关键,需要很好的耐心和细心才可以高效的编写代码,因为这样也同样可以减少很多不必要的错误。
这里我分享一个我个人的编码习惯,如果是要求按照类图来编写代码,我一般会先从一个抽象类,或者一个接口开始,因为很多类往往是从这个类开始,进行拓展和延伸得到的,而抽象类和接口往往包含的内容比较清楚,我从这些类入手,可以有一个比较清晰的思路,当你把整个程序的框架完成了,剩下的就是实现一个个类中的方法了,这就好像造房子一样,先从几根重要的支柱(抽象类和接口)开始,渐渐形成一个框架,然后再去完整房间的装修和家具的摆放(类中的方法实现)。当然这仅代表我的个人看法,并不代表这种方法一定是好的,我认为是比较适合我的。
总结
通过这一阶段的学习,我更进一步的理解和掌握了面向对象设计的思想,从我个人角度出发,这种编程思想有比较独特的思维方式,比较贴切和符合生活逻辑,这应该也是这种思维编写出来的程序的实用性很高,贴切大众的一个重要原因吧,与面向程序的思想相比,它更容易被大众接受,未来的对这方面的需求还是很高的,总的来说这种思想还在不断发展,一步步走向成熟吧。
浙公网安备 33010602011771号