面向过程 ——步骤化:是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象 ——行为化:面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为
**面向过程和面向对象的优缺点:**面向过程:
面向对象:
了解完面向对象和面向过程的基本概念之后,我们来看一下类和对象是什么?
**什么是类?**类,即类别:类是具有相似属性和行为的一组实例集合
**什么是对象?**对象,即类的实例:现实世界是由各种各样的事物组成,包括真实的事物和抽象的事物。例如,人、动物、汽车(真实的事物)和程序、直线(抽象的事物)等。
每一类事物都有自己特定的属性(如大小、形状、重量等)和行为(如生长、行走、转弯、运算等),人们通过研究事物的属性和行为而认识事物。在计算机科学中将这些现实世界中的事物称之为对象。
面向对象四大特征
我们先不说多么高深的东西,大家都学过C语言吧!在C++中,我们可以使用结构体表示类。
#include
using namespace std;
struct Stu //定义学生结构
{
int id;
int age;
char name[10];
};
int main()
{
Stu cPlus;//前面讲过在C++中可以省略,struct关键字
cPlus.id = 100;
cPlus.age = 5;
strcpy(cPlus.name, "C语言Plus");
cout << cPlus.id << " " << cPlus.age << " " << cPlus.name << endl;
return 0;
}
output:100 5 C语言Plus
这种写法大家都非常熟悉吧,不知道大家发现没有,如果我要输出学生的所有信息我就需要写一行输出代码,有的伙伴会说,我们可以把输出封装成函数,确实可以。
void showStuInfo(Stu s)
{
cout << s.id << " " << s.age << " " << s.name << endl;
}
但是这样做也有不方便之处,每次输出时,需要传入一个学生的参数,麻烦。这里我们可以使用面向对象的思想,把行为(输出信息)也封装到结构体中(在C语言中是不允许的)。
struct Stu //定义学生结构
{
int id;
int age;
char name[10];
void showStuInfo(Stu s)
{
cout << s.id << " " << s.age << " " << s.name << endl;
}
};
访问方法:cPlus.showStuInfo(cPlus);
访问成员函数的方法,和访问成员变量的方法一样,用成员运算符.即可,但是这里大家又会发现一个问题,既然是哦通过cPlus访问的输出函数,那为啥还要传一个cPlus进去,不是多此一举吗?
确实,如果在结构体内部函数中,访问自己的成员就不需要通过传参来使用了,可以直接使用,如:
struct Stu //定义学生结构
{
int id;
int age;
char name[10];
void showStuInfo()
{
cout << id << " " << age << " " << name << endl;
}
};
很简单吧,那么同样,对于初始化函数,咱们也可以把它写到结构体里面去
struct Stu //定义学生结构
{
int id;
int age;
char name[10];
void init(int sid = 0, int sage = 0, const char* sname = "NULL")
{
id = sid;
age = sage;
strcpy(name, sname);
}
void showStuInfo()
{
cout << id << " " << age << " " << name << endl;
}
};
int main()
{
Stu cPlus;//前面讲过在C++中可以省略,struct关键字
cPlus.init();
cPlus.showStuInfo();
return 0;
}
全部0条评论
快来发表一下你的评论吧 !