C++ (第二天下午---面向对象之类与对象)

一、面向过程与面向对象

1、面向过程
面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。
在这里插入图片描述
举个例子,下五子棋,面向过程的设计思路是首先分析解决这个问题的步骤:

开始游戏, 
黑子先走, 
绘制画面, 
判断输赢, 
轮到白子, 
绘制画面, 
判断输赢, 
返回步骤2, 
输出最后结果

可见,面向过程始终关注的是怎么一步一步地判断棋局输赢的,通过控制代码,从而实现函数的顺序执行。

2、面向对象(OOP)
在日常生活或编程中,简单的问题可以用面向过程的思路来解决,直接有效,但是当问题的规模变得更大时,用面向过程的思想是远远不够的。所以慢慢就出现了面向对象的编程思想。世界上有很多人和事物,每一个都可以看做一个对象,而每个对象都有自己的属性和行为,对象与对象之间通过方法来交互。面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个对象在整个解决问题的步骤中的属性和行为。
在这里插入图片描述
在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个对象:

1)黑白双方,这两方的行为是一样的。
(2)棋盘系统,负责绘制画面
(3)规则系统,负责判定犯规、输赢等。

然后赋予每个对象一些属性和行为:

第一类对象(黑白双方)负责接受用户输入,并告知
第二类对象(棋盘系统)棋子布局的变化,棋盘系统接收到了棋子的变化,并负责在屏幕上面显示出这种变化,同时利用
第三类对象(规则系统)来对棋局进行判定。

可以看出,面向对象是以功能来划分问题,而不是以步骤解决。比如绘制画面这个行为,在面向过程中是分散在了多个步骤中的,可能会出现不同的绘制版本,所以要考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘系统这个对象中出现,从而保证了绘图的统一。

练习1:使用面向过程的C语言实现面向对象的方法

#include <iostream>

using namespace std;

//C结构体
typedef struct {
   
   
    //属性
    char name[256];
    int age;
    int height;
    //行为 --函数指针
    void (*eat)(void);
    void (*playGame)(void);
}GirlFriend_t;

void eat(void)
{
   
   
    cout<<"eat"<<endl;
}
void playGame(void)
{
   
   
     cout<<"playGame"<<endl;
}


int main()
{
   
   
    //结构体的方式
    GirlFriend_t mya ={
   
   "如花"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值