C语言面向过程与C++面向对象

C语言面向过程与C++面向对象

 

一、面向对象与面向过程的区别

面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

例如我们玩的五子棋,面向过程的设计思路就是分析问题的步骤:

1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。

如果是面向对象的设计思想来解决以上问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为

1、黑白双方,这两方的行为是一模一样的(可以下棋),

2、棋盘系统,负责绘制画面(棋盘),

3、规则系统,负责判定如犯规、输赢等。

第一类对象(玩家对象)负责接收用户的输入(如在哪个点下棋子),并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

如上我们可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

面向对象是高度实物抽象化、面向过程是自顶向下的编程

二、面向对象的特点

在了解其特点之前,咱们先谈谈对象,对象就是现实世界存在的任何事务都可以称之为对象(万物皆对象),有着自己独特的个性

C语言面向过程与C++面向对象_第1张图片


       属性用来描述具体某个对象的特征。比如小珂身高176CM,体重68KG,这里身高、体重都是属性。
面向对象的思想就是把一切都看成对象,而对象一般都由属性+方法组成!

属性属于对象静态的一面,用来形容对象的一些特性方法属于对象动态的一面,例如:小珂会跑,会说话,跑和说话这些行为就是对象的方法!所以为动态的一面, 我们把属性和方法称为这个对象的成员!

:具有同种属性的对象称为类,是个抽象的概念。比如“人”就是一类,如小珂、小甜、小钰这些人都是“人”这类对象,类就相当于一个模具,它定义了它所包含的全体对象的公共特征和功能,对象就是类的一个实例化,小珂就是人的一个实例化!我们在做程序的时候,经常要将一个变量实例化,就是这个原理!我们一般在做程序的时候一般都不用类名的,比如我们在叫小珂的时候,不会喊“人,你在干嘛呢!”而是说的是“小珂,你在干嘛呢!”

面向对象有三大特性,分别是封装性、继承性和多态性,具体后面课程都会讲到!

三、面向过程与面向对象的优缺点

面向过程

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

面向对象

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低

你可能感兴趣的:(c/c++,c语言,c++)