C-OOP

如何用C语言编写面向对象的程序

一般来说,我们认为C语言是一个面向过程的编程语言,而面向过程的开发思想面对复杂关系时,是不太好处理的,那么用C语言编写面向对象的程序是可行的吗。答案是肯定的。语言本身只是工具,如何使用工具是编程思想。本篇就粗略地思考一下如何使用C语言开发面向对象的程序。

什么是面向过程

面向过程(Process Oriented)的思想,就是更关注问题的解决步骤,将一个问题抽象成一个过程,按照结果问题的过程中的各个步骤,用函数将问题解决。

什么是面向对象

面向对象(Object Oriented),先要解释什么是对象。

对象

对象可以理解为一个物体,面向对象的方法就是要将所有问题/实物对象化,而抽象出来的对象 = 属性 + 方法

属性

对象的特征即为属性,可以理解为对象的一些静态特征。

方法

对象可以做什么,有什么能力,就是方法,可以理解为对象的一些动态特征。

面向对象的核心思想

面向对象的核心思想,也是面向对象的三大特征,即封装、继承和多态。

封装

利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外的接口使其与外部发生联系。用户无需关心对象内部的细节,但可以通过对象对外提供的接口来访问该对象。

简单来说,就是将数据抽象化,包装在数据结构内,对外只提供访问接口,不暴露实现的细节。

其优点是:减少耦合,提高可重用性,隐藏细节。

继承

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。子类是父类的一个子集。

多态

多态指在程序设计中存在同名不同方法的存在,主要通过子类对父类的覆盖来实现多态,设计原则之一就是要依赖于抽象,而不依赖于具体,增加灵活性。多态就是为了体现这一原则。