编程的面向对象什么意思?

如题所述

面向对象三大基本特性,五大基本原则
透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.

三大特性是:封装,继承,多态
所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

五大基本原则
单一职责原则SRP(Single Responsibility Principle)
是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。

开放封闭原则OCP(Open-Close Principle)
一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,
那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

替换原则(the Liskov Substitution Principle LSP)
子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,
也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

依赖原则(the Dependency Inversion Principle DIP) 具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,
这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到
了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。
接口分离原则(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-12
1.
假如你去洗澡,你可能是这么考虑的,首先进入浴室,然后打开水龙头冲洗,

最后用浴巾擦干身子,等等一系列过程,叫做面向过程。你用面向过程解决了洗澡这个问题。

那么看面向对象是如何思考的,你是一个对象,浴室、水龙头浴巾等也是对象,

你首先发送消息给浴室,传递力的参数给浴室的门,OK,门打开了,你然后再传递消息给水龙头,

水龙头响应消息,放水,最后你发送消息给浴巾,浴巾调用吸水的方法帮你擦干了身子。OK,

你用面向对象的思想完成了洗澡这个问题。

2.
在一些简单的逻辑上,确实是面向过程更加简单一点,但是当你面对是一系列复杂的模块和功能的时候,

各司其职的面向对象思想变会将很多复杂的逻辑简单化。

举一个这样的例子,想象这样一个场景,你的面前有无数根纠缠在一起的管子,这些管子的用途各不一

样,面向过程的思想,就是你需要亲自的把管子的头和尾搞清楚,以对应上相应的功能;而面向对象的

思想,则是让这些管子自己从管子的头部输入,尾部输出,而不需要编程者自己了解所有的管子的作用.

如果是只有一个管子的话,面向过程是很简单的,面向对象则需要做很多前期处理才能达到目的。

所以面向对象和面向过程其实没有简单的优劣之分,只是适用场合的区别。

3.
来让我用最通俗的话来告诉你!为什么要发明面向对象编程?

原因很简单,就是为了适应变化,我们的编程祖先们曾经在开发大型项目时,在改需求的时候自杀了好几批人

你拿着自己开发游戏,每做一步就想,这里假如产生了变化会怎样,这里假如要添加个功能会不会很麻烦?

为了解决这些问题,所以就有了面向对象思想:封装,继承,多态;

其实用了那么多抽象的东西,为的就是解决一个问题,项目要能做到轻松变化。今天三角形,明天正方形,后天,菱形
相似回答