面向过程:是一种以事件为中心的编程思想。就是分析出解决问题的步骤,然后用方法(函数)去实现这些步骤,使用的时候按照步骤顺序依次调用。
面向对象:是一种线性的思维。与面向过程是相辅相成的。面向对象就是将构成问题的事务分解抽象成各个对象。建立对象的目的不是为了完成某个步骤,而是叙述某个事务在整个解决问题的步骤中的行为。
在软件开发过程中,宏观上来说,用面向对象来把握事务间复杂的关系。微观上,仍然使用面向过程。
面向过程的思维方式是分析综合。面向兑现的思维方式是构造。
总的来说:
面向对象是将事物高度抽象化。
面向过程是一种自顶向下的编程
面向对象必须先建立抽象模型,之后直接使用模型就行了。
面向过程
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低
面向的对象的三大特征和五大原则:
三大特征:
一、封装
所谓封装,就是将客观事物封装成抽象的类,并且类可以把数据和方法让可信的类或者对象进行操作,对不可信的类或者对象进行隐藏。类就是封装数据和操作这些数据代码的逻辑实体。在一个类的内部,某些属性和方法是私有的,不能被外界所访问。通过这种方式,对象对内部数据进行了不同级别的访问控制,就避免了程序中的无关部分的意外改变或错误改变了对象的私有部分。
二、继承
继承有这样一种能力,就是能使用现有的类的所有功能,并无须重新编写原来的这些类的基础上对这些功能进行扩展。通过继承创建的新类称为子类或派生类,被继承的称为基类。继承有两种,一种是实现继承,另外一种是接口继承。实现继承可以直接使用基类的属性和方法而无需额外编码,接口继承是指使用属性和方法的名称,但是子必须提供实现的能力。
三、多态
所谓多态就是对一个实例的相同方法在不同的情形下有不同的表现形式。多态机制使得不同内部结构的对象可以共享相同的外部接口,这就意味着,虽然不同的类的内部操作不同,但可以通过一个公共的类,它们可以通过相同的方式予以调用。
五大原则:
一、单一职责原则
指一个类的功能要单一,不能包罗万象。
二、替换原则
指子类可以替换父类并出现在父类能出现的任何地方。
三、开放封闭原则
一个模块在更改性方面应该是封闭的,在扩展性方面应该是开放的。
四、依赖倒置原则
就是要依赖于抽象,不要依赖于具体。简单的说,就是要对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块之间的耦合。
五、接口隔离原则
不同的模块要通过抽象接口隔离开,而不是通过具体的类强耦合。