阅读(378) (1)

面向对象

2018-05-03 13:59:17 更新

笔者能力有限,总结有误的地方,请读者协作更正。

1.OOP思想

面向对象编程思想

面向过程的的编程思想:致上而下,逐步细化。

例如:考试 报名-->缴费-->打印准考证-->考试-->查询分数

  • 面向对象

万物皆对象,按照现实世界的逻辑去处理问题。

比如:发明汽车和组装汽车

发明汽车,轮子需要我们自己设计,发动机需要我们自己设计,图纸需要我们自己设计,所有的零件都需要我们自己设计。

组装汽车,需要什么型号的轮子买什么型号的轮子,需要什么品牌的发动机,买什么品牌的发动机,需要什么直接去买,因为一个一零部件就是一个个封装好的对象,我们直接调用就可。

面向对象有四个基本特征:抽象,封装、继承、多态,这几个特征实现了面向对象程序设计的模块化开发,提纲了模块化对象的重用性。

1)抽象

抽象类和抽象方法:

  • 在java中,类、方法、接口可以定义为抽象,使用abstract修饰, 变量不可以抽象。
  • 抽象方法只能定义在抽象类中,抽象方法只定义方法声明,并没有定义具体实现,在抽象类中定义抽象抽象方法的目的,仅仅是为了让该类不能被实现化。
  • 抽象类不可以被实例化,只有通过子类继承之后重写父类中的方法,才可以被实例化。
  • 抽象类中有构造函数,作用是用于给子类对象进行初始化,抽象类中可以定义普通方法。
  • 抽象关键字abstract不能与final,private,static共存。

接口:

用interface定义,接口中包含全局变量,抽象方法。

接口不可以实例化,需要子类去实现,子类才可以实例化,否则该子类还是抽象类。

接口中的访问修饰符,必须是有public;

接口可以多实现,使用接口的目的是方便扩展功能,或者解耦等。

2)封装

封装就是隐藏对象的属性和具体实现细节,对外提供访问的权限;提供对象的重用性,安全性。

访问权限修饰符:public,protected,默认的,private

3)多态

多态就是事物在不同环境下的具体体现,java中的多态体现在 继承 和 接口实现 上。

多态要求有关系,要么是继承关系,要么是实现关系。

通常会有覆盖方法的操作,子类继承父类重写其中的方法,或者子类实现接口,实现其中的方法。

多态的使用常常涉及到向上造型,子类对象调用父类中的方法。

多态的好处:提高了程序的扩展性。

2.面向切面思想

AOP是OOP的补充,软件设计的时候存在许多横切关注点,比如:日志记录,安全监控,异常处理等。它们的代码和具体业务的代码混合在一起,破坏了OOP的“单一设计”原则,重用性大大降低。

传统的OOP是通过代理模式解决,让整个系统增加了一个层次的划分,较为复杂,代码过于厚重。AOP技术由此产生。

它和OOP在本质上存在区别。

1)AOP的作用:

将日志记录,性能统计,事物处理,异常处理,安全控制等横切关注点,非常重要又和主业务逻辑关系不大的部分横切出来,独立成模块,在主业务逻辑中横向调用,作用是降低耦合,易维护,扩展等。

2)AOP的基本概念:

类,对象,封装,继承,多态是描述OOP的基本术语;

连接点(JointPoint),切入点(PointCut),通知(Advice),方面(Aspect),织入(Weaving),目标(Target),引入(Introduction)是描述AOP的基本术语。

例如,图:

软件设计划分为很多主业务逻辑模块,这些主业务逻辑都需要进行日志处理,安全处理,事物处理等,将日志,事物,安全这些横切关注点抽取处理,单独封装成对象,在主业务逻辑中织入横切关注点对象,降低代码的耦合性,提高重用性。