面向对象
1.面向过程
即从你要做的每一步开始,从你想做什么开始,“从上到下”,
提出问题–>分析问题–>解决问题(按照流程走)
(1)优缺点
优点:
1.程序结构简单:顺序结构,循环结构,选择结构
2.可以无限的将大问题分解为一个个小问题.
3.从整体到局部,易于分析
4.容易理解
缺点:
1.在函数调用时容易导致数据的精度缺失
2.对数据没有很好的保密性
3.逻辑不够严密
4.无法实现代码的通用性.
2面向对象
1什么是对象?
万物皆对象.对于一个程序员来说,一切可以是对象
就是将一个物体抽象化,变成该类物体(相当于作诠释)
对象在程序中抽象为两个部分:
①描述对象的状态或者属性的数据(变量)
②描述对象的行为或者功能的方法(函数)
一个对象包含两个性质:①属性,②行为
~~~c++
#include<iostream>
using namespace std;
class Student
{
public:
private:
protected:
};
int main()
{
Student student1;这个student1就是一个对象
return 0;
}
~~~
2特点
封装,继承,多态。
3面向对象追求的是高内聚低耦合的一种状态
4用面向对象解决问题的思路
1、实现一个类,这个类里面分装好了,需要解决这个问题的数据和方法,通过类实例化一个对象,然后调用对象的功能,来完成这个问题。
2、换句话来说就是找对象来解决这个问题,如果没有合适的对象,那么就自己写一个。
5面向对象的特点
1、面向对象将数据和行为结合在一起,共同来表达一个数据。
2、在面向过程中,数据和行为是分开的,当问题比较复杂或涉及多开发,那么会导致拓展和维护很困难。而面向对象能解决这个问题,问题会被分解为一个个的对象,每一个对象有独立的数据和行为,修改或拓展某一个对象时并不会影响到其他对象。(即去寻找解决每一个问题的函数)
3、面向对象的封装性、继承及多态。 ①封装:封装就是将属性(数据)私有化,提供公有的方法(行为)访问私有属性。通过封装可以对对象属性进行存取限制,提高了程序的维护性。 ②继承可以在原来的对象基础上很快的产生新的对象,新的对象是一个全新的个体,但又有原来对象的特性。如同现实生活中的父子继承,儿子是一个新的个体,但又继承了父亲这个个体的特点,比如:外貌,性格。 ③多态是面向对象思想的核心。做到同一个接口,使用不同的实例就能去执行不同的操作。方便了程序的设计。
4、面向对象编程可以使代码维护方便、可扩展性好、支持代码重用技术。
3类和对象
1什么是类
具有相同属性和行为的对象的统称,可以看做是c语言结构体的升级.
2创建类的语法:
class 类名
{
属性
行为
}
#include<iostream>
using namespace std;
class Class//创建一个名叫Class的类名
{
//属性
public:
private:
protected:
//行为
public:
void fun();//可以在类里面声明函数
private:
void fun2()
{
cout<<我是一个函数<<endl;//直接在类里面定义函数
}
protected:
};
//再类外面定义函数(必须加类名限制)
void Class:;fun()
{
cout<<我是一个函数<<endl;
}
int main()
{
return 0;
}
3什么是对象
对象即是用类实例化得来
#include<iostream>
using namespace std;
class Class//创建一个名叫Class的类名
{
public:
private:
protected:
};
int main()
{
Class class;//实例化了一个对象
return 0;
}
4如何访问类的成员
#include<iostream>
using namespace std;
class Class
{
public:
char name[20];
private:
protected:
public:
void fun();
private:
void fun2()
{
cout << "我是一个函数 " << endl;
}
protected:
};
void Class::fun()
{
cout << "我是一个函数" << endl;
}
int main()
{
Class student;
student.name;//类名.方法
Class *p=new Class;//定义一个指针.
p->fun();
return 0;
}
4类成员的访问属性
1、访问属性修饰关键字
public 公有属性
protected 保护属性
private 私有属性
2、属性解释
公有属性:类外和类中都可以被直接访问,类外通过对象访问
保护属性:类中及派生类中可以被直接访问,类外需要通过对象调用接口访问
私有属性:只有在类中才能被访问,类外需要通过对象调用接口访问
3、类中如果有成员没有被访问属性修饰,默认是私有属性
4、访问属性的修饰范围:从当前访问属性关键字开始到下一个访问属性关键字或者类的结束这一个区间,都属于当前访问属性的修饰范围
5、类中访问属性关键字可以在类中的任意位置出现任意次数。
6、如果在类外想访问类中的私有或保护成员,需要在类中提供公有属性的接口,把私有或保护成员通过接口来进行操作。
#include<iostream>
using namespace std;
class Class
{
public:
private:
protected:
public:
int fun()
{
return score;
}
void setscore(int a)
{
score = a;
}
private:
int score;
protected:
};
int main()
{
Class a;
a.setscore(100);
return 0;
}
5注意事项
1在类外部只能访问公有的成员
2同一个类历不允许重名
3.class类默认为私有的
6结构体与类的区别
1、在C++中,结构体和类的区别在于,结构体是默认共有属性的类,类是默认私有属性的结构体。
2、在C中,结构体里面只能是定义变量,不能写函数,在C中是不能用类,但是在C++中是可以用结构体和类的。