标题:类与对象
什么是面向对象**
面向对象(Object Oriented, OO)的程序设计的思路和人们日
常生活中处理问题的思路是相似的。在自然世界和社会生活
中,一个复杂的事物总是由许多部分组成的。
当人们生产汽车时,分别设计和制造发动机、底盘、车身和轮子,最
后把它们组装在一起。在组装时,各部分之间有一定的联系,以便协
调工作。
面向对象的程序设计的基本思路:使用现实世界的概念抽象
地思考问题从而自然地解决问题。
现实世界是有各种实体组成。如一个学校,有学生、教师、各种教学辅
助设施等等不同的实体组成
实体之间通过消息传递(教师学生布置作业即是发送了消息,)进行沟
通交流,相互协作完成某项任务。
对象
对象是人们要进行研究的任何事物,是现实世界中的一个实体。
例如学生就是一个对象。
任何对象都拥有一组数据和操作。
对象所拥有的数据称为对象的属性。
在现实世界中,对象都具有一定的行为,比如,学生要上课、
下课、写作业等等。
对象实现了数据和操作的封装。
类
类是对象的抽象。
相同特征的一组对象进行抽象形成了类。
比如,可以对不同的学生个体进行抽象,形成学生类。
本质上讲,类也是一种数据类型,是由程序员根据处理问题
的需要自己创建的一种数据类型,即用户自定义的数据类
型,而一个具体的对象可以视为属于这一数据类型的一个
变量。
任何一个对象都是通过类的实例化之后得到的。
数据封装
把数据和对数据的操作相结合,将它们视为一个单独的单元(称
为类)的行为称为封装。
在类中,被封装的数据不能被外界直接访问,只能被封装在同一
个类中的函数访问。这些函数提供了对象数据和程序之间的接口。
避免数据被程序直接访问的概念被称为信息隐藏。
封装的目的是增强安全性和简化编程,使用者不必了解具体的实
现细节,而只需要通过外部接口,以特定的访问权限,来使用类
的成员。
数据封装是类的最典型特点。
继承
继承是可以让某个类型的对象获得另一个类型的对象的属性
的一种技术。
继承的概念支持代码的重用性(reusability)
派生是C++中支持层次分类的一种机制,允许程序员在保持
原有类特性的基础上,进行更具体的说明。
实现:声明派生类。
多态性
不同的对象,对同一消息的不同响应。
如:加法操作,
如果操作的数据是数,它对两个数求和。
如果操作的数据是字符串,则它将连接两个字符串。
目的:达到行为标识统一,减少程序中标识符的个数。
实现:重载函数和虚函数。
消息传递
一个面向对象的程序由许多对象组成,对象之间通过收发
信息相互沟通,
消息就是请求执行某个过程,
消息的接收对象会调用一个函数(过程),以产生预期的结果。
面向对象程序设计
面向对象程序设计的核心任务是:
类的确定和对象的创建,
而不是将各个具体的对象逐一进行描述。
忽略各具体对象的非本质特征,抽象出本质特征与共
性,然后形成类的概念,对象是类的实例。
面向对象程序设计好处
1.写程序不再是从计算机的角度考虑问题了,而是站在
人类思维的角度。
2.程序的可扩展性要比其他不是面向对象的程序设计语言好。
3.能最大限度保护已有程序代码。
面向对象的方法
目的:
实现软件设计的产业化。
观点:
自然界是由实体(对象)所组成。
程序设计方法:
使用面向对象的观点来描述模仿并处理现实问题。
要求:
高度概括、分类、和抽象。
抽象
抽象是对具体对象(问题)进行概括,抽出这一
类对象的公共性质并加以描述的过程。
先注意问题的本质及描述,其次是实现过程或细节。
数据抽象:描述某类对象的属性或状态(对象相互区
别的物理量)。
代码抽象:描述某类对象的共有的行为特征或具有的
功能。
抽象的实现:通过类的声明。