OOP(0)

面向对象编程(OOP)

1、OOP(Object Oriented Programming)概念

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

POP ——(Procedure Oriented Programming)面向过程编程
OOD——(面向对象的设计)
OOA——(面对兑现的分析)

1.1 面向过程POP(C语言)

面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

1.2 面向对象编程OOP

1、面对对象是模型化的(抽象化的),你只需要抽象出来一个类,这是一个封闭的盒子,这个盒子(类)里面有数据,也有获取数据或者解决问题的方法,需要什么功能直接用行了(Object.function() ),不用再去一行一行的去写代码,因为这个对象里面的方法会帮我们解决问题。
2、面对对象底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用,这就是面对对象。

1.3 OOP和POP的优缺点
1.3.1 OOP

1、优点:易维护,易复用、易扩展、由于面向对象有封装、继承、多态的特性,可以设计低耦合的系统,使系统更加灵活,易于扩展。
2、缺点:性能比面向过程差(封装越多的代码,效率越低)

1.3.2 POP

1、优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
2、缺点:不易维护、不易复用、不易扩展、使用繁琐。

2、面对对象的三大特性和五大原则

2.1 三大特性
2.1.1 封装

隐藏对象的属性和实现细节,仅仅对外提供访问方式,将变化隔离,便于使用,提高复用性和安全性

2.1.2 继承

提高代码的复用性,继承是多态的基础

2.1.3 多态

父类或接口定义的引用变量可以指向子类或则具体实现类的实例对象。提高程序的拓展性。
在这里插入图片描述

2.2 七大基本原则

1、软件设计原则:原则为我们提供指南,它告诉我们什么是对的,什么是错的,他不会告诉我们如何去解决问题。他仅仅给出一些准则,以便我们做出更好的设计,避免错误。
2、软件设计模式:模式是软件开发过程中总结得出的一些可重用的解决方案,他能解决一些实际的问题,一些常见的模式,比如工厂模式、单例模式等、
3、封装、继承、多态只是类的三大特性,再程序设计时并不是说用到了这三种特性就是面对对象,
真正的面向对象设计要满足下面五个原则。

2.2.1 单一职责原则SRP(Sngle Responsibility Principle)

原理 单一职责原则可以看作是低耦合、高内聚在面向对象原则上的引申,将功能定义为引起变化的原因,功能过多可能引起它变化的原因就越多,这将导致功能依赖,相互之间就产生影响,从而极大的损伤其内聚性和耦合度。因此不要为类实现过多的功能,以保证一个类只有一个引起它变化的原因。
类的功能要单一,不能包罗万象,跟杂货铺似的

2.2.2 开放封闭原则OCP(Open-Close Principle)

一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能是允许的,但是想要功能时不允许的

2.2.3 里氏替换原则LSP(the Liskov Substitution Principle)

子类可以替换父类,这种情况可以出现在任何父类出现的地方(可以理解为青出于蓝而胜于蓝,那么蓝能做的事情,青也能做)

2.2.4 依赖倒置原则DIP(the Dependency Inversion Principle)

高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体的实现,具体实现应该依赖于抽象(依赖和被依赖的关系不能导致)。
抽象高于(基于)具体,实现高于(基于)依赖。

2.2.5 接口分离原则ISP(the Interface Segregation Principle)

1、使用多个专门的接口,而不使用单一的总接口,即类不应该依赖那些它不需要的接口
2、设计时采用多个与客户类有关的接口,比采用一个通用的接口要好
3、一个复杂的接口有许多复杂的方法,那么实现它的那个类会重写那些无用的方法,这是不合理的。

2.2.6 合成复用原则(Composite Reuse Principle, CRP)

合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用功能的目的。简言之:复用时要尽量使用组合/聚合关系(关联关系),少用继承。

2.2.6 迪米特法则(Law of Demeter)

最少知识原则,一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,用这个实现低耦合高内聚,,过分的使用迪米特原则,会产生大量这样的中介和传递类,导致系统复杂度变大。所以在采用迪米特法则时要反复权衡,既做到结构清晰,又要高内聚低耦合

3、总结

1、抽象会使复杂的问题更加简单化
2、从以前面向过程的执行者,变为只需要发挥指令的指挥者
3、面向对象更符合人类的思维,面向对象是机器的思想

参考:连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值