面向过程和面向对象的区别
面向过程:面向过程强调的是完成既定目标需要完成哪些步骤,总结完步骤之后,把所有步骤走完也就达到了既定目标了,所以一个目标就是各个步骤的糅合的结果
面向对象:面向对象强调的是完成既定目标需要哪些条件(比如需要什么物品),之后逐步满足各个条件之后,最后再进行组装合并,达到既定目标。
综合以上的对比,我们可以发现面向对象是先把条件都凑齐了再进行组装,而面向过程总是在上一个步骤的基础上进行合并组装,一步一步完成,这两种的区别在于,当我们需要对目标进行调整时,面向对象中先完成的条件,可以用在需要调整的目标上,但是面向过程不支持这一个,需要重新走完整个步骤,所以面向对象最大的好处就是降低工作的重复率。
类的分析
1.类的特性
C: 程序是由函数组成,问题 --> 函数来解决
函数();
C++: 程序是由对象组成,问题 --> 对象来解决 (对象去调用函数)
对象.函数()
C++:
①设计类 ---> ②创建对象 ---> ③用对象解决问题
C++的四大特性:
①抽象:将很多类似事物,提取他们的共同特征,抽象成一个类
②封装:提供一个接口去使用,使用时不在乎实现过程
③继承:在现有类的基础上,派生出一个新的类
④多态:不同类对象对同一事物的不同形态
2.类的由来
①C struct
1.只支持数据成员
2.成员没有访问权限,即外部可以直接访问
3.使用成员运算符 . 来访问成员
4.使用函数指针模拟函数成员
5.使用 struct + 类型名 表示结构体类型
②C++ struct
1.支持数据成员,也支持函数成员
2.成员没有访问权限,即外部可以直接访问
3.使用成员运算符 . 来访问成员
4.直接使用 类型名 表示结构体类型 ,不需要加上struct
③C++ class
1.支持数据成员,也支持函数成员
2.成员有访问权限
public 公共的
protected 受保护的
private 私有的
默认为:private
3.使用成员运算符 . 来访问成员
4.直接使用 类型名 表示类类型
通常首字母大写
3.类的定义
class 类名
{
数据成员; // 属性:它有什么
函数成员; // 行为:它能做什么 (方法)
};
class 类名
{
private:
成员;
protected:
成员;
public:
成员;
};
两部分:属性 和 行为
类的名字需要通俗贴合主题。
属性:表示这个类有什么? --> 用数据来描述 --> 成员变量
行为:表示这个类能做什么?--> 用函数来实现 --> 成员函数
理论上,类中成员的权限可以随意指定
通常:数据成员私有化,函数成员公有化
通过公有的函数成员去间接的访问数据成员
类必须定义后,才能创建对象(定义一个变量),
在类外定义时需要加上 类名::
对于权限来说,外部访问才会考虑到权限,内部访问是一定可以访问的。
class Circle
{
private:
int r;
float area;
public:
int setradii(int a)
{
if (a <= 0)
return -1;
r = a;
return 0;
}
void getarea()
{
area = 3.1415*r*r;
}
void showared();
void showradii();
};
void Circle::showared()
{
std::cout << "area = " << area;
}
void Circle::showradii()
{
std::cout << "radii = " << r;
}
int main()
{
Circle SS;
SS.setradii(1);
SS.getarea();
SS.showared();
SS.showradii();
system("pause");
}