面向对象
面向对象(C++,java,c# 不以函数为中心,以类和对象为中心) 类
面向过程(C 以函数为单位把代码组织起来) 函数
面向对象的语言比面向过程的语言开发效率更高
面向对象:
什么是对象(object)?把数据和行为有机的结合在一起。
对象=数据(数据类型)+行为(函数)
伪代码解释:
定义一个洗衣机:
功能上:洗衣服
外观:类型(滚筒,波轮)
品牌(小天鹅,海尔)
长宽高
型号
C语言描写:
struct 洗衣机
{
int nWidth;
int nHeight;
int nLength;
int nType;//类型
int nBland;//品牌
};
//与上述中文的描述相比 缺少功能(洗衣服)
void 洗衣服(洗衣机, 衣服) //定义一个洗衣服的函数
{
}
洗衣机 海尔洗衣机; //定义一个海尔洗衣机
洗衣服(海尔洗衣机, 脏衣服) //调用洗衣服函数
缺陷: 洗衣服和洗依机间的关联不够强烈(应该是洗衣机本身就具有洗衣服的功能)
假如定义一个 冰箱 海尔冰箱;
洗衣服(海尔冰箱, 脏衣服); //实际上冰箱不能洗衣服,如果能强转话算编译通过,但是实质上已经出现了错误
C++语言的描述:
struct 洗衣机
{
int nWidth;
int nHeight;
int nLength;
int nType;//类型
int nBland;//品牌
void 洗衣服(衣服);
};
洗衣机 海尔洗衣机;
海尔洗衣机 . 洗衣服(脏衣服); //这就表达出了 洗衣服是洗衣机的功能
//这时候定义一个 冰箱 海尔冰箱;
// 海尔冰箱 . 洗衣服(脏衣服);
//就不会通过,因为冰箱本身不具备洗衣服的功能,在写代码的时候就不会出现
//void 洗衣服(衣服); 的函数。
所以C++ 语言的描述就保证了函数的正常执行。
其中,对象为:海尔洗衣机,海尔冰箱。类为:洗衣机,冰箱(这种既包含了属性又包含了功能的这一种描述就是类。)