面向对象(OOP)的优点
1.OOP的优点
(1)实现数据与方法的封装,通过方法来操作改变数据,提高了数据访问的安全性;
(2)程序更加模块化,便于代码重用;
(3)由于程序是类的集合从而可以根据问题的相关性来组装程序,而面向过程程序设计则是函数的集合,零散不便于代码重用。
2.OOP的四个基本机制
• (1)抽象
– 对同一类对象的共同属性和行为进行概括,形成类。
– 先注意问题的本质及描述,其次是实现过程或细节。
– 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。
– 代码抽象:描述某类对象的共有的行为特征或具有的功能。
– 抽象的实现:类。
• (2)封装
– 将抽象出的数据、代码封装在一起,形成类。
– 目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。
– 实现封装:类声明中的{}
• (3)继承与派生
• 在已有类的基础上,进行扩展形成新的类
• 意义在于软件复用;
• 改造、扩展已有类形成新的类。
• (4)多态
– 多态:同一名称,不同的功能实现方式。
– 目的:达到行为标识统一,减少程序中标识符的个数。
– 实现:重载函数和虚函数
3.类的成员分类
(1)公有成员:提供了类的外部接口,在类中和类外可见,可以被程序中的任何代码访问;
(2)私有成员:只能在类中可见, 不能在类外或派生类中使用。即只能被类本身的成员函数及友元类的成员函数访问,其他类的成员函数,包括其派生类的成员函数都不能访问它们;
(3)保护成员:在类中和它的派生类中可见,即除了类本身的成员函数和说明为友元类的成员函数可以访问保护成员外,该类的派生类的成员也可以访问。
4.对象的赋值和复制
(1)对象的赋值
• 若一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值。即将一个对象的数据成员值一一复制给另一对象的对应成员。对象的成员函数不需要也无法对它们赋值。
(2)对象的复制
• 格式:对象名1=对象名2;(浅拷贝)
• 对象具有复制机制,用一个已有的对象可快速复制出多个完全相同的对象。
• 格式:类名 对象2(对象1);(深拷贝)
• 功能:用对象1复制对象2